Annotation of coherent/d/bin/uucheck/checkperms/y.tab.c, revision 1.1

1.1     ! root        1: 
        !             2: #include "y.tab.h"
        !             3: #define YYCLEARIN yychar = -1000
        !             4: #define YYERROK yyerrflag = 0
        !             5: extern int yychar;
        !             6: extern short yyerrflag;
        !             7: #ifndef YYMAXDEPTH
        !             8: #define YYMAXDEPTH 150
        !             9: #endif
        !            10: YYSTYPE yyval, yylval;
        !            11: 
        !            12: #line 176 "checkperms.y"
        !            13: 
        !            14: 
        !            15: #include <stdio.h>
        !            16: #include "checkperms.h"
        !            17: #include "monitor.h"
        !            18: 
        !            19: yyerror (s)
        !            20:        char *s;
        !            21: {
        !            22:        fprintf (stderr, "line %d: %s, Token: %d\n", lineno, s, yychar);
        !            23: }
        !            24: #ifdef YYTNAMES
        !            25: struct yytname yytnames[21] =
        !            26: {
        !            27:        "$end", -1, 
        !            28:        "error", -2, 
        !            29:        "FOREACH", 256, 
        !            30:        "PATHNAME", 257, 
        !            31:        "STRING", 258, 
        !            32:        "INDENT", 259, 
        !            33:        "UNINDENT", 260, 
        !            34:        "NL", 261, 
        !            35:        "ERROR_TOKEN", 262, 
        !            36:        "WARNING_TOKEN", 263, 
        !            37:        "EXIST", 264, 
        !            38:        "OWNER", 265, 
        !            39:        "GROUP", 266, 
        !            40:        "CHMOD_PERMISSION", 267, 
        !            41:        "NUMBER", 268, 
        !            42:        "FILE_TOKEN", 269, 
        !            43:        "DIRECTORY", 270, 
        !            44:        "PIPE", 271, 
        !            45:        "CHARACTER_SPECIAL", 272, 
        !            46:        "BLOCK_SPECIAL", 273, 
        !            47:        NULL
        !            48: } ;
        !            49: #endif
        !            50: unsigned yypdnt[33] = {
        !            51: 00, 01, 01, 02, 02, 02, 02, 02, 
        !            52: 03, 06, 04, 011, 07, 07, 05, 05, 
        !            53: 012, 012, 013, 013, 013, 013, 013, 014, 
        !            54: 015, 015, 015, 015, 015, 016, 017, 010, 
        !            55: 020  
        !            56: } ;
        !            57: unsigned yypn[33] = {
        !            58: 02, 01, 02, 01, 01, 02, 01, 02, 
        !            59: 03, 02, 03, 02, 03, 00, 03, 02, 
        !            60: 01, 01, 01, 01, 01, 01, 01, 01, 
        !            61: 01, 01, 01, 01, 01, 02, 02, 01, 
        !            62: 01  
        !            63: } ;
        !            64: unsigned yypgo[17] = {
        !            65: 00, 00, 04, 012, 014, 016, 020, 022, 
        !            66: 026, 040, 042, 044, 046, 050, 052, 054, 
        !            67: 056  
        !            68: } ;
        !            69: unsigned yygo[48] = {
        !            70: 046, 054, 0176030, 07, 07, 024, 054, 024, 
        !            71: 0176030, 010, 0176030, 011, 0176030, 012, 0176030, 013, 
        !            72: 0176030, 014, 027, 050, 0176030, 047, 03, 022, 
        !            73: 031, 051, 032, 052, 041, 053, 0176030, 021, 
        !            74: 0176030, 015, 0176030, 016, 0176030, 041, 0176030, 042, 
        !            75: 0176030, 043, 0176030, 044, 0176030, 045, 0176030, 00  
        !            76: } ;
        !            77: unsigned yypa[46] = {
        !            78: 00, 014, 020, 020, 024, 026, 030, 032, 
        !            79: 050, 052, 054, 056, 062, 066, 072, 0116, 
        !            80: 0120, 0122, 0124, 0126, 0132, 0134, 0136, 0136, 
        !            81: 0142, 020, 020, 0144, 0146, 0150, 0152, 0154, 
        !            82: 0156, 0160, 0164, 0166, 0170, 0172, 00, 0174, 
        !            83: 0176, 0200, 0202, 0204, 0206, 0224  
        !            84: } ;
        !            85: unsigned yyact[150] = {
        !            86: 02, 0400, 03, 0401, 04, 0405, 05, 0406, 
        !            87: 06, 0407, 01, 0176030, 017, 0405, 060000, 0176030, 
        !            88: 020, 0402, 060000, 0176030, 020006, 0176030, 020020, 0176030, 
        !            89: 020021, 0176030, 023, 0177777, 02, 0400, 03, 0401, 
        !            90: 04, 0405, 05, 0406, 06, 0407, 01, 0176030, 
        !            91: 020001, 0176030, 020003, 0176030, 020004, 0176030, 025, 0405, 
        !            92: 060000, 0176030, 026, 0405, 060000, 0176030, 027, 0405, 
        !            93: 060000, 0176030, 030, 0410, 031, 0411, 032, 0412, 
        !            94: 033, 0413, 034, 0415, 035, 0416, 036, 0417, 
        !            95: 037, 0420, 040, 0421, 060000, 0176030, 020007, 0176030, 
        !            96: 020037, 0176030, 020011, 0176030, 020013, 0176030, 040000, 0177777, 
        !            97: 060000, 0176030, 020002, 0176030, 020005, 0176030, 046, 0403, 
        !            98: 020015, 0176030, 020027, 0176030, 020026, 0176030, 020030, 0176030, 
        !            99: 020031, 0176030, 020032, 0176030, 020033, 0176030, 020034, 0176030, 
        !           100: 020, 0402, 020017, 0176030, 020022, 0176030, 020023, 0176030, 
        !           101: 020024, 0176030, 020025, 0176030, 020010, 0176030, 020012, 0176030, 
        !           102: 020035, 0176030, 020036, 0176030, 020016, 0176030, 02, 0400, 
        !           103: 03, 0401, 055, 0404, 04, 0405, 05, 0406, 
        !           104: 06, 0407, 01, 0176030, 020014, 0176030  
        !           105: } ;
        !           106: /* (-lgl
        !           107:  *     COHERENT Version 3.0
        !           108:  *     Copyright (c) 1982, 1990 by Mark Williams Company.
        !           109:  *     All rights reserved. May not be copied without permission.
        !           110:  -lgl) */
        !           111: #include "action.h"
        !           112: #define YYNOCHAR (-1000)
        !           113: #define        yyerrok yyerrflag=0
        !           114: #define        yyclearin       yylval=YYNOCHAR
        !           115: int yystack[YYMAXDEPTH];
        !           116: YYSTYPE yyvstack[YYMAXDEPTH], *yyv;
        !           117: int yychar;
        !           118: 
        !           119: #ifdef YYDEBUG
        !           120: int yydebug = 1;       /* No sir, not in the BSS */
        !           121: #include <stdio.h>
        !           122: #endif
        !           123: 
        !           124: short yyerrflag;
        !           125: int *yys;
        !           126: 
        !           127: yyparse()
        !           128: {
        !           129:        register YYSTYPE *yypvt;
        !           130:        int act;
        !           131:        register unsigned *ip, yystate;
        !           132:        int pno;
        !           133:        yystate = 0;
        !           134:        yychar = YYNOCHAR;
        !           135:        yyv = &yyvstack[-1];
        !           136:        yys = &yystack[-1];
        !           137: 
        !           138: stack:
        !           139:        if( ++yys >= &yystack[YYMAXDEPTH] ) {
        !           140:                write(2, "Stack overflow\n", 15);
        !           141:                exit(1);
        !           142:        }
        !           143:        *yys = yystate;
        !           144:        *++yyv = yyval;
        !           145: #ifdef YYDEBUG
        !           146:        if( yydebug )
        !           147:                fprintf(stdout, "Stack state %d, char %d\n", yystate, yychar);
        !           148: #endif
        !           149: 
        !           150: read:
        !           151:        ip = &yyact[yypa[yystate]];
        !           152:        if( ip[1] != YYNOCHAR ) {
        !           153:                if( yychar == YYNOCHAR ) {
        !           154:                        yychar = yylex();
        !           155: #ifdef YYDEBUG
        !           156:                        if( yydebug )
        !           157:                                fprintf(stdout, "lex read char %d, val %d\n", yychar, yylval);
        !           158: #endif
        !           159:                }
        !           160:                while (ip[1]!=YYNOCHAR) {
        !           161:                        if (ip[1]==yychar)
        !           162:                                break;
        !           163:                        ip += 2;
        !           164:                }
        !           165:        }
        !           166:        act = ip[0];
        !           167:        switch( act>>YYACTSH ) {
        !           168:        case YYSHIFTACT:
        !           169:                if( ip[1]==YYNOCHAR )
        !           170:                        goto YYerract;
        !           171:                if( yychar != -1 )
        !           172:                        yychar = YYNOCHAR; /* dont throw away EOF */
        !           173:                yystate = act&YYAMASK;
        !           174:                yyval = yylval;
        !           175: #ifdef YYDEBUG
        !           176:                if( yydebug )
        !           177:                        fprintf(stdout, "shift %d\n", yystate);
        !           178: #endif
        !           179:                if( yyerrflag )
        !           180:                        --yyerrflag;
        !           181:                goto stack;
        !           182: 
        !           183:        case YYACCEPTACT:
        !           184: #ifdef YYDEBUG
        !           185:                if( yydebug )
        !           186:                        fprintf(stdout, "accept\n");
        !           187: #endif
        !           188:                return(0);
        !           189: 
        !           190:        case YYERRACT:
        !           191:        YYerract:
        !           192:                switch (yyerrflag) {
        !           193:                case 0:
        !           194:                        yyerror("Syntax error");
        !           195: 
        !           196:                case 1:
        !           197:                case 2:
        !           198: 
        !           199:                        yyerrflag = 3;
        !           200:                        while( yys >= & yystack[0] ) {
        !           201:                                ip = &yyact[yypa[*yys]];
        !           202:                                while( ip[1]!=YYNOCHAR )
        !           203:                                        ip += 2;
        !           204:                                if( (*ip&~YYAMASK) == (YYSHIFTACT<<YYACTSH) ) {
        !           205:                                        yystate = *ip&YYAMASK;
        !           206:                                        goto stack;
        !           207:                                }
        !           208: #ifdef YYDEBUG
        !           209:                                if( yydebug )
        !           210:                                        fprintf(stderr, "error recovery leaves state %d, uncovers %d\n", *yys, yys[-1]);
        !           211: #endif
        !           212:                                yys--;
        !           213:                                yyv--;
        !           214:                        }
        !           215: #ifdef YYDEBUG
        !           216:                        if( yydebug )
        !           217:                                fprintf(stderr, "no shift on error; abort\n");
        !           218: #endif
        !           219:                        return(1);
        !           220: 
        !           221:                case 3:
        !           222: #ifdef YYDEBUG
        !           223:                        if( yydebug )
        !           224:                                fprintf(stderr, "Error recovery clobbers char %o\n", yychar);
        !           225: #endif
        !           226:                        if( yychar==YYEOFVAL )
        !           227:                                return(1);
        !           228:                        yychar = YYNOCHAR;
        !           229:                        goto read;
        !           230:                }
        !           231: 
        !           232:        case YYREDACT:
        !           233:                pno = act&YYAMASK;
        !           234: #ifdef YYDEBUG
        !           235:                if( yydebug )
        !           236:                        fprintf(stdout, "reduce %d\n", pno);
        !           237: #endif
        !           238:                yypvt = yyv;
        !           239:                yyv -= yypn[pno];
        !           240:                yys -= yypn[pno];
        !           241:                yyval = yyv[1];
        !           242:                switch(pno) {
        !           243: 
        !           244: case 7: {
        !           245: 
        !           246: #line 21 "checkperms.y"
        !           247: yyerrok;}break;
        !           248: 
        !           249: case 8: {
        !           250: 
        !           251: #line 25 "checkperms.y"
        !           252: 
        !           253:                         /* Put lost character back into stdin.  */
        !           254:                        my_ungetchar(delayed_char);
        !           255: #ifdef DEBUG
        !           256:                        printf("%d:  finished foreach_block.\n", lineno);
        !           257: #endif /* DEBUG */
        !           258:                }break;
        !           259: 
        !           260: case 9: {
        !           261: 
        !           262: #line 34 "checkperms.y"
        !           263: 
        !           264:                                if(host_looping) {
        !           265:                                  FATAL("%d: foreach can not nest.",
        !           266:                                          lineno);
        !           267:                                } else {
        !           268: #ifdef DEBUG
        !           269: /* DEBUG */              printf("%d: Foreach identified\n", lineno);
        !           270: #endif /* DEBUG */
        !           271:                                  host_looping = TRUE;
        !           272:                                  current_host = first_host(yypvt[0]);
        !           273:                                  saving_to_monitor_file = TRUE;
        !           274:                                  reading_from_monitor_file = FALSE;
        !           275:                                  open_monitor_file(); /* Start saving input.  */
        !           276:                                } /* if host_looping */
        !           277:                        }break;
        !           278: 
        !           279: case 10: {
        !           280: 
        !           281: #line 52 "checkperms.y"
        !           282: 
        !           283:                        /* Once beyond the scope of a path_block, make sure
        !           284:                         * that there is no current_path set.
        !           285:                         */
        !           286:                        free(current_path);
        !           287:                        current_path = NULL;
        !           288:                }break;
        !           289: 
        !           290: case 11: {
        !           291: 
        !           292: #line 61 "checkperms.y"
        !           293: 
        !           294:                        if(host_looping) {
        !           295:                                /* We need to build a whole pathname.  */
        !           296:                                current_path = malloc(strlen(current_host)+
        !           297:                                                      strlen(yypvt[0]) + 1 );
        !           298:                                /* Insert the current host into the 
        !           299:                                 * partial path provided. */
        !           300:                                sprintf(current_path, yypvt[0], current_host);
        !           301:                        } else {
        !           302:                                if(current_path != NULL) {
        !           303:                                  FATAL("%d: pathnames can not be nested.\n",
        !           304:                                         lineno);
        !           305:                                } /* if there is a current path */
        !           306:                                copy_str(&current_path, yypvt[0]);
        !           307:                        } /* if in a loop of host names */
        !           308: 
        !           309:                        /* Now that we have a full pathname, we can build
        !           310:                         * a stat structure for it.
        !           311:                         */
        !           312:                        if (stat(current_path, &current_stat) == -1){
        !           313: #ifdef DEBUG
        !           314: /* DEBUG */            printf("Can not stat %s.\n", current_path);
        !           315: #endif /* DEBUG */
        !           316:                                it_exists = FALSE;
        !           317:                        } /* if stat failed */
        !           318:                        else {
        !           319: #ifdef DEBUG
        !           320: /* DEBUG */            printf("Just stat ed %s.\n", current_path);
        !           321: #endif /* DEBUG */
        !           322:                                it_exists = TRUE;
        !           323:                        } /* else stat succeeded */
        !           324:                        sprintf(bigbuf, "Examining %s.\n", current_path);
        !           325:                        REALLYVERBOSE(bigbuf);
        !           326:                }break;
        !           327: 
        !           328: case 14: {
        !           329: 
        !           330: #line 101 "checkperms.y"
        !           331: 
        !           332: #ifdef DEBUG
        !           333: /* DEBUG */                printf("%d: Message %d, Check %d, String:  %s\n",
        !           334:                                lineno, yypvt[-2], yypvt[-1], yypvt[0]);
        !           335: #endif /* DEBUG */
        !           336:                            do_check(yypvt[-2], yypvt[-1], yypvt[0]);
        !           337:                        }break;
        !           338: 
        !           339: case 15: {
        !           340: 
        !           341: #line 108 "checkperms.y"
        !           342: 
        !           343: #ifdef DEBUG
        !           344: /* DEBUG */                printf("%d: Message %d, Check %d\n",
        !           345:                                lineno, yypvt[-1], yypvt[0]);
        !           346: #endif
        !           347:                            do_check(yypvt[-1], yypvt[0], NULL);
        !           348:                        }break;
        !           349: 
        !           350: case 16: {
        !           351: 
        !           352: #line 119 "checkperms.y"
        !           353: yyval = ERROR_TOKEN;}break;
        !           354: 
        !           355: case 17: {
        !           356: 
        !           357: #line 121 "checkperms.y"
        !           358: yyval = WARNING_TOKEN;}break;
        !           359: 
        !           360: case 18: {
        !           361: 
        !           362: #line 126 "checkperms.y"
        !           363: yyval=yypvt[0];}break;
        !           364: 
        !           365: case 19: {
        !           366: 
        !           367: #line 128 "checkperms.y"
        !           368: yyval=yypvt[0];}break;
        !           369: 
        !           370: case 20: {
        !           371: 
        !           372: #line 130 "checkperms.y"
        !           373: yyval=yypvt[0];}break;
        !           374: 
        !           375: case 21: {
        !           376: 
        !           377: #line 132 "checkperms.y"
        !           378: yyval=yypvt[0];}break;
        !           379: 
        !           380: case 22: {
        !           381: 
        !           382: #line 133 "checkperms.y"
        !           383: 
        !           384:                          yyval=CHMOD_PERMISSION;
        !           385:                        }break;
        !           386: 
        !           387: case 23: {
        !           388: 
        !           389: #line 139 "checkperms.y"
        !           390: yyval=EXIST;}break;
        !           391: 
        !           392: case 24: {
        !           393: 
        !           394: #line 143 "checkperms.y"
        !           395: yyval=FILE_TOKEN;}break;
        !           396: 
        !           397: case 25: {
        !           398: 
        !           399: #line 145 "checkperms.y"
        !           400: yyval=DIRECTORY;}break;
        !           401: 
        !           402: case 26: {
        !           403: 
        !           404: #line 147 "checkperms.y"
        !           405: yyval=PIPE;}break;
        !           406: 
        !           407: case 27: {
        !           408: 
        !           409: #line 149 "checkperms.y"
        !           410: yyval=CHARACTER_SPECIAL;}break;
        !           411: 
        !           412: case 28: {
        !           413: 
        !           414: #line 151 "checkperms.y"
        !           415: yyval=BLOCK_SPECIAL;}break;
        !           416: 
        !           417: case 29: {
        !           418: 
        !           419: #line 154 "checkperms.y"
        !           420: 
        !           421:                                yyval=OWNER;
        !           422:                                copy_str(&id_string, yypvt[0]);
        !           423:                        }break;
        !           424: 
        !           425: case 30: {
        !           426: 
        !           427: #line 160 "checkperms.y"
        !           428: 
        !           429:                                yyval=GROUP;
        !           430:                                copy_str(&id_string, yypvt[0]);
        !           431:                        }break;
        !           432: 
        !           433: case 31: {
        !           434: 
        !           435: #line 166 "checkperms.y"
        !           436: 
        !           437:                          yyval=ret_string; 
        !           438:                          ret_string = NULL;
        !           439:                        }break;
        !           440: 
        !           441: case 32: {
        !           442: 
        !           443: #line 172 "checkperms.y"
        !           444: 
        !           445:                          yyval = ret_number;
        !           446:                        }break;
        !           447: 
        !           448:                }
        !           449:                ip = &yygo[ yypgo[yypdnt[pno]] ];
        !           450:                while( *ip!=*yys && *ip!=YYNOCHAR )
        !           451:                        ip += 2;
        !           452:                yystate = ip[1];
        !           453:                goto stack;
        !           454:        }
        !           455: }
        !           456: 
        !           457: 
        !           458: 
        !           459: 

unix.superglobalmegacorp.com

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