Annotation of 42BSD/usr.lib/sendmail/aux/logger.c, revision 1.1

1.1     ! root        1: # include <stdio.h>
        !             2: # include <syslog.h>
        !             3: 
        !             4: # ifndef lint
        !             5: static char    SccsId[] =      "@(#)logger.c   4.1             7/25/83";
        !             6: # endif lint
        !             7: 
        !             8: /*
        !             9: **  LOGGER -- read and log utility
        !            10: **
        !            11: **     This routine reads from an input and arranges to write the
        !            12: **     result on the system log, along with a useful tag.
        !            13: */
        !            14: 
        !            15: main(argc, argv)
        !            16:        int argc;
        !            17:        char **argv;
        !            18: {
        !            19:        char buf[200];
        !            20:        char *tag;
        !            21:        register char *p;
        !            22:        int pri = LOG_NOTICE;
        !            23:        int logflags = 0;
        !            24:        extern char *getlogin();
        !            25: 
        !            26:        /* initialize */
        !            27:        tag = getlogin();
        !            28: 
        !            29:        /* crack arguments */
        !            30:        while (--argc > 0)
        !            31:        {
        !            32:                p = *++argv;
        !            33:                if (*p != '-')
        !            34:                        break;
        !            35: 
        !            36:                switch (*++p)
        !            37:                {
        !            38:                  case '\0':            /* dummy */
        !            39:                        /* this can be used to give null parameters */
        !            40:                        break;
        !            41: 
        !            42:                  case 't':             /* tag */
        !            43:                        if (argc > 1 && argv[1][0] != '-')
        !            44:                        {
        !            45:                                argc--;
        !            46:                                tag = *++argv;
        !            47:                        }
        !            48:                        else
        !            49:                                tag = NULL;
        !            50:                        break;
        !            51: 
        !            52:                  case 'p':             /* priority */
        !            53:                        if (argc > 1 && argv[1][0] != '-')
        !            54:                        {
        !            55:                                argc--;
        !            56:                                pri = atoi(*++argv);
        !            57:                        }
        !            58:                        break;
        !            59: 
        !            60:                  case 'i':             /* log process id also */
        !            61:                        logflags |= LOG_PID;
        !            62:                        break;
        !            63: 
        !            64:                  case 'f':             /* file to log */
        !            65:                        if (argc > 1 && argv[1][0] != '-')
        !            66:                        {
        !            67:                                argc--;
        !            68:                                if (freopen(*++argv, "r", stdin) == NULL)
        !            69:                                {
        !            70:                                        fprintf("logger: ");
        !            71:                                        perror(*argv);
        !            72:                                        exit(1);
        !            73:                                }
        !            74:                        }
        !            75:                        break;
        !            76: 
        !            77:                  default:
        !            78:                        fprintf(stderr, "logger: unknown flag -%s\n", p);
        !            79:                        break;
        !            80:                }
        !            81:        }
        !            82: 
        !            83:        /* setup for logging */
        !            84:        openlog(tag, logflags);
        !            85:        (void) fclose(stdout);
        !            86: 
        !            87:        /* log input line if appropriate */
        !            88:        if (argc > 0)
        !            89:        {
        !            90:                char buf[120];
        !            91: 
        !            92:                buf[0] = '\0';
        !            93:                while (argc-- > 0)
        !            94:                {
        !            95:                        strcat(buf, " ");
        !            96:                        strcat(buf, *argv++);
        !            97:                }
        !            98:                syslog(pri, buf + 1);
        !            99:                exit(0);
        !           100:        }
        !           101: 
        !           102:        /* main loop */
        !           103:        while (fgets(buf, sizeof buf, stdin) != NULL)
        !           104:                syslog(pri, buf);
        !           105: 
        !           106:        exit(0);
        !           107: }

unix.superglobalmegacorp.com

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