Annotation of researchv10no/cmd/netnews/src/batch.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Batch: program to batch a list of news articles into an unbatch script.
        !             3:  * Usage: /usr/lib/news/batch listfile
        !             4:  *  where listfile is a file containing a list, one per line, of full
        !             5:  *  path names of files containing articles, e.g. as produced by the F
        !             6:  *  transmission option in the sys file.
        !             7:  * Output is placed on standard output.
        !             8:  *
        !             9:  * Intended usage:
        !            10:  *  uux -c -z -r rmt!rnews '<' =/usr/lib/news/batchnews_/usr/spool/outnews/rmt
        !            11:  * where the -c option and the = notation require local mods to uucp.
        !            12:  * This would be invoked every hour or two from crontab.
        !            13:  *
        !            14:  * Other possible usage:
        !            15:  *  /usr/lib/news/batchnews /usr/spool/outnews/rmt | uux - -z -r rmt!rnews
        !            16:  * Also invoked from crontab every hour or two.  This requires no changes
        !            17:  * to your uucp, but eats up disk space storing copies of the articles
        !            18:  * in the spool directory.  The method you choose is transparent to the
        !            19:  * other end, but the other end must be expecting this batching format.
        !            20:  */
        !            21: static char *sccsid = "@(#)batch.c     1.3     4/3/83";
        !            22: #include <stdio.h>
        !            23: #include <sys/types.h>
        !            24: #include <sys/stat.h>
        !            25: #include "defs.h"
        !            26: struct stat sbuf;
        !            27: 
        !            28: main(argc,argv)
        !            29: char **argv;
        !            30: {
        !            31:        register FILE *fd, *nfd;
        !            32:        register int c;
        !            33:        register char *cp;
        !            34:        char fname[512];
        !            35:        char *index();
        !            36: 
        !            37:        if (argc != 2) {
        !            38:                fprintf(stderr, "Usage: batchnews listfile\n");
        !            39:                exit(1);
        !            40:        }
        !            41: 
        !            42:        if (strncmp(BATCHDIR, argv[1], strlen(BATCHDIR))) {
        !            43:                fprintf(stderr, "Permission denied - BATCHDIR mismatch\n");
        !            44:                fprintf(stderr, "BATCHDIR %s, arg %s\n", BATCHDIR, argv[1]);
        !            45:                exit(2);
        !            46:        }
        !            47: 
        !            48:        fd = fopen(argv[1], "r");
        !            49:        if (fd == NULL) {
        !            50:                /*
        !            51:                 * This is not necessarily an error condition, if the
        !            52:                 * file doesn't exist perhaps there's just no news.
        !            53:                 */
        !            54:                perror(argv[1]);
        !            55:                exit(2);
        !            56:        }
        !            57: 
        !            58:        while (fgets(fname, sizeof fname, fd) != NULL) {
        !            59:                cp = index(fname, '\n');
        !            60:                if (cp)
        !            61:                        *cp = '\0';
        !            62:                nfd = fopen(fname, "r");
        !            63:                if (nfd == NULL) {
        !            64:                        printf(": cannot open %s\n", fname);
        !            65:                        continue;
        !            66:                }
        !            67:                fstat(fileno(nfd), &sbuf);
        !            68:                printf("#! rnews %ld\n", sbuf.st_size);
        !            69:                while ((c = getc(nfd)) != EOF)
        !            70:                        putchar(c);
        !            71:                fclose(nfd);
        !            72:        }
        !            73:        fclose(fd);
        !            74: 
        !            75:        /*
        !            76:         * We have reached EOF.  We assume that even if more news
        !            77:         * came in while we were generating this, we got it.  So
        !            78:         * it's safe to truncate the file.
        !            79:         */
        !            80:        close(creat(argv[1], 0666));
        !            81:        exit(0);
        !            82: }

unix.superglobalmegacorp.com

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