summaryrefslogtreecommitdiffstats
path: root/xpa/xpaaccess.c
diff options
context:
space:
mode:
Diffstat (limited to 'xpa/xpaaccess.c')
-rw-r--r--xpa/xpaaccess.c212
1 files changed, 0 insertions, 212 deletions
diff --git a/xpa/xpaaccess.c b/xpa/xpaaccess.c
deleted file mode 100644
index 81643ac..0000000
--- a/xpa/xpaaccess.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (c) 1999-2003 Smithsonian Astrophysical Observatory
- */
-
-#include <xpap.h>
-
-#define MAX_XPAS 10000
-
-extern char *optarg;
-extern int optind;
-
-#ifdef ANSI_FUNC
-void
-usage (char *s)
-#else
-void usage(s)
- char *s;
-#endif
-{
- fprintf(stderr, "\n");
- fprintf(stderr, "usage:\n");
- fprintf(stderr, " %s [-c] [-h] [-i nsinet] [-m method] [-n] [-t sval,lval] [-u users] [-v|-V] <template> [type]\n", s);
- fprintf(stderr, "\n");
- fprintf(stderr, "switches:\n");
- fprintf(stderr, "\t-c\tcontact each access point individually to see if it is available\n");
- fprintf(stderr, "\t-h\tprint this message\n");
- fprintf(stderr, "\t-i\toverride XPA_NSINET environment variable\n");
- fprintf(stderr, "\t-m\toverride XPA_METHOD environment variable\n");
- fprintf(stderr, "\t-n\treturn number of matches instead of \"yes\" or \"no\"\n");
- fprintf(stderr, "\t-t \toverride XPA_[SHORT,LONG]_TIMEOUT environment variables\n");
- fprintf(stderr, "\t-u \toverride XPA_NSUSERS environment variable\n");
- fprintf(stderr, "\t-v\tprint info about successful access points\n");
- fprintf(stderr, "\t-V\tprint info and errors about all access points\n");
- fprintf(stderr, "\t--version display version and exit\n");
- fprintf(stderr, "\n");
- fprintf(stderr, "xpaaccess returns \"yes\" if there are existing XPA access points that match\n");
- fprintf(stderr, "the template (and optional access type: g,i,s), and returns \"no\" otherwise.\n");
- fprintf(stderr, "If -n is specified, the number of matches is returned.\n");
- fprintf(stderr, "Templates are of the form [class:]name. Wildcards *,?,[] are accepted.\n");
- fprintf(stderr, "\n");
- fprintf(stderr, "examples:\n");
- fprintf(stderr, "\tcsh> if( `xpaaccess ds9` == \"yes\") then ...\n" );
- fprintf(stderr, "\tcsh> set got=`xpaaccess -n ds9 g`\n");
- fprintf(stderr, "\n(version: %s)\n", XPA_VERSION);
- exit(0);
-}
-
-/* catch error from pre 2.1 server -- if we find this error, we know the
- access point is available */
-#define OLD_SERVER(s) strstr(s, "XPA$ERROR invalid xpa command in initialization string")
-
-#ifdef ANSI_FUNC
-int
-main (int argc, char **argv)
-#else
-int
-main(argc, argv)
- int argc;
- char **argv;
-#endif
-{
- int i;
- int c;
- int got;
- int n=0;
- int donum=0;
- int verbosity=0;
- int contact=0;
- char cmd[SZ_LINE];
- char mode[SZ_LINE];
- char *type=NULL;
- char *xtmpl=NULL;
- char **rclasses;
- char **rnames;
- char **rmethods;
- char **rinfos;
- char *names[MAX_XPAS];
- char *errs[MAX_XPAS];
- XPA xpa=NULL;
-
- /* display version and exit, if necessary */
- if( (argc == 2) && !strcmp(argv[1], "--version") ){
- fprintf(stderr, "%s\n", XPA_VERSION);
- exit(0);
- }
-
- /* start with no mode flag */
- *mode = '\0';
-
- /* we want the args in the same order in which they arrived, and
- gnu getopt sometimes changes things without this */
- putenv("POSIXLY_CORRECT=true");
-
- /* process switch arguments */
- while ((c = getopt(argc, argv, "chi:m:nt:u:vVwW")) != -1){
- switch(c){
- case 'c':
- contact=1;
- break;
- case 'h':
- usage(argv[0]);
- case 'i':
- snprintf(cmd, SZ_LINE, "XPA_NSINET=%s", optarg);
- putenv(xstrdup(cmd));
- break;
- case 'm':
- snprintf(cmd, SZ_LINE, "XPA_METHOD=%s", optarg);
- putenv(xstrdup(cmd));
- break;
- case 'n':
- donum=1;
- break;
- case 't':
- {
- int xip=0;
- char xbuf[SZ_LINE];
- newdtable(",;");
- if( word(optarg, xbuf, &xip) && *xbuf && (*xbuf != '*') ){
- snprintf(cmd, SZ_LINE, "XPA_SHORT_TIMEOUT=%s", xbuf);
- putenv(xstrdup(cmd));
- }
- if( word(optarg, xbuf, &xip) && *xbuf && (*xbuf != '*') ){
- snprintf(cmd, SZ_LINE, "XPA_LONG_TIMEOUT=%s", xbuf);
- putenv(xstrdup(cmd));
- }
- freedtable();
- }
- break;
- case 'u':
- snprintf(cmd, SZ_LINE, "XPA_NSUSERS=%s", optarg);
- putenv(xstrdup(cmd));
- break;
- case 'v':
- verbosity=1;
- break;
- case 'V':
- verbosity=2;
- break;
- /* for backward compatibility with 1.0 */
- case 'w':
- case 'W':
- break;
- }
- }
-
- /* we must have a template */
- if( optind >= argc ){
- usage(argv[0]);
- }
- else{
- xtmpl = argv[optind];
- optind++;
- if( optind < argc ){
- type = argv[optind];
- }
- }
-
- /* if we need to contact each server ... */
- if( contact ){
- got = XPAAccess(xpa, xtmpl, type, mode, names, errs, MAX_XPAS);
- for(i=0; i<got; i++){
- if( !errs[i] || OLD_SERVER(errs[i]) ){
- if( verbosity ) fprintf(stdout, "%s\n", names[i]);
- n++;
- }
- else{
- if( verbosity >= 2 ) fprintf(stdout, "%s", errs[i]);
- }
- if( errs[i] ) xfree(errs[i]);
- if( names[i] ) xfree(names[i]);
- }
- }
- /* only contact name server */
- else{
- n = XPANSLookup(xpa, xtmpl, type, &rclasses, &rnames, &rmethods, &rinfos);
- /* free up the space */
- for(i=0; i<n; i++){
- if( verbosity ){
- fprintf(stdout, "%s", rmethods[i]);
- if( strcmp(rinfos[i], XPA_DEF_CLIENT_INFO) )
- fprintf(stdout, " %s", rinfos[i]);
- fprintf(stdout, "\n");
- }
- /* done with these strings */
- xfree(rclasses[i]);
- xfree(rnames[i]);
- xfree(rmethods[i]);
- xfree(rinfos[i]);
- }
- /* free up arrays returned by name server */
- if( n > 0 ){
- xfree(rclasses);
- xfree(rnames);
- xfree(rmethods);
- xfree(rinfos);
- }
- }
-
- /* print out number */
- if( !verbosity && donum ){
- fprintf(stdout, "%d\n", n);
- }
- /* print out yes/no */
- else if( !verbosity && !donum ){
- if( n > 0 )
- fprintf(stdout, "yes\n");
- else
- fprintf(stdout, "no\n");
- }
- fflush(stdout);
- return(n);
-}