Annotation of cci/usr/src/etc/kprf.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * This program echoes the output of kernel printf().
                      3:  * For more information, see kprf(1).
                      4:  *
                      5:  * 12/16/85    Initial version
                      6:  */
                      7: 
                      8: 
                      9: #include <sys/types.h>
                     10: #include <sys/socket.h>
                     11: #define        KPRF
                     12: #include <sys/prf.h>
                     13: #include <sys/ioctl.h>
                     14: #include <stdio.h>
                     15: 
                     16: 
                     17: int    cflag,
                     18:        pflag;
                     19: 
                     20: char   *pgname;
                     21: 
                     22: 
                     23: /*
                     24:  * Print the usage message and exit.
                     25:  */
                     26: usage()
                     27: {
                     28:        printf ("%s: usage: %s [-cp]\n", pgname, pgname);
                     29:        printf ("-c\tdirect output to console\n");
                     30:        printf ("-p\tdirect output to process\n");
                     31:        exit (1);
                     32: }
                     33: 
                     34: 
                     35: /*
                     36:  * Main routine.
                     37:  */
                     38: main(argc, argv)
                     39: int    argc;
                     40: char   *argv[];
                     41: {
                     42:        int     i;
                     43:        int     stat;
                     44:        int     fd;
                     45:        char    *cp;
                     46:        char    buf[1024*4];    /* size of message buffer at end of core */
                     47: 
                     48:        pgname = argv[0];
                     49: 
                     50:        if (argc == 1)
                     51:                usage();
                     52:        while (--argc > 0 && **++argv == '-') {
                     53:                for (cp = *argv+1; *cp; cp++)
                     54:                switch (*cp) {
                     55:                case 'c':
                     56:                        cflag++;
                     57:                        fd = pflag ? KPRF_TRACEC : URGCONS;
                     58:                        break;
                     59:                case 'p':
                     60:                        pflag++;
                     61:                        fd = cflag ? KPRF_TRACEC : KPRF_TRACE;
                     62:                        break;
                     63:                default:
                     64:                        usage();
                     65:                }
                     66:        }
                     67: 
                     68:        i = socket(SOCK_STREAM, AF_UNIX, 0);
                     69:        if (i < 0)
                     70:                fatal("Cannot create socket");
                     71: 
                     72:        stat = ioctl(i, SIOCTRACE, (char *) &fd);
                     73:        if (stat < 0)
                     74:                fatal("Cannot start trace utilities");
                     75: 
                     76:        setbuf(stdout, (char *)0);
                     77:        for (;;) {
                     78:                stat = read(i, buf, sizeof(buf)-1);
                     79:                if (stat <= 0)
                     80:                        fatal("EOF or error in read");
                     81:                buf[stat] = 0;
                     82:                printf("%s", buf);
                     83:        }
                     84: 
                     85:        /*NOTREACHED*/
                     86:        exit(0);                /* should not get here */
                     87: }
                     88: 
                     89: 
                     90: /*
                     91:  * A fatal error occured.
                     92:  * Print the error message and exit.
                     93:  */
                     94: fatal(msg)
                     95: char   *msg;
                     96: {
                     97:        fprintf(stderr, "%s: ", pgname);
                     98:        perror(msg);
                     99:        exit(1);
                    100: }

unix.superglobalmegacorp.com

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