Modified to truncate read/write files before closing.
[unix-history] / usr / src / usr.bin / mail / main.c
index d97ea06..db01c93 100644 (file)
@@ -9,7 +9,7 @@
  * Startup -- interface with user.
  */
 
  * Startup -- interface with user.
  */
 
-static char *SccsId = "@(#)main.c      2.5 %G%";
+static char *SccsId = "@(#)main.c      2.10 %G%";
 
 jmp_buf        hdrjmp;
 
 
 jmp_buf        hdrjmp;
 
@@ -29,7 +29,7 @@ main(argc, argv)
 {
        register char *ef;
        register int i, argp;
 {
        register char *ef;
        register int i, argp;
-       int mustsend, uflag, hdrstop(), (*prevint)();
+       int mustsend, uflag, hdrstop(), (*prevint)(), f;
        FILE *ibuf, *ftat;
        extern char _sobuf[];
        struct sgttyb tbuf;
        FILE *ibuf, *ftat;
        extern char _sobuf[];
        struct sgttyb tbuf;
@@ -47,6 +47,9 @@ main(argc, argv)
 
        uflag = 0;
        argv[argc] = (char *) -1;
 
        uflag = 0;
        argv[argc] = (char *) -1;
+#ifdef GETHOST
+       inithost();
+#endif GETHOST
        mypid = getpid();
        intty = isatty(0);
        outtty = isatty(1);
        mypid = getpid();
        intty = isatty(0);
        outtty = isatty(1);
@@ -109,6 +112,11 @@ main(argc, argv)
                                exit(1);
                        }
                        Tflag = argv[i+1];
                                exit(1);
                        }
                        Tflag = argv[i+1];
+                       if ((f = creat(Tflag, 0600)) < 0) {
+                               perror(Tflag);
+                               exit(1);
+                       }
+                       close(f);
                        i++;
                        break;
 
                        i++;
                        break;
 
@@ -199,6 +207,13 @@ main(argc, argv)
                        noheader++;
                        break;
 
                        noheader++;
                        break;
 
+               case 'v':
+                       /*
+                        * Send mailer verbose flag
+                        */
+                       assign("verbose", "");
+                       break;
+
                default:
                        fprintf(stderr, "Unknown flag: %s\n", argv[i]);
                        exit(1);
                default:
                        fprintf(stderr, "Unknown flag: %s\n", argv[i]);
                        exit(1);
@@ -248,15 +263,21 @@ main(argc, argv)
                        ef = (char *) calloc(1, strlen(ename) + 1);
                        strcpy(ef, ename);
                }
                        ef = (char *) calloc(1, strlen(ename) + 1);
                        strcpy(ef, ename);
                }
-               editfile = mailname = ef;
+               editfile = ef;
+               strcpy(mailname, ef);
        }
        }
-       if (setfile(mailname, edit) < 0)
+       if (setfile(mailname, edit) < 0) {
+               if (edit)
+                       perror(mailname);
+               else
+                       fprintf(stderr, "No mail for %s\n", myname);
                exit(1);
                exit(1);
+       }
        if (!edit && !noheader && value("noheader") == NOSTR) {
                if (setjmp(hdrjmp) == 0) {
                        if ((prevint = sigset(SIGINT, SIG_IGN)) != SIG_IGN)
                                sigset(SIGINT, hdrstop);
        if (!edit && !noheader && value("noheader") == NOSTR) {
                if (setjmp(hdrjmp) == 0) {
                        if ((prevint = sigset(SIGINT, SIG_IGN)) != SIG_IGN)
                                sigset(SIGINT, hdrstop);
-                       announce();
+                       announce(!0);
                        fflush(stdout);
                        sigset(SIGINT, prevint);
                }
                        fflush(stdout);
                        sigset(SIGINT, prevint);
                }