亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cmds.c

?? 這是 FTP協(xié)議的 0。17版本的源代碼 在一定程度上是比較適用的
?? C
?? 第 1 頁 / 共 4 頁
字號:
			continue;		}		gargs = ftpglob(argv[i]);		if (globerr != NULL) {			printf("%s\n", globerr);			if (gargs) {				blkfree(gargs);				free((char *)gargs);			}			continue;		}		for (cpp = gargs; cpp && *cpp != NULL; cpp++) {			if (mflag && confirm(argv[0], *cpp)) {				tp = (ntflag) ? dotrans(*cpp) : *cpp;				tp = (mapflag) ? domap(tp) : tp;				sendrequest((sunique) ? "STOU" : "STOR",				    *cpp, tp, *cpp != tp || !interactive);				if (!mflag && fromatty) {					ointer = interactive;					interactive = 1;					if (confirm("Continue with","mput")) {						mflag++;					}					interactive = ointer;				}			}		}		if (gargs != NULL) {			blkfree(gargs);			free((char *)gargs);		}	}	(void) signal(SIGINT, oldintr);	mflag = 0;}voidreget(int argc, char *argv[]){	(void) getit(argc, argv, 1, "r+w");}voidget(int argc, char *argv[]){	(void) getit(argc, argv, 0, restart_point ? "r+w" : "w" );}/* * Receive one file. */static intgetit(int argc, char *argv[], int restartit, const char *modestr){	int loc = 0;	char *oldargv1, *oldargv2;	if (argc == 2) {		argc++;		/* 		 * Protect the user from accidentally retrieving special		 * local names.		 */		argv[2] = pipeprotect(argv[1]);		if (!argv[2]) {			code = -1;			return 0;		}		loc++;	}	if (argc < 2 && !another(&argc, &argv, "remote-file"))		goto usage;	if (argc < 3 && !another(&argc, &argv, "local-file")) {usage:		printf("usage: %s remote-file [ local-file ]\n", argv[0]);		code = -1;		return (0);	}	oldargv1 = argv[1];	oldargv2 = argv[2];	argv[2] = globulize(argv[2]);	if (!argv[2]) {		code = -1;		return (0);	}	if (loc && mcase) {		char *tp = argv[1], *tp2, tmpbuf[PATH_MAX];		while (*tp && !islower(*tp)) {			tp++;		}		if (!*tp) {			tp = argv[2];			tp2 = tmpbuf;			while ((*tp2 = *tp) != '\0') {				if (isupper(*tp2)) {					*tp2 = 'a' + *tp2 - 'A';				}				tp++;				tp2++;			}			argv[2] = tmpbuf;		}	}	if (loc && ntflag)		argv[2] = dotrans(argv[2]);	if (loc && mapflag)		argv[2] = domap(argv[2]);	if (restartit) {		struct stat stbuf;		int ret;		ret = stat(argv[2], &stbuf);		if (restartit == 1) {			if (ret < 0) {				fprintf(stderr, "local: %s: %s\n", argv[2],					strerror(errno));				return (0);			}			restart_point = stbuf.st_size;		} else {			if (ret == 0) {				int overbose;				overbose = verbose;				if (debug == 0)					verbose = -1;				if (command("MDTM %s", argv[1]) == COMPLETE) {					int yy, mo, day, hour, min, sec;					struct tm *tm;					verbose = overbose;					sscanf(reply_string,					    "%*s %04d%02d%02d%02d%02d%02d",					    &yy, &mo, &day, &hour, &min, &sec);					tm = gmtime(&stbuf.st_mtime);					tm->tm_mon++;/* Indentation is misleading, but changes keep small. *//*  * I think the indentation and braces are now correct. Whoever put this * in the way it was originally should be prohibited by law. */					if (tm->tm_year+1900 > yy)					    	return (1);					if (tm->tm_year+1900 == yy) {					   if (tm->tm_mon > mo)					      return (1);					   if (tm->tm_mon == mo) {					      if (tm->tm_mday > day)						 return (1);					      if (tm->tm_mday == day) {						 if (tm->tm_hour > hour)							return (1);						 if (tm->tm_hour == hour) {						    if (tm->tm_min > min)						       return (1);						    if (tm->tm_min == min) {						       if (tm->tm_sec > sec)							  return (1);						    }						 }					      }					   }					}				} else {					printf("%s\n", reply_string);					verbose = overbose;					return (0);				}			}		}	}	recvrequest("RETR", argv[2], argv[1], modestr,		    argv[1] != oldargv1 || argv[2] != oldargv2);	restart_point = 0;	return (0);}voidmabort(int ignore){	int ointer;	(void)ignore;	printf("\n");	(void) fflush(stdout);	if (mflag && fromatty) {		ointer = interactive;		interactive = 1;		if (confirm("Continue with", mname)) {			interactive = ointer;			siglongjmp(jabort,0);		}		interactive = ointer;	}	mflag = 0;	siglongjmp(jabort,0);}/* * Get multiple files. */voidmget(int argc, char **argv){	void (*oldintr)(int);	int ointer;	char *cp, *tp, *tp2, tmpbuf[PATH_MAX];	if (argc < 2 && !another(&argc, &argv, "remote-files")) {		printf("usage: %s remote-files\n", argv[0]);		code = -1;		return;	}	mname = argv[0];	mflag = 1;	oldintr = signal(SIGINT,mabort);	(void) sigsetjmp(jabort, 1);	while ((cp = remglob(argv,proxy)) != NULL) {		if (*cp == '\0') {			mflag = 0;			continue;		}		if (mflag && confirm(argv[0], cp)) {			tp = cp;			if (mcase) {				while (*tp && !islower(*tp)) {					tp++;				}				if (!*tp) {					tp = cp;					tp2 = tmpbuf;					while ((*tp2 = *tp) != '\0') {						if (isupper(*tp2)) {							*tp2 = 'a' + *tp2 - 'A';						}						tp++;						tp2++;					}				}				tp = tmpbuf;			}			if (ntflag) {				tp = dotrans(tp);			}			if (mapflag) {				tp = domap(tp);			}			/* Reject embedded ".." */			tp = pathprotect(tp);			/* Prepend ./ to "-" or "!*" or leading "/" */			tp = pipeprotect(tp);			if (tp == NULL) {				/* hmm... how best to handle this? */				mflag = 0;			}			else {				recvrequest("RETR", tp, cp, "w",					    tp != cp || !interactive);			}			if (!mflag && fromatty) {				ointer = interactive;				interactive = 1;				if (confirm("Continue with","mget")) {					mflag++;				}				interactive = ointer;			}		}	}	(void) signal(SIGINT,oldintr);	mflag = 0;}char *remglob(char *argv[], int doswitch){	char temp[16];	static char buf[PATH_MAX];	static FILE *ftemp = NULL;	static char **args;	int oldverbose, oldhash, badglob = 0;	char *cp;	if (!mflag) {		if (!doglob) {			args = NULL;		}		else {			if (ftemp) {				(void) fclose(ftemp);				ftemp = NULL;			}		}		return(NULL);	}	if (!doglob) {		if (args == NULL)			args = argv;		if ((cp = *++args) == NULL)			args = NULL;		return (cp);	}	if (ftemp == NULL) {		int oldumask, fd;		(void) strcpy(temp, _PATH_TMP);		/* libc 5.2.18 creates with mode 0666, which is dumb */		oldumask = umask(077);		fd = mkstemp(temp);		umask(oldumask);		if (fd<0) {			printf("Error creating temporary file, oops\n");			return NULL;		}				oldverbose = verbose, verbose = 0;		oldhash = hash, hash = 0;		if (doswitch) {			pswitch(!proxy);		}		while (*++argv != NULL) {			int	dupfd = dup(fd);			recvrequest ("NLST", temp, *argv, "a", 0);			if (!checkglob(dupfd, *argv)) {				badglob = 1;				break;			}		}		unlink(temp);		if (doswitch) {			pswitch(!proxy);		}		verbose = oldverbose; hash = oldhash;		if (badglob) {			printf("Refusing to handle insecure file list\n");			close(fd);			return NULL;		}		ftemp = fdopen(fd, "r");		if (ftemp == NULL) {			printf("fdopen failed, oops\n");			return NULL;		}		rewind(ftemp);	}	if (fgets(buf, sizeof (buf), ftemp) == NULL) {		(void) fclose(ftemp), ftemp = NULL;		return (NULL);	}	if ((cp = index(buf, '\n')) != NULL)		*cp = '\0';	return (buf);}/* * Check whether given pattern matches `..' * We assume only a glob pattern starting with a dot will match * dot entries on the server. */static intisdotdotglob(const char *pattern){	int	havedot = 0;	char	c;	if (*pattern++ != '.')		return 0;	while ((c = *pattern++) != '\0' && c != '/') {		if (c == '*' || c == '?')			continue;		if (c == '.' && havedot++)			return 0;	}	return 1;}/* * This function makes sure the list of globbed files returned from * the server doesn't contain anything dangerous such as * /home/<yourname>/.forward, or ../.forward, * or |mail foe@doe </etc/passwd, etc. * Covered areas: *  -	returned name starts with / but glob pattern doesn't *  -	glob pattern starts with / but returned name doesn't *  -	returned name starts with | *  -	returned name contains .. in a position where glob *	pattern doesn't match .. *	I.e. foo/.* allows foo/../bar but not foo/.bar/../fly * * Note that globbed names starting with / should really be stored * under the current working directory; this is handled in mget above. *						--okir */static intcheckglob(int fd, const char *pattern){	const char	*sp;	char		buffer[MAXPATHLEN], dotdot[MAXPATHLEN];	int		okay = 1, nrslash, initial, nr;	FILE		*fp;	/* Find slashes in glob pattern, and verify whether component	 * matches `..'	 */	initial = (pattern[0] == '/');	for (sp = pattern, nrslash = 0; sp != 0; sp = strchr(sp, '/')) {		while (*sp == '/')			sp++;		if (nrslash >= MAXPATHLEN) {			printf("Incredible pattern: %s\n", pattern);			return 0;		}		dotdot[nrslash++] = isdotdotglob(sp);	}	fp = fdopen(fd, "r");	while (okay && fgets(buffer, sizeof(buffer), fp) != NULL) {		char	*sp;		if ((sp = strchr(buffer, '\n')) != 0) {			*sp = '\0';		} else {			printf("Extremely long filename from server: %s",				buffer);			okay = 0;			break;		}		if (buffer[0] == '|'		 || (buffer[0] != '/' && initial)		 || (buffer[0] == '/' && !initial))			okay = 0;		for (sp = buffer, nr = 0; sp; sp = strchr(sp, '/'), nr++) {			while (*sp == '/')				sp++;			if (sp[0] == '.' && !strncmp(sp, "../", 3)			 && (nr >= nrslash || !dotdot[nr]))				okay = 0;		}	}	if (!okay)		printf("Filename provided by server "		       "doesn't match pattern `%s': %s\n", pattern, buffer);	fclose(fp);	return okay;}static const char *onoff(int bool){	return (bool ? "on" : "off");}/* * Show status. */voidstatus(void){	int i;	if (connected)		printf("Connected to %s.\n", hostname);	else		printf("Not connected.\n");	if (!proxy) {		pswitch(1);		if (connected) {			printf("Connected for proxy commands to %s.\n", hostname);		}		else {			printf("No proxy connection.\n");		}		pswitch(0);	}	printf("Mode: %s; Type: %s; Form: %s; Structure: %s\n",		modename, typename, formname, structname);	printf("Verbose: %s; Bell: %s; Prompting: %s; Globbing: %s\n", 		onoff(verbose), onoff(bell), onoff(interactive),		onoff(doglob));	printf("Store unique: %s; Receive unique: %s\n", onoff(sunique),		onoff(runique));	printf("Case: %s; CR stripping: %s\n",onoff(mcase),onoff(crflag));	if (ntflag) {		printf("Ntrans: (in) %s (out) %s\n", ntin,ntout);	}	else {		printf("Ntrans: off\n");	}	if (mapflag) {		printf("Nmap: (in) %s (out) %s\n", mapin, mapout);	}	else {		printf("Nmap: off\n");	}	printf("Hash mark printing: %s; Use of PORT cmds: %s\n",		onoff(hash), onoff(sendport));	printf("Tick counter printing: %s\n", onoff(tick));	if (macnum > 0) {		printf("Macros:\n");		for (i=0; i<macnum; i++) {			printf("\t%s\n",macros[i].mac_name);		}	}	code = 0;}/* * Set beep on cmd completed mode. */voidsetbell(void){	bell = !bell;	printf("Bell mode %s.\n", onoff(bell));	code = bell;}/* * Turn on packet tracing. */voidsettrace(void){	traceflag = !traceflag;	printf("Packet tracing %s.\n", onoff(traceflag));	code = traceflag;}/* * Toggle hash mark printing during transfers. */voidsethash(void){	hash = !hash;	if (hash && tick)		settick(); 	printf("Hash mark printing %s", onoff(hash));	code = hash;	if (hash)		printf(" (%d bytes/hash mark)", 1024);	printf(".\n");}/* * Toggle tick counter printing during transfers. */voidsettick(void){	tick = !tick;	if (hash && tick)		sethash();	printf("Tick counter printing %s", onoff(tick));	code = tick;	if (tick)		printf(" (%d bytes/tick increment)", TICKBYTES);	printf(".\n");}/* * Turn on printing of server echos. */voidsetverbose(void){	verbose = !verbose;	printf("Verbose mode %s.\n", onoff(verbose));	code = verbose;}/* * Toggle PORT cmd use before each data connection. */voidsetport(void){	sendport = !sendport;	printf("Use of PORT cmds %s.\n", onoff(sendport));	code = sendport;}/* * Turn on interactive prompting * during mget, mput, and mdelete.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本国产一区| 91女厕偷拍女厕偷拍高清| 欧美日韩精品一区二区天天拍小说| 最好看的中文字幕久久| 91在线播放网址| 午夜精品久久久久久久久久久| 欧美一区二区三区免费大片 | 久久人人97超碰com| 豆国产96在线|亚洲| 亚洲精品第一国产综合野| 欧美日韩日本视频| 国产一区二区三区不卡在线观看| 中文字幕 久热精品 视频在线| 99麻豆久久久国产精品免费优播| 亚洲综合无码一区二区| 日韩精品最新网址| 成人免费看的视频| 亚洲国产欧美另类丝袜| 日韩三级视频在线看| 成人国产精品免费| 亚洲电影在线免费观看| 久久久久久97三级| 欧美午夜一区二区三区免费大片| 久久精品99国产国产精| 欧美激情一区在线观看| 欧美久久久影院| 国产成人高清在线| 日韩电影免费一区| 中文字幕日本不卡| 精品少妇一区二区三区在线播放| 成人免费毛片嘿嘿连载视频| 日韩综合小视频| 国产精品免费久久久久| 日韩亚洲欧美一区| 色诱视频网站一区| 国产毛片精品视频| 亚洲成人av一区二区三区| 日本一区二区三区四区在线视频| 欧美高清视频在线高清观看mv色露露十八| 国产成人精品免费看| 日韩在线观看一区二区| 国产精品污污网站在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 国产偷国产偷亚洲高清人白洁| 在线日韩av片| 国产91丝袜在线观看| 天堂精品中文字幕在线| 国产精品不卡一区二区三区| 久久夜色精品一区| 欧美一级免费大片| 在线一区二区观看| 成人伦理片在线| 国产一区二区不卡老阿姨| 性感美女久久精品| 亚洲免费观看高清完整版在线观看| 久久久蜜桃精品| 精品88久久久久88久久久| 欧美日韩免费电影| 91福利在线看| 99精品1区2区| 97久久精品人人做人人爽50路| 国产大陆精品国产| 久国产精品韩国三级视频| 人妖欧美一区二区| 日韩高清不卡一区| 男男成人高潮片免费网站| 亚洲国产成人高清精品| 亚洲一区二区三区自拍| 亚洲欧美日韩国产中文在线| 亚洲日本va在线观看| 成人免费在线观看入口| 亚洲欧美日本在线| 伊人色综合久久天天人手人婷| 亚洲色图一区二区| 亚洲精品免费一二三区| 国产精品福利一区二区三区| 国产精品超碰97尤物18| 亚洲欧洲av在线| 成人欧美一区二区三区在线播放| 亚洲欧洲无码一区二区三区| 亚洲四区在线观看| 亚洲久草在线视频| 亚洲高清在线精品| 男人的j进女人的j一区| 久久99久久久久久久久久久| 国产最新精品免费| 国产99精品国产| 91免费在线播放| 欧美在线不卡一区| 欧美高清激情brazzers| 亚洲精品在线三区| 18成人在线观看| 亚洲高清中文字幕| 久久精品国产色蜜蜜麻豆| 国产一区二区福利视频| av一区二区不卡| 欧美蜜桃一区二区三区| 精品国产伦一区二区三区观看体验 | 国产在线精品免费av| 成人午夜又粗又硬又大| 色综合视频在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 蜜臀精品久久久久久蜜臀| 国产一区二区三区美女| 色综合久久精品| 日韩欧美高清一区| 国产精品蜜臀av| 日本aⅴ免费视频一区二区三区| 国产乱码精品一区二区三区忘忧草 | 久久综合av免费| 亚洲精品视频一区| 人人精品人人爱| 99久久婷婷国产综合精品电影| 在线不卡一区二区| 中文字幕av资源一区| 日本欧美加勒比视频| 成人黄色在线看| 欧美变态tickling挠脚心| 亚洲丝袜制服诱惑| 久久精品国产99| 欧美性xxxxx极品少妇| 久久综合色之久久综合| 亚洲国产精品影院| 成人综合日日夜夜| 欧美一级一区二区| 亚洲男人天堂av| 国产原创一区二区| 91精品欧美福利在线观看| 中文字幕日韩欧美一区二区三区| 久久99久国产精品黄毛片色诱| 在线观看一区日韩| 国产精品另类一区| 老司机免费视频一区二区| 欧美性受极品xxxx喷水| 国产精品久久久久久久久图文区| 寂寞少妇一区二区三区| 色菇凉天天综合网| 中文字幕国产一区二区| 久久av中文字幕片| 欧美日韩国产高清一区| 亚洲精品日日夜夜| 成人免费观看av| 久久久久久97三级| 捆绑调教一区二区三区| 欧美精品亚洲二区| 一区二区三区在线影院| 99视频一区二区| 国产精品天天看| 国产福利一区二区| 久久尤物电影视频在线观看| 麻豆精品视频在线观看免费| 欧美精品粉嫩高潮一区二区| 亚洲国产精品综合小说图片区| 91视频免费播放| 最新高清无码专区| 99久久精品国产导航| 亚洲欧美怡红院| 972aa.com艺术欧美| 国产精品免费丝袜| 99vv1com这只有精品| 国产精品久久久久四虎| eeuss鲁片一区二区三区| 中文一区二区完整视频在线观看| 成人在线综合网| 国产女主播一区| 99免费精品在线| 亚洲乱码国产乱码精品精小说| 色婷婷激情综合| 亚洲国产日韩综合久久精品| 欧美午夜在线一二页| 日韩不卡手机在线v区| 欧美一区午夜视频在线观看 | 亚洲一区在线观看网站| 欧美色图激情小说| 日本中文在线一区| 日韩欧美一二区| 国产福利一区在线观看| 国产精品萝li| 91成人国产精品| 午夜精品在线看| 精品国产乱子伦一区| 国产精品1024久久| 亚洲三级理论片| 精品视频一区三区九区| 免费亚洲电影在线| 国产日韩v精品一区二区| av综合在线播放| 亚洲图片自拍偷拍| 欧美v日韩v国产v| av影院午夜一区| 午夜视频一区在线观看| 精品国内片67194| 成人爽a毛片一区二区免费| 亚洲美女淫视频| 日韩一区二区在线观看视频播放| 国产盗摄视频一区二区三区| 亚洲精品久久嫩草网站秘色| 日韩欧美高清在线| 97久久精品人人做人人爽| 免费成人小视频|