Annotation of 42BSD/usr.lib/sendmail/aux/logger.c, revision 1.1.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.