summaryrefslogtreecommitdiff
path: root/clients/znol
diff options
context:
space:
mode:
authorGravatar John Kohl <jtkohl@mit.edu>1989-10-25 10:17:51 +0000
committerGravatar John Kohl <jtkohl@mit.edu>1989-10-25 10:17:51 +0000
commit5bce9458c10cadd13b5cbc36f199f9539abe31db (patch)
treeafe851eec49e57969e983024391e2c10d015ffd9 /clients/znol
parentf664029e1f7b78ef36eb3356b3953e56dd1a2c95 (diff)
changes for -u option
update usage message, and print it in more cases
Diffstat (limited to 'clients/znol')
-rw-r--r--clients/znol/znol.c47
1 files changed, 34 insertions, 13 deletions
diff --git a/clients/znol/znol.c b/clients/znol/znol.c
index f8f0638..826add2 100644
--- a/clients/znol/znol.c
+++ b/clients/znol/znol.c
@@ -38,7 +38,7 @@ main(argc,argv)
FILE *fp;
struct passwd *pwd;
char anyonename[BUFSIZ],name[BUFSIZ],cleanname[BUFSIZ],*envptr;
- int onoff = ON,quiet = 0,justlist = 0;
+ int onoff = ON,quiet = 0,justlist = 0,useronly = 0, filenamed = 0;
int retval,arg,ind,one,numlocs,i;
short wgport;
@@ -80,27 +80,42 @@ main(argc,argv)
if (!strcmp(argv[arg],"-f")) {
if (arg == argc-1) {
fprintf(stderr,"No file name specified\n");
- exit (1);
+ goto usage;
}
(void) strcpy(anyonename,argv[++arg]);
+ filenamed = 1;
continue;
}
- printf("Usage: %s [on|off] [-q] [-l] [-f file]\n",argv[0]);
+ if (!strcmp(argv[arg],"-u")) {
+ if (arg == argc-1) {
+ fprintf(stderr,"No username specified\n");
+ goto usage;
+ }
+ (void) strcpy(cleanname,argv[++arg]);
+ useronly = 1;
+ continue;
+ }
+ usage:
+ fprintf(stderr,"Usage: %s [on|off] [-q | -l] [-f file | -u username]\n", argv[0]);
exit (1);
}
if (quiet && justlist) {
fprintf(stderr,"-q and -l cannot both be used\n");
- exit (1);
+ goto usage;
+ }
+ if (useronly && filenamed) {
+ fprintf(stderr,"-u and -f cannot both be used\n");
+ goto usage;
}
-
if (!justlist)
if ((wgport = ZGetWGPort()) == -1) {
com_err(argv[0],errno,"while getting WindowGram port");
exit(1);
}
- if (!(fp = fopen(anyonename,"r"))) {
+
+ if (!useronly && !(fp = fopen(anyonename,"r"))) {
fprintf(stderr,"Can't open %s for input\n",anyonename);
exit (1);
}
@@ -108,16 +123,20 @@ main(argc,argv)
ind = 0;
for (;;) {
- if (!fgets(cleanname,sizeof cleanname,fp))
+ if (!useronly) {
+ if (!fgets(cleanname,sizeof cleanname,fp))
break;
- if (cleanname[0] == '#') /* ignore comment lines */
+ if (cleanname[0] == '#') /* ignore comment lines */
continue;
- /* Get rid of old-style nol entries, just in case */
- cleanname[strlen(cleanname)-1] = '\0';
- while (cleanname[strlen(cleanname)-1] == ' ')
+ /* Get rid of old-style nol entries, just in case */
+ cleanname[strlen(cleanname)-1] = '\0';
+ while (cleanname[strlen(cleanname)-1] == ' ')
cleanname[strlen(cleanname)-1] = '\0';
- if (*cleanname == '@' || !*cleanname)
+ if (*cleanname == '@' || !*cleanname)
continue;
+ } else if (ind)
+ break; /* only do the one name */
+
subs[ind].class = LOGIN_CLASS;
(void) strcpy(name,cleanname);
if (!index(name,'@')) {
@@ -184,6 +203,8 @@ main(argc,argv)
exit(1);
}
- (void) fclose(fp); /* file is open read-only,
+ if (!useronly)
+ (void) fclose(fp); /* file is open read-only,
ignore errs */
+ exit(0);
}