diff options
Diffstat (limited to 'usr.bin/from')
-rw-r--r-- | usr.bin/from/from.1 | 5 | ||||
-rw-r--r-- | usr.bin/from/from.c | 22 |
2 files changed, 20 insertions, 7 deletions
diff --git a/usr.bin/from/from.1 b/usr.bin/from/from.1 index a09dbff..780eba8 100644 --- a/usr.bin/from/from.1 +++ b/usr.bin/from/from.1 @@ -72,6 +72,11 @@ is given, the .Ar user Ns 's mailbox, is examined instead of the invoker's own mailbox. (Privileges are required.) +.Sh ENVIRONMENT +.Bl -tag -width Fl +.It Ev MAIL +If set, the location of the invoker's mailbox. Otherwise, the default +in /var/mail is used. .Sh FILES .Bl -tag -width /var/mail/* -compact .It Pa /var/mail/* diff --git a/usr.bin/from/from.c b/usr.bin/from/from.c index f9f301d..de62057 100644 --- a/usr.bin/from/from.c +++ b/usr.bin/from/from.c @@ -42,9 +42,11 @@ static char sccsid[] = "@(#)from.c 8.1 (Berkeley) 6/6/93"; #endif /* not lint */ #include <sys/types.h> + #include <ctype.h> #include <pwd.h> #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <paths.h> @@ -83,16 +85,22 @@ main(argc, argv) argv += optind; if (!file) { - if (!(file = *argv)) { - if (!(pwd = getpwuid(getuid()))) { - fprintf(stderr, + if (*argv) { + (void)sprintf(buf, "%s/%s", _PATH_MAILDIR, *argv); + file = buf; + } else { + if (!(file = getenv("MAIL"))) { + if (!(pwd = getpwuid(getuid()))) { + (void)fprintf(stderr, "from: no password file entry for you.\n"); - exit(1); + exit(1); + } + file = pwd->pw_name; + (void)sprintf(buf, + "%s/%s", _PATH_MAILDIR, file); + file = buf; } - file = pwd->pw_name; } - (void)sprintf(buf, "%s/%s", _PATH_MAILDIR, file); - file = buf; } /* read from stdin */ |