⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftp.tab.c

📁 含有BACKTARACKING的編譯軟體
💻 C
📖 第 1 页 / 共 3 页
字号:
 {			if (yyvsp[-3] && yyvsp[-1] != NULL)				retrieve((char *) 0, (char *) yyvsp[-1]);			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 1689 "ftp.tab.c"    }    yyssp -= yym;    yystate = *yyssp;    yyvsp -= yym;    yym = yylhs[yyn];    if (yystate == 0 && yym == 0)    {#if YYDEBUG        if (yydebug)            printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, 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("%sdebug: state %d, reading %d (%s)\n",                        YYPREFIX, 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];#if YYDEBUG    if (yydebug)        printf("%sdebug: after reduction, shifting from state %d \to state %d\n", YYPREFIX, *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);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -