Annotation of 3BSD/cmd/uucp/uulog.c, revision 1.1

1.1     ! root        1: #include "uucp.h"
        !             2: #include "uucpdefs.h"
        !             3: #include <signal.h>
        !             4: #include <sys/types.h>
        !             5: #include <sys/stat.h>
        !             6: #include <sys/dir.h>
        !             7: 
        !             8: int Stop = 0;
        !             9: 
        !            10: /*******
        !            11:  *
        !            12:  *     uulog  -  this program will append all update files in
        !            13:  *     directory (LOGDIR) to the log file (logf) and remove the
        !            14:  *     update files.
        !            15:  *
        !            16:  *     options:
        !            17:  *             -n  -  nominal time for delete of lock file
        !            18:  *             -s  -  system name for search
        !            19:  *             -u  -  user name for search
        !            20:  *             -x  -  turn on debug outputs
        !            21:  *
        !            22:  *     exit codes:
        !            23:  *             0  -  normal
        !            24:  *             1  -  lock file problems
        !            25:  *
        !            26:  */
        !            27: 
        !            28: 
        !            29: #define NOMTIME 3600L
        !            30: 
        !            31: 
        !            32: main(argc, argv)
        !            33: char *argv[];
        !            34: {
        !            35:        FILE *plogf, *lsp;
        !            36:        char filename[NAMESIZE];
        !            37:        time_t nomtime;
        !            38:        char *system, *user;
        !            39: 
        !            40:        extern int onintr(), intr1();
        !            41:        char buf[BUFSIZ], u[20], s[20];
        !            42: 
        !            43:        nomtime = NOMTIME;
        !            44:        system = user = NULL;
        !            45: 
        !            46: 
        !            47:        while (argc>1 && argv[1][0] == '-') {
        !            48:                switch (argv[1][1]) {
        !            49:                case 'd':
        !            50:                        printf("-d option removed\n");
        !            51:                        break;
        !            52:                case 'n':
        !            53:                        nomtime = atoi(&argv[1][2]); break;
        !            54:                case 's':
        !            55:                        system = &argv[1][2];
        !            56:                        break;
        !            57:                case 'u':
        !            58:                        user = &argv[1][2];
        !            59:                        break;
        !            60:                case 'x':
        !            61:                        Debug = atoi(&argv[1][2]);
        !            62:                        if (Debug <= 0)
        !            63:                                Debug = 1;
        !            64:                        break;
        !            65:                default:
        !            66:                        printf("unknown flag %s\n", argv[1]); break;
        !            67:                }
        !            68:                --argc;  argv++;
        !            69:        }
        !            70: 
        !            71:        DEBUG(4, "%s\n", "START");
        !            72:        chdir(LOGDIR);
        !            73:        if (ulockf(LOGLOCK, nomtime) != 0)
        !            74:                exit(0);
        !            75:        signal(SIGHUP, intr1);
        !            76:        signal(SIGINT,intr1);
        !            77:        signal(SIGQUIT, intr1);
        !            78: 
        !            79:        if ((plogf = fopen(LOGFILE, "a")) == NULL) {
        !            80:                rmlock(LOGLOCK);
        !            81:                printf("can't open %s\n", LOGFILE);
        !            82:                exit(0);
        !            83:        }
        !            84:        lsp = fopen(LOGDIR, "r");
        !            85:        ASSERT(lsp != NULL, "CAN NOT OPEN %s", LOGDIR);
        !            86:        while ((gnamef(lsp, filename)) != 0) {
        !            87:                DEBUG(4, "file-%s\n", filename);
        !            88:                if (prefix(LOGPREFIX, filename)) {
        !            89:                        DEBUG(4, "copy file %s\n", filename);
        !            90:                        if (appendf(plogf, filename) == SUCCESS) {
        !            91:                                unlink(filename);
        !            92:                        }
        !            93:                }
        !            94:        }
        !            95:        fclose(lsp);
        !            96:        fclose(plogf);
        !            97:        chmod(LOGFILE, 0666);
        !            98:        rmlock(NULL);
        !            99:        if (user == NULL && system == NULL)
        !           100:                exit(0);
        !           101:        if (Stop)
        !           102:                exit(0);
        !           103:        signal(SIGHUP, onintr);
        !           104:        signal(SIGINT, onintr);
        !           105:        signal(SIGQUIT, onintr);
        !           106: 
        !           107:        plogf = fopen(LOGFILE, "r");
        !           108:        ASSERT(plogf != NULL, "CAN NOT OPEN %s", LOGFILE);
        !           109:        while (fgets(buf, BUFSIZ, plogf) != NULL) {
        !           110:                sscanf(buf, "%s%s", u, s);
        !           111:                DEBUG(4, "u s %s ", u);
        !           112:                DEBUG(4, "%s  ", s);
        !           113:                DEBUG(4, "%s", buf);
        !           114:                if (user != NULL && !prefix(user, u))
        !           115:                        continue;
        !           116:                if (system != NULL && !prefix(system, s))
        !           117:                        continue;
        !           118:                fputs(buf, stdout);
        !           119:        }
        !           120:        exit(0);
        !           121: }
        !           122: 
        !           123: 
        !           124: 
        !           125: 
        !           126: /***
        !           127:  *     onintr()
        !           128:  *
        !           129:  *     onintr  -  interrupt routine
        !           130:  *             remove lock file
        !           131:  *
        !           132:  */
        !           133: 
        !           134: onintr()
        !           135: {
        !           136:        rmlock(NULL);
        !           137:        exit(0);
        !           138: }
        !           139: 
        !           140: 
        !           141: intr1()
        !           142: {
        !           143:        signal(SIGINT, intr1);
        !           144:        signal(SIGHUP, intr1);
        !           145:        signal(SIGQUIT, intr1);
        !           146:        Stop = 1;
        !           147:        return;
        !           148: }
        !           149: 
        !           150: cleanup(code)
        !           151: int code;
        !           152: {
        !           153:        exit(code);
        !           154: }
        !           155: 
        !           156: 
        !           157: /*******
        !           158:  *     appendf(fp, entryf)     append file (entryf) to fp file
        !           159:  *     FILE *fp;
        !           160:  *     char *entryf;
        !           161:  *
        !           162:  *     return codes:
        !           163:                SUCCESS - ok
        !           164:  *             FAIL - file not readable
        !           165:  */
        !           166: 
        !           167: appendf(fp, entryf)
        !           168: FILE *fp;
        !           169: char *entryf;
        !           170: {
        !           171:        FILE *pentryf;
        !           172:        char ltext[513];
        !           173: 
        !           174:        if ((pentryf = fopen(entryf, "r")) == NULL) {
        !           175:                /* file entryf not readable */
        !           176:                return(FAIL);
        !           177:        }
        !           178:        while (fgets(ltext, 512, pentryf)) fputs(ltext, fp);
        !           179:        fclose(pentryf);
        !           180:        return(SUCCESS);
        !           181: }

unix.superglobalmegacorp.com

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