# 2.11BSD#431 - /usr/src/local/cxref/docxref.c

##### Functions

    main              X
    outid             X
    usage             X

##### Variables

    fname             X
    line_no           X

##### Macros

    FALSE             X
    TRUE              X

       1: /*
       2: ** docxref.c
       3: **
       4: ** Driver for lex based scanner.  Arranges for stdin to be each named
       5: ** file in turn, so that yylex() never has to know about files.
       6: ** Some of this code is not pretty, but it's not too bad.
       7: **
       8: ** Arnold Robbins, Information and Computer Science, Georgia Tech
       9: **	gatech!arnold
      10: ** Copyright (c) 1984 by Arnold Robbins.
      11: ** All rights reserved.
      12: ** This program may not be sold, but may be distributed
      13: ** provided this header is included.
      14: */
      15:
      16: #include <stdio.h>
      17: #include <ctype.h>
      18:
      19: #define TRUE    1
      20: #define FALSE   0
      21:
      22: extern char yytext[];
      23: extern int yyleng;
      24:
      25: int line_no = 1;    /* current line number */
      26: char *fname = NULL; /* current file name */
      27:
      28: char *basename();   /* strips leading path of a file name */
      29:
      30: main(argc,argv)
      31: int argc;
      32: char **argv;
      33: {
      34:     FILE saved_in, *fp;
      35:     char *name;
      36:     int more_input = FALSE;     /* more files to process */
      37:     int read_stdin = FALSE;
      38:
      39:     name = basename(argv[0]);   /* save command name */
      40:     fname = "stdin";        /* assume stdin */
      41:
      42:     if(argc == 1)
      43:     {
      44:         yylex();
      45:         exit(0);
      46:     }
      47:
      48:     if(argv[1][0] == '-' && argv[1][1] != '\0')
      49:             usage(argv[0]); /* will exit */
      50:
      51:     saved_in = *stdin;
      52:     /* save stdin in case "-" is found in middle of command line */
      53:
      54:     for(--argc, argv++; argc > 0; --argc, argv++)
      55:     {
      56:         if(fileno(stdin) != fileno((&saved_in)) || read_stdin)
      57:             fclose(stdin);
      58:         /* free unix file descriptors */
      59:
      60:         if(strcmp(*argv, "-") == 0)
      61:         {
      62:             *stdin = saved_in;
      63:             fname = "stdin";
      64:             read_stdin = TRUE;
      65:             more_input = (argc - 1 > 0);
      66:         }
      67:         else if((fp = fopen(*argv,"r")) == NULL)
      68:         {
      69:             fprintf(stderr,"%s: can't open %s\n", name, *argv);
      70:             continue;
      71:         }
      72:         else
      73:         {
      74:             *stdin = *fp;
      75:             /* do it this way so that yylex() */
      76:             /* never knows about files etc. */
      77:             more_input = (argc - 1 > 0);
      78:             fname = *argv;
      79:         }
      80:
      81:         yylex();    /* do the work */
      82:
      83:         if(more_input)
      84:             line_no = 1;
      85:     }
      86: }
      87:
      88: outid()
      89: {
      90:     char *basename();
      91:
      92:     printf("%s\t%s\t%d\n", yytext, basename(fname), line_no);
      93: }
      94:
      95: usage(name)
      96: char *name;
      97: {
      98:     fprintf(stderr,"usage: %s [files]\n", name);
      99:     exit(1);
     100: }
     101:
     102: #include "basename.c"

#### Defined functions

main defined in line 30; never used
outid defined in line 88; never used
usage defined in line 95; used 1 times

- in line 49

#### Defined variables

fname defined in line 26; used 4 times

- in line 40, 63, 78, 92

line_no defined in line 25; used 2 times

- in line 84, 92

#### Defined macros

FALSE defined in line 20; used 2 times

- in line 36-37(2)

TRUE defined in line 19; used 1 times

- in line 64

Last modified: 1991-11-05 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1149 |