diff options
author | Paul Traina <pst@FreeBSD.org> | 1994-09-08 19:27:06 +0000 |
---|---|---|
committer | Paul Traina <pst@FreeBSD.org> | 1994-09-08 19:27:06 +0000 |
commit | 59be608802e2ea1002b644bd81cff816aa881b68 (patch) | |
tree | e17290c5908d1bcd154a8771091f7aa8d048ec70 /usr.bin/finger/finger.c | |
parent | f844bfba3c42182b172af3f44e86d1cc20ba206a (diff) |
Add code to pull options out of FINGER environment variable if present.
Yes, has same stupid bug as more(1), options must be specified as one
argument.
Submitted by: pst
Notes
Notes:
svn path=/head/; revision=2589
Diffstat (limited to 'usr.bin/finger/finger.c')
-rw-r--r-- | usr.bin/finger/finger.c | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/usr.bin/finger/finger.c b/usr.bin/finger/finger.c index aaef07bc9872..2bf070435fb2 100644 --- a/usr.bin/finger/finger.c +++ b/usr.bin/finger/finger.c @@ -88,14 +88,14 @@ char tbuf[1024]; static void loginlist __P((void)); static void userlist __P((int, char **)); -main(argc, argv) +int +option(argc, argv) int argc; char **argv; { int ch; - /* delete this for sun behavior */ - oflag = 1; /* default to old behavior for now */ + optind = 1; /* reset getopt */ while ((ch = getopt(argc, argv, "lmpsho")) != EOF) switch(ch) { @@ -123,8 +123,33 @@ main(argc, argv) "usage: finger [-lmpsho] [login ...]\n"); exit(1); } - argc -= optind; - argv += optind; + + return optind; +} + +main(argc, argv) + int argc; + char **argv; +{ + int ch, envargc, argcnt; + char *envargv[3]; + + /* remove this line to get remote host */ + oflag = 1; /* default to old "office" behavior */ + + /* + * Process environment variables followed by command line arguments. + */ + if ((envargv[1] = getenv("FINGER"))) { + envargc = 2; + envargv[0] = "finger"; + envargv[2] = NULL; + (void) option(envargc, envargv); + } + + argcnt = option(argc, argv); + argc -= argcnt; + argv += argcnt; (void)time(&now); setpassent(1); |