Annotation of 43BSD/contrib/news/src/sendnews.c, revision 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.