Annotation of researchv10dc/cmd/prefer/prefawk/main.c, revision 1.1.1.1

1.1       root        1: #define DEBUG
                      2: #include <stdio.h>
                      3: #include <ctype.h>
                      4: #include <signal.h>
                      5: #include "awk.h"
                      6: #include "y.tab.h"
                      7: 
                      8: int    dbg     = 0;
                      9: uchar  *cmdname;       /* gets argv[0] for error messages */
                     10: extern FILE *yyin;     /* lex input file */
                     11: uchar  *lexprog;       /* points to program argument if it exists */
                     12: extern int errorflag;  /* non-zero if any syntax errors; set by yyerror */
                     13: int    compile_time = 1;       /* 0 when machine starts.  for error printing */
                     14: 
                     15: 
                     16: main(argc, argv)
                     17:        int argc;
                     18:        uchar *argv[];
                     19: {
                     20:        uchar *fs = NULL;
                     21:        extern int fpecatch();
                     22: 
                     23:        cmdname = argv[0];
                     24:        if (argc == 1)
                     25:                error(FATAL, "Usage: %s [-f source | 'cmds'] [files]", cmdname);
                     26:        yyin = NULL;
                     27:        while (argc > 1 && argv[1][0] == '-' && argv[1][1] != '\0') {
                     28:                switch (argv[1][1]) {
                     29:                case 'f':       /* next argument is program filename */
                     30:                        argc--;
                     31:                        argv++;
                     32:                        if ((yyin = fopen(argv[1], "r")) == NULL)
                     33:                                error(FATAL, "can't open file %s", argv[1]);
                     34:                        break;
                     35:                case 'F':       /* set field separator */
                     36:                        if (argv[1][2] != 0) {  /* arg is -Fsomething */
                     37:                                if (argv[1][2] == 't' && argv[1][3] == 0)       /* wart: t=>\t */
                     38:                                        fs = (uchar *) "\t";
                     39:                                else
                     40:                                        fs = &argv[1][2];
                     41:                        } else {        /* it's -F (space) something */
                     42:                                argc--;
                     43:                                argv++;
                     44:                                if (argv[1][0] == 't' && argv[1][1] == 0)
                     45:                                        fs = (uchar *) "\t";
                     46:                                else
                     47:                                        fs = &argv[1][0];
                     48:                        }
                     49:                        break;
                     50:                case 'd':
                     51:                        dbg = 1;
                     52:                        break;
                     53:                }
                     54:                argc--;
                     55:                argv++;
                     56:        }
                     57:        if (yyin == NULL) {     /* no -f; first argument is program */
                     58:                dprintf("program = |%s|\n", argv[1]);
                     59:                lexprog = argv[1];
                     60:                argc--;
                     61:                argv++;
                     62:        }
                     63:        syminit();
                     64:        while (argc > 1) {      /* do leading "name=val" */
                     65:                if (!isclvar(argv[1]))
                     66:                        break;
                     67:                setclvar(argv[1]);
                     68:                argc--;
                     69:                argv++;
                     70: 
                     71:        }
                     72:        argv[0] = cmdname;      /* put prog name at front of arglist */
                     73:        signal(SIGFPE, fpecatch);
                     74:        dprintf("argc=%d, argv[0]=%s\n", argc, argv[0]);
                     75:        arginit(argc, argv);
                     76:        yyparse();
                     77:        dprintf("errorflag=%d\n", errorflag, NULL, NULL);
                     78:        if (fs)
                     79:                *FS = tostring(qstring(fs, '\0'));
                     80:        *FILENAME = argv[1];    /* initial file name */
                     81:        if (argc == 1)  /* no filenames; use stdin */
                     82:                initgetrec();
                     83:        if (errorflag == 0) {
                     84:                compile_time = 0;
                     85:                run(winner);
                     86:        } else
                     87:                bracecheck();
                     88:        exit(errorflag);
                     89: }

unix.superglobalmegacorp.com

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