?? ftp.tab.c
字號(hào):
if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 14:#line 203 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) store((char *) yyvsp[-1], "w", 0); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 15:#line 210 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) store((char *) yyvsp[-1], "a", 0); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 16:#line 217 "ftp.y" { if (yyvsp[-1]) send_file_list("."); }break;case 17:#line 222 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) send_file_list((char *) yyvsp[-1]); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 18:#line 229 "ftp.y" { if (yyvsp[-1]) retrieve("/bin/ls -lgA", ""); }break;case 19:#line 234 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) retrieve("/bin/ls -lgA %s", (char *) yyvsp[-1]); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 20:#line 241 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) statfilecmd((char *) yyvsp[-1]); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 21:#line 248 "ftp.y" { statcmd(); }break;case 22:#line 252 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) delete((char *) yyvsp[-1]); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 23:#line 259 "ftp.y" { if (fromname) { renamecmd(fromname, (char *) yyvsp[-1]); free(fromname); fromname = (char *) 0; } else { reply(503, "Bad sequence of commands."); } free((char *) yyvsp[-1]); }break;case 24:#line 270 "ftp.y" { reply(225, "ABOR command successful."); }break;case 25:#line 274 "ftp.y" { if (yyvsp[-1]) cwd(pw->pw_dir); }break;case 26:#line 279 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) cwd((char *) yyvsp[-1]); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 27:#line 286 "ftp.y" { help(cmdtab, (char *) 0); }break;case 28:#line 290 "ftp.y" { register char *cp = (char *)yyvsp[-1]; if (strncasecmp(cp, "SITE", 4) == 0) { cp = (char *)yyvsp[-1] + 4; if (*cp == ' ') cp++; if (*cp) help(sitetab, cp); else help(sitetab, (char *) 0); } else help(cmdtab, (char *) yyvsp[-1]); }break;case 29:#line 305 "ftp.y" { reply(200, "NOOP command successful."); }break;case 30:#line 309 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) makedir((char *) yyvsp[-1]); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 31:#line 316 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) removedir((char *) yyvsp[-1]); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 32:#line 323 "ftp.y" { if (yyvsp[-1]) pwd(); }break;case 33:#line 328 "ftp.y" { if (yyvsp[-1]) cwd(".."); }break;case 34:#line 333 "ftp.y" { help(sitetab, (char *) 0); }break;case 35:#line 337 "ftp.y" { help(sitetab, (char *) yyvsp[-1]); }break;case 36:#line 341 "ftp.y" { int oldmask; if (yyvsp[-1]) { oldmask = umask(0); (void) umask(oldmask); reply(200, "Current UMASK is %03o", oldmask); } }break;case 37:#line 351 "ftp.y" { int oldmask; if (yyvsp[-3]) { if ((yyvsp[-1] == -1) || (yyvsp[-1] > 0777)) { reply(501, "Bad UMASK value"); } else { oldmask = umask(yyvsp[-1]); reply(200, "UMASK set to %03o (was %03o)", yyvsp[-1], oldmask); } } }break;case 38:#line 366 "ftp.y" { if (yyvsp[-5] && (yyvsp[-1] != NULL)) { if (yyvsp[-3] > 0777) reply(501, "CHMOD: Mode value must be between 0 and 0777"); else if (chmod((char *) yyvsp[-1], yyvsp[-3]) < 0) perror_reply(550, (char *) yyvsp[-1]); else reply(200, "CHMOD command successful."); } if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 39:#line 380 "ftp.y" { reply(200, "Current IDLE time limit is %d seconds; max %d", timeout, maxtimeout); }break;case 40:#line 386 "ftp.y" { if (yyvsp[-1] < 30 || yyvsp[-1] > maxtimeout) { reply(501, "Maximum IDLE time must be between 30 and %d seconds", maxtimeout); } else { timeout = yyvsp[-1]; (void) alarm((unsigned) timeout); reply(200, "Maximum IDLE time set to %d seconds", timeout); } }break;case 41:#line 400 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) store((char *) yyvsp[-1], "w", 1); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 42:#line 407 "ftp.y" {#ifdef unix#ifdef BSD reply(215, "UNIX Type: L%d Version: BSD-%d", NBBY, BSD);#else /* BSD */ reply(215, "UNIX Type: L%d", NBBY);#endif /* BSD */#else /* unix */ reply(215, "UNKNOWN Type: L%d", NBBY);#endif /* unix */ }break;case 43:#line 428 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) sizecmd((char *) yyvsp[-1]); if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 44:#line 445 "ftp.y" { if (yyvsp[-3] && yyvsp[-1] != NULL) { struct stat stbuf; if (stat((char *) yyvsp[-1], &stbuf) < 0) perror_reply(550, "%s", (char *) yyvsp[-1]); else if ((stbuf.st_mode&S_IFMT) != S_IFREG) { reply(550, "%s: not a plain file.", (char *) yyvsp[-1]); } else { register struct tm *t; struct tm *gmtime(); t = gmtime(&stbuf.st_mtime); reply(213, "19%02d%02d%02d%02d%02d%02d", t->tm_year, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec); } } if (yyvsp[-1] != NULL) free((char *) yyvsp[-1]); }break;case 45:#line 467 "ftp.y" { reply(221, "Goodbye."); dologout(0); }break;case 46:#line 472 "ftp.y" { yyerrok; }break;case 47:#line 477 "ftp.y" { char *renamefrom(); if (yyvsp[-3] && yyvsp[-1]) { fromname = renamefrom((char *) yyvsp[-1]); if (fromname == (char *) 0 && yyvsp[-1]) { free((char *) yyvsp[-1]); } } }break;case 49:#line 493 "ftp.y" { *(char **)&(yyval ) = ""; }break;case 52:#line 504 "ftp.y" { register char *a, *p; a = (char *)&data_dest.sin_addr; a[0] = yyvsp[-10]; a[1] = yyvsp[-8]; a[2] = yyvsp[-6]; a[3] = yyvsp[-4]; p = (char *)&data_dest.sin_port; p[0] = yyvsp[-2]; p[1] = yyvsp[0]; data_dest.sin_family = AF_INET; }break;case 53:#line 516 "ftp.y" { yyval = FORM_N; }break;case 54:#line 520 "ftp.y" { yyval = FORM_T; }break;case 55:#line 524 "ftp.y" { yyval = FORM_C; }break;case 56:#line 530 "ftp.y" { cmd_type = TYPE_A; cmd_form = FORM_N; }break;case 57:#line 535 "ftp.y" { cmd_type = TYPE_A; cmd_form = yyvsp[0]; }break;case 58:#line 540 "ftp.y" { cmd_type = TYPE_E; cmd_form = FORM_N; }break;case 59:#line 545 "ftp.y" { cmd_type = TYPE_E; cmd_form = yyvsp[0]; }break;case 60:#line 550 "ftp.y" { cmd_type = TYPE_I; }break;case 61:#line 554 "ftp.y" { cmd_type = TYPE_L; cmd_bytesz = NBBY; }break;case 62:#line 559 "ftp.y" { cmd_type = TYPE_L; cmd_bytesz = yyvsp[0]; }break;case 63:#line 565 "ftp.y" { cmd_type = TYPE_L; cmd_bytesz = yyvsp[0]; }break;case 64:#line 572 "ftp.y" { yyval = STRU_F; }break;case 65:#line 576 "ftp.y" { yyval = STRU_R; }break;case 66:#line 580 "ftp.y" { yyval = STRU_P; }break;case 67:#line 586 "ftp.y" { yyval = MODE_S; }break;case 68:#line 590 "ftp.y" { yyval = MODE_B; }break;case 69:#line 594 "ftp.y" { yyval = MODE_C; }break;case 70:#line 600 "ftp.y" { /* * Problem: this production is used for all pathname * processing, but only gives a 550 error reply. * This is a valid reply in some cases but not in others. */ if (logged_in && yyvsp[0] && strncmp((char *) yyvsp[0], "~", 1) == 0) { *(char **)&(yyval ) = *glob((char *) yyvsp[0]); if (globerr != NULL) { reply(550, globerr); yyval = NULL; } free((char *) yyvsp[0]); } else yyval = yyvsp[0]; }break;case 72:#line 622 "ftp.y" { register int ret, dec, multby, digit; /* * Convert a number that was read as decimal number * to what it would be if it had been read as octal. */ dec = yyvsp[0]; multby = 1; ret = 0; while (dec) { digit = dec%10; if (digit > 7) { ret = -1; break; } ret += digit * multby; multby *= 8; dec /= 10; } yyval = ret; }break;case 73:#line 647 "ftp.y" { if (logged_in) yyval = 1; else { reply(530, "Please login with USER and PASS."); yyval = 0; } }break;#line 1678 "ftp.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) {#ifdef YYDEBUG if (yydebug) printf("yydebug: after reduction, shifting from state 0 to\ state %d\n", YYFINAL);#endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0;#if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("yydebug: state %d, reading %d (%s)\n", YYFINAL, yychar, yys); }#endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym];#ifdef YYDEBUG if (yydebug) printf("yydebug: after reduction, shifting from state %d \to state %d\n", *yyssp, yystate);#endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop;yyoverflow: yyerror("yacc stack overflow");yyabort: return (1);yyaccept: return (0);}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -