Annotation of 43BSD/contrib/news/src/sendnews.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * sendnews - send news article by mail.
                      3:  */
                      4: 
                      5: #ifdef SCCSID
                      6: static char    *SccsId = "@(#)sendnews.c       2.10    4/16/85";
                      7: #endif /* SCCSID */
                      8: 
                      9: #include <stdio.h>
                     10: #include <ctype.h>
                     11: #ifndef USG
                     12: struct utsname {
                     13:        char    Sysname[9];
                     14:        char    nodename[33];
                     15:        char    release[9];
                     16:        char    version[9];
                     17: };
                     18: #else /* USG */
                     19: #include <sys/utsname.h>
                     20: #endif /* USG */
                     21: 
                     22: #define        eq(a,b) (strcmp(a,b) == 0)
                     23: #define        LNLEN   7                       /* strlen("ucbvax!") */
                     24: 
                     25: char *index();
                     26: char buffer[BUFSIZ];
                     27: int linecount, oflag = 0, aflag = 0, bflag = 0, toflag = 0;
                     28: 
                     29: FILE *popen();
                     30: /* ARGSUSED */
                     31: main(argc, argv)
                     32: char **argv;
                     33: {
                     34:        FILE *out;
                     35:        char newsgroup[100];
                     36:        char sysn[20];
                     37:        struct utsname ubuf;
                     38: 
                     39:        while (**(++argv) == '-') {
                     40:                if (*++*argv == 'o')
                     41:                        oflag++;
                     42:                else if (**argv == 'a')
                     43:                        aflag++;
                     44:                else if (**argv == 'b')
                     45:                        bflag++;
                     46:                else if (**argv == 'n')
                     47:                        strcpy(newsgroup, *(++argv));
                     48:        }
                     49:        if (aflag && bflag) {
                     50:                fprintf(stderr, "'-a' and '-b' options mutually exclusive.\n");
                     51:                exit(1);
                     52:        }
                     53: 
                     54: #ifdef debug
                     55:        printf("/bin/mail %s\n", *argv);
                     56:        sprintf(buffer, "cat");
                     57: #else
                     58:        sprintf(buffer, "/bin/mail %s", *argv);
                     59: #endif
                     60:        out = popen(buffer, "w");
                     61:        uname(&ubuf);
                     62:        strcpy(sysn, ubuf.nodename);
                     63:        strcat(sysn, "!");
                     64: 
                     65:        /* Standard mail prelude to make the formatters happy */
                     66:        fprintf(out, "To: %s\n", *argv);
                     67:        fprintf(out, "Subject: network news article\n");
                     68:        fprintf(out, "\n");
                     69: 
                     70:        while (fgets(buffer, sizeof buffer, stdin)) {
                     71:                if (*newsgroup && ngline()) {
                     72:                        if (oflag)
                     73:                                sprintf(buffer, "%s\n", newsgroup);
                     74:                        else
                     75:                                sprintf(buffer, "Newsgroups: %s\n", newsgroup);
                     76:                }
                     77:                putc('N', out);
                     78:                fputs(buffer, out);
                     79:        }
                     80:        pclose(out);
                     81:        exit(0);
                     82: }
                     83: 
                     84: ngline()
                     85: {
                     86:        if (oflag)
                     87:                return linecount == 2;
                     88:        if (!toflag && (!strncmp("Newsgroups: ", buffer, 12) ||
                     89:                !strncmp("To: ",buffer, 4)))
                     90:                return ++toflag;
                     91:        return 0;
                     92: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.