Annotation of cci/usr/src/usr.bin/bsc/cmd/batch/bscmon.c, revision 1.1

1.1     ! root        1: /*     D.L.Buck and Associates, Inc. - 8/27/84
        !             2:  *
        !             3:  *     COPYRIGHT NOTICE:
        !             4:  *             Copyright c 8/27/84 - An unpublished work by 
        !             5:  *             D.L.Buck and Associates, Inc.
        !             6:  *
        !             7:  *     PROPRIETARY RIGHTS NOTICE:
        !             8:  *             All rights reserved. This document and program contains
        !             9:  *             proprietary information of D.L.Buck and Associates,Inc.
        !            10:  *             of San Jose, California, U.S.A., embodying confidential
        !            11:  *             information,  ideas, and expressions,  no part of which
        !            12:  *             may be reproduced, or transmitted in any form or by any
        !            13:  *             means,  electronic,  mechanical,  or otherwise, without
        !            14:  *             the written permission of D.L.Buck and Associates, Inc.
        !            15:  *
        !            16:  * NAME
        !            17:  *     bscmon - BISYNC communications monitoring utility
        !            18:  *
        !            19:  * SYNOPSIS
        !            20:  *     bscmon [-data] [-host=<hostname>] [file]
        !            21:  *                    [-dev=<devname>]
        !            22:  *
        !            23:  * DESCRIPTION
        !            24:  *     bscmon records trace information from the BISYNC trace device
        !            25:  *     (/dev/bsc*tr) while BISYNC communications are taking place. 
        !            26:  *     Information is recorded either in a data file for processing
        !            27:  *     by bsctrace later, or sent to stdout for immediate processing
        !            28:  *     by bsctrace via a pipe.
        !            29:  *
        !            30:  * ALGORITHM
        !            31:  *     1. open device for reading
        !            32:  *             a. if host specified, read host configuration file for
        !            33:  *                device name (name = /dev/<hostdev>tr).
        !            34:  *             b. if device specified, open it.
        !            35:  *             c. if none specified (or found in host configuration file)
        !            36:  *                open /dev/bsctr.
        !            37:  *     2. open data file (if specified). stdout is default.
        !            38:  *     3. while not EOF, read TBUFSIZE bytes from device and put in file or
        !            39:  *        stdout.
        !            40:  *     4. close device (and file, if specified).
        !            41:  */
        !            42: #include <sys/types.h>
        !            43: #include "local.h"
        !            44: #include <bsc/bsctr.h>
        !            45: #include <stdio.h>
        !            46: 
        !            47: #ifndef lint
        !            48: static char sccsid[] = "@(#)bscmon.c   1.3 REL";
        !            49: #endif
        !            50: 
        !            51: #define YES 1
        !            52: #define NO 0
        !            53: 
        !            54: char pathname[50] = "/usr/lib/bscbatch/";      /* path to host config file */
        !            55: void exit();
        !            56: char *strcpy(), *strcat();
        !            57: 
        !            58: main(argc,argv)
        !            59: int argc;
        !            60: char *argv[];
        !            61: {
        !            62:        register unsigned i;
        !            63:        int data = NO;          /* should trace include actual data being
        !            64:                                   sent and received? */
        !            65:        char devname[20];       /* contains trace device name */
        !            66:        char dbuff[TBUFSIZE];   /* trace data is read in here */
        !            67:        char buff[100];
        !            68:        char *fgets();          /* get a line from a file */
        !            69: 
        !            70:        FILE *fopen();          /* function opens files */
        !            71:        FILE *fptr;             /* file pointer for fopen */
        !            72: 
        !            73:        int outfd;              /* output file descriptor */
        !            74:        int devfd;              /* device file descriptor */
        !            75: 
        !            76:        /* set default values */
        !            77:        outfd = 1;              /* 1 is stdout's file descriptor */
        !            78:        strcpy(devname,"/dev/bsctr");
        !            79: 
        !            80:        /* get options from command line */
        !            81:        for (i=1;i<argc;++i) {
        !            82:                /* if [-data] specified,
        !            83:                 * save actual data being sent and received
        !            84:                 */
        !            85:                if (strcmp(argv[i],"-data") == 0)
        !            86:                {       data = YES;
        !            87:                        continue;       }
        !            88: 
        !            89:                /* if [-host=<hostname>] specified, get device name from
        !            90:                   host configuration file in lib/bscbatch */
        !            91:                if (strncmp(argv[i],"-host=",6) == 0) {
        !            92:                        strcat(pathname,&argv[i][6]);
        !            93: 
        !            94:                        if ((fptr = fopen(pathname,"r")) == NULL) {
        !            95:                                fprintf(stderr,
        !            96:                                "bscmon: <%s> has no configuration file\n",
        !            97:                                &argv[i][6]);
        !            98:                                exit(1);        }
        !            99: 
        !           100:                        while(fgets(buff,sizeof buff,fptr) != NULL)
        !           101:                                if (strncmp(buff,"DEVICE=",7) == 0)     {
        !           102:                                        buff[strlen(buff)-1] = '\0';
        !           103:                                        sprintf(devname,"%str",&buff[7]);
        !           104:                        }
        !           105:                        fclose(fptr);
        !           106:                        continue;
        !           107:                }
        !           108:                
        !           109:                /* if [-dev=<devname>] specified,
        !           110:                 * get device name from argv[i]
        !           111:                 */
        !           112:                if (strncmp(argv[i],"-dev=",5) == 0) {
        !           113:                        strcpy(devname,&argv[i][5]);
        !           114:                        continue;       }
        !           115: 
        !           116:                /* if [file] specified, open it to outptr */
        !           117:                if (argv[i][0] != '-') {
        !           118:                        /* create mode 0666 sets this file's read/write 
        !           119:                           permission for everyone */
        !           120:                        if ((outfd = creat(argv[i],0666)) == -1)
        !           121:                        {       fprintf(stderr,
        !           122:                                "bscmon: can't create <%s>\n",&argv[i]);
        !           123:                                exit(1);        }
        !           124:                        continue;
        !           125:                }
        !           126: 
        !           127:                /* bad parameter */
        !           128:                fprintf(stderr,"bscmon: invalid parameter <%s>\n",argv[i]);
        !           129:                exit(1);
        !           130:        }
        !           131: 
        !           132:        /* open trace device */
        !           133:        if ((devfd = open(devname,0)) == -1)    /* '0' is read only flag */
        !           134:        {       fprintf(stderr,"bscmon: trace device <%s> cannot be opened\n",
        !           135:                devname);
        !           136:                exit(1);        }
        !           137: 
        !           138:        if (data == YES)        
        !           139:                ioctl(devfd,BSC_TRDATA,0);
        !           140: 
        !           141:        /* while number of bytes returned isn't 0,
        !           142:         * read data from trace device
        !           143:         */
        !           144:        while ((i=read(devfd,dbuff,sizeof dbuff)) > 0)
        !           145:                write(outfd,dbuff,i);
        !           146: }

unix.superglobalmegacorp.com

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