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
Defined variables
ansfd
defined in line
21;
never used
dbg
defined in line
11; used 4 times
ldbg
defined in line
12; used 1 times
sccsid
defined in line
2;
never used
svflg
defined in line
13; used 3 times
xargv
defined in line
16;
never used
Defined macros