Date: Wed, 19 Apr 2000 20:41:25 -0400 (EDT) From: srm@epitaph.org To: FreeBSD-gnats-submit@freebsd.org Subject: bin/18100: update to src/usr.bin/from/from.c for multiple mboxes Message-ID: <200004200041.UAA00708@eternal.epitaph.org>
next in thread | raw e-mail | index | archive | help
>Number: 18100
>Category: bin
>Synopsis: update to src/usr.bin/from/from.c for multiple mboxes
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Apr 19 17:20:01 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Sean R. McNamara
>Release: FreeBSD 2.2.5-RELEASE i386 (and forward)
>Organization:
n/a
>Environment:
Compiled and tested on FreeBSD 2.2.5-RELEASE 3.0-RELEASE
3.1-RELEASE 3.4-RELEASE and 4.0-RELEASE (i386)
No other archs. were available for testing purposes.
>Description:
/usr/bin/from modified to allow the polling of multiple mailboxes
via the MAIL environment variable with the following syntax:
<mailbox1>:<mailbox2>:<mailbox3>:<...>:<mailboxN>
Default behavior remains intact to poll <MAIL_PATH>/<USERNAME>
>How-To-Repeat:
N/A
>Fix:
--- /usr/src/usr.bin/from/from.c Wed Apr 19 18:46:42 2000
+++ ./from.c Wed Apr 19 18:45:39 2000
@@ -42,7 +42,7 @@
static char sccsid[] = "@(#)from.c 8.1 (Berkeley) 6/6/93";
#endif
static const char rcsid[] =
- "$FreeBSD: src/usr.bin/from/from.c,v 1.8 1999/08/28 01:01:22 peter Exp $";
+ "$FreeBSD: src/usr.bin/from/from.c,v 1.5.2.2 1999/10/30 21:49:05 green Exp $";
#endif /* not lint */
#include <sys/types.h>
@@ -57,6 +57,7 @@
int match __P((char *, char *));
static void usage __P((void));
+char * getbox __P((char *));
int
main(argc, argv)
@@ -66,8 +67,8 @@
extern char *optarg;
extern int optind;
struct passwd *pwd;
- int ch, count, newline;
- char *file, *sender, *p;
+ int ch, count, newline, header, deflt;
+ char *file, *mailenv, *sender, *p;
#if MAXPATHLEN > BUFSIZ
char buf[MAXPATHLEN];
#else
@@ -76,6 +77,7 @@
file = sender = NULL;
count = -1;
+ deflt = -1;
while ((ch = getopt(argc, argv, "cf:s:")) != -1)
switch (ch) {
case 'c':
@@ -99,7 +101,7 @@
if (!file) {
if (*argv) {
(void)sprintf(buf, "%s/%s", _PATH_MAILDIR, *argv);
- file = buf;
+ file = strdup(buf); deflt=1;
} else {
if (!(file = getenv("MAIL"))) {
if (!(pwd = getpwuid(getuid())))
@@ -107,36 +109,67 @@
file = pwd->pw_name;
(void)sprintf(buf,
"%s/%s", _PATH_MAILDIR, file);
- file = buf;
+ file = strdup(buf); deflt=1;
}
}
}
- /* read from stdin */
- if (strcmp(file, "-") == 0) {
- }
- else if (!freopen(file, "r", stdin)) {
- errx(1, "can't read %s", file);
- }
- for (newline = 1; fgets(buf, sizeof(buf), stdin);) {
- if (*buf == '\n') {
- newline = 1;
- continue;
+ while(((deflt) && (mailenv = getbox(file)) != NULL)) {
+
+ /* read from stdin */
+ if (strcmp(file, "-") == 0) {
}
- if (newline && !strncmp(buf, "From ", 5) &&
- (!sender || match(buf + 5, sender))) {
- if (count != -1)
- count++;
- else
- printf("%s", buf);
+ else {
+ if (!freopen(file, "r", stdin))
+ errx(1, "can't read %s", file);
+ }
+
+ header=0;
+ for (newline = 1; fgets(buf, sizeof(buf), stdin);) {
+ if (*buf == '\n') {
+ newline = 1;
+ continue;
+ }
+ if (newline && !strncmp(buf, "From ", 5) &&
+ (!sender || match(buf + 5, sender))) {
+ if (count != -1)
+ count++;
+ else
+ if(!header) {
+ printf("%s:\n\n",file);
+ header++;
+ }
+ printf("%s", buf);
+ fflush(stdout);
+ }
+ newline = 0;
}
- newline = 0;
+ if (count != -1)
+ printf("There %s %d message%s in your incoming mailbox.\n",
+ count == 1 ? "is" : "are", count, count == 1 ? "" : "s");
+ if(deflt == 1)
+ deflt--;
+ file = mailenv;
}
- if (count != -1)
- printf("There %s %d message%s in your incoming mailbox.\n",
- count == 1 ? "is" : "are", count, count == 1 ? "" : "s");
- exit(0);
}
+
+char *
+getbox(str)
+ char *str;
+{
+ char *p;
+
+ if(*str == '\0')
+ return((char *)NULL);
+
+ for (p = str;((*str != ':')&&(*str != '\0'));str++) {}
+ *str++ = '\0';
+ return(str);
+}
+
+
+
+
static void
usage()
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200004200041.UAA00708>
