Annotation of cci/usr/src/etc/kprf.c, revision 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.