# 2.11BSD#431 - /usr/src/bin/awk/main.c

##### Functions

    main              X
    yywrap            X

##### Variables

    ansfd             X
    dbg               X
    filefd            X
    filelist          X
    ldbg              X
    lexprog           X
    rstflg            X
    svargc            X
    svargv            X
    svflg             X
    symnum            X
    xargv             X

##### Macros

    TOLOWER           X

       1: #ifndef lint
       2: static char sccsid[] = "@(#)main.c	4.4 (Berkeley) 12/8/84";
       3: #endif
       4:
       5: #include "stdio.h"
       6: #include "ctype.h"
       7: #include "awk.def"
       8: #include "awk.h"
       9: #define TOLOWER(c)  (isupper(c) ? tolower(c) : c) /* ugh!!! */
      10:
      11: int dbg = 0;
      12: int ldbg    = 0;
      13: int svflg   = 0;
      14: int rstflg  = 0;
      15: int svargc;
      16: char    **svargv, **xargv;
      17: extern FILE *yyin;  /* lex input file */
      18: char    *lexprog;   /* points to program argument if it exists */
      19: extern  errorflag;  /* non-zero if any syntax errors; set by yyerror */
      20:
      21: int filefd, symnum, ansfd;
      22: char *filelist;
      23: extern int maxsym, errno;
      24: main(argc, argv) int argc; char *argv[]; {
      25:     if (argc == 1)
      26:         error(FATAL, "Usage: awk [-f source | 'cmds'] [files]");
      27:     syminit();
      28:     while (argc > 1) {
      29:         argc--;
      30:         argv++;
      31:         /* this nonsense is because gcos argument handling */
      32:         /* folds -F into -f.  accordingly, one checks the next
      33: 		/* character after f to see if it's -f file or -Fx.
      34: 		*/
      35:         if (argv[0][0] == '-' && TOLOWER(argv[0][1]) == 'f' && argv[0][2] == '\0') {
      36:             yyin = fopen(argv[1], "r");
      37:             if (yyin == NULL)
      38:                 error(FATAL, "can't open %s", argv[1]);
      39:             argc--;
      40:             argv++;
      41:             break;
      42:         } else if (argv[0][0] == '-' && TOLOWER(argv[0][1]) == 'f') {   /* set field sep */
      43:             if (argv[0][2] == 't')  /* special case for tab */
      44:                 **FS = '\t';
      45:             else
      46:                 **FS = argv[0][2];
      47:             continue;
      48:         } else if (argv[0][0] != '-') {
      49:             dprintf("cmds=|%s|\n", argv[0], NULL, NULL);
      50:             yyin = NULL;
      51:             lexprog = argv[0];
      52:             argv[0] = argv[-1]; /* need this space */
      53:             break;
      54:         } else if (strcmp("-d", argv[0])==0) {
      55:             dbg = 1;
      56:         }
      57:         else if (strcmp("-l", argv[0])==0) {
      58:             ldbg = 1;
      59:         }
      60:         else if(strcmp("-S", argv[0]) == 0) {
      61:             svflg = 1;
      62:         }
      63:         else if(strncmp("-R", argv[0], 2) == 0) {
      64:             if(thaw(argv[0] + 2) == 0)
      65:                 rstflg = 1;
      66:             else {
      67:                 fprintf(stderr, "not restored\n");
      68:                 exit(1);
      69:             }
      70:         }
      71:     }
      72:     if (argc <= 1) {
      73:         argv[0][0] = '-';
      74:         argv[0][1] = '\0';
      75:         argc++;
      76:         argv--;
      77:     }
      78:     svargc = --argc;
      79:     svargv = ++argv;
      80:     dprintf("svargc=%d svargv[0]=%s\n", svargc, svargv[0], NULL);
      81:     *FILENAME = *svargv;    /* initial file name */
      82:     if(rstflg == 0)
      83:         yyparse();
      84:     dprintf("errorflag=%d\n", errorflag, NULL, NULL);
      85:     if (errorflag)
      86:         exit(errorflag);
      87:     if(svflg) {
      88:         svflg = 0;
      89:         if(freeze("awk.out") != 0)
      90:             fprintf(stderr, "not saved\n");
      91:         exit(0);
      92:     }
      93:     run();
      94:     exit(errorflag);
      95: }
      96:
      97: yywrap()
      98: {
      99:     return(1);
     100: }

#### Defined functions

main defined in line 24; never used
yywrap defined in line 97; never used

#### Defined variables

ansfd defined in line 21; never used
dbg defined in line 11; used 4 times

- in line 55
- in /usr/src/bin/awk/awk.def line 11
- in /usr/src/bin/awk/lib.c line 168
- in /usr/src/bin/awk/main.c line 55

filefd defined in line 21; never used
filelist defined in line 22; never used
ldbg defined in line 12; used 1 times

- in line 58

lexprog defined in line 18; used 1 times

- in line 51

rstflg defined in line 14; used 2 times

- in line 65, 82

sccsid defined in line 2; never used
svargc defined in line 15; used 2 times

- in line 78-80(2)

svargv defined in line 16; used 3 times

- in line 79-81(3)

svflg defined in line 13; used 3 times

- in line 61, 87-88(2)

symnum defined in line 21; never used
xargv defined in line 16; never used

#### Defined macros

TOLOWER defined in line 9; used 2 times

- in line 35, 42

Last modified: 1987-02-08 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1151 |