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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? UNIX FTP client
?? C
字號:
/* * Copyright (c) 1985, 1989 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */char copyright[] =  "@(#) Copyright (c) 1985, 1989 Regents of the University of California.\n"  "All rights reserved.\n";/* * from: @(#)main.c	5.18 (Berkeley) 3/1/91 */char main_rcsid[] =   "$Id: main.c,v 1.13 1997/03/21 02:06:35 dholland Exp $";/* * FTP User Program -- Command Interface. */#include <sys/types.h>#include <sys/socket.h>#include <sys/ioctl.h>#include <arpa/ftp.h>#include <signal.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <ctype.h>#include <netdb.h>#include <pwd.h>#ifdef	__USE_READLINE__#include <readline/readline.h>#include <readline/history.h>#endif#define Extern#include "ftp_var.h"int traceflag = 0;const char *home = "/";extern FILE *cout;extern int data;extern struct cmd cmdtab[];extern int NCMDS;void intr(int);void lostpeer(int);void help(int argc, char *argv[]);static void cmdscanner(int top);static char *slurpstring(void);intmain(volatile int argc, char **volatile argv){	register char *cp;	struct servent *sp;	int top;	struct passwd *pw = NULL;	char homedir[MAXPATHLEN];	tick = 0;	sp = getservbyname("ftp", "tcp");	if (sp == 0) {		fprintf(stderr, "ftp: ftp/tcp: unknown service\n");		exit(1);	}	ftp_port = sp->s_port;	doglob = 1;	interactive = 1;	autologin = 1;	passivemode = 0;        cp = strrchr(argv[0], '/');        cp = (cp == NULL) ? argv[0] : cp+1;        if (strcmp(cp, "pftp") == 0)            passivemode = 1;#ifdef __USE_READLINE__	/* 	 * Set terminal type so libreadline can parse .inputrc correctly	 */	rl_terminal_name = getenv("TERM");#endif	argc--, argv++;	while (argc > 0 && **argv == '-') {		for (cp = *argv + 1; *cp; cp++)			switch (*cp) {			case 'd':				options |= SO_DEBUG;				debug++;				break;						case 'v':				verbose++;				break;			case 't':				traceflag++;				break;			case 'i':				interactive = 0;				break;			case 'n':				autologin = 0;				break;			case 'p':				passivemode = 1;				break;			case 'g':				doglob = 0;				break;			default:				fprintf(stdout,				  "ftp: %c: unknown option\n", *cp);				exit(1);			}		argc--, argv++;	}	fromatty = isatty(fileno(stdin));	if (fromatty)		verbose++;	cpend = 0;	/* no pending replies */	proxy = 0;	/* proxy not active */	crflag = 1;	/* strip c.r. on ascii gets */	sendport = -1;	/* not using ports */	/*	 * Set up the home directory in case we're globbing.	 */	cp = getlogin();	if (cp != NULL) {		pw = getpwnam(cp);	}	if (pw == NULL)		pw = getpwuid(getuid());	if (pw != NULL) {		strncpy(homedir, pw->pw_dir, sizeof(homedir));		homedir[sizeof(homedir)-1] = 0;		home = homedir;	}	if (argc > 0) {		if (sigsetjmp(toplevel, 1))			exit(0);		(void) signal(SIGINT, intr);		(void) signal(SIGPIPE, lostpeer);		setpeer(argc + 1, argv - 1);	}	top = sigsetjmp(toplevel, 1) == 0;	if (top) {		(void) signal(SIGINT, intr);		(void) signal(SIGPIPE, lostpeer);	}	for (;;) {		cmdscanner(top);		top = 1;	}}voidintr(int ignore){	(void)ignore;	siglongjmp(toplevel, 1);}voidlostpeer(int ignore){	(void)ignore;	if (connected) {		if (cout != NULL) {			shutdown(fileno(cout), 1+1);			fclose(cout);			cout = NULL;		}		if (data >= 0) {			shutdown(data, 1+1);			close(data);			data = -1;		}		connected = 0;	}	pswitch(1);	if (connected) {		if (cout != NULL) {			shutdown(fileno(cout), 1+1);			fclose(cout);			cout = NULL;		}		connected = 0;	}	proxflag = 0;	pswitch(0);}/*char *tail(filename)	char *filename;{	register char *s;		while (*filename) {		s = rindex(filename, '/');		if (s == NULL)			break;		if (s[1])			return (s + 1);		*s = '\0';	}	return (filename);}*//* * Command parser. */static voidcmdscanner(int top){	int margc;	char *marg;	char **margv;	register struct cmd *c;	register int l;#ifdef __USE_READLINE__	char *lineread;#endif	if (!top)		(void) putchar('\n');	for (;;) {		if (fromatty) {#ifdef __USE_READLINE__			lineread = readline("ftp> ");#else			printf("ftp> ");			(void) fflush(stdout);#endif		}#ifdef __USE_READLINE__		if (!fromatty) {			if (fgets(line, sizeof line, stdin) == NULL)				quit();		} else {			if (!lineread) {				quit();				break;			}			strcpy(line, lineread);			if (lineread[0]) add_history(lineread);			free(lineread);                }#else		if (fgets(line, sizeof line, stdin) == NULL)			quit();#endif		l = strlen(line);		if (l == 0)			break;		if (line[--l] == '\n') {			if (l == 0)				break;			line[l] = '\0';		} 		else if (l == sizeof(line) - 2) {			printf("sorry, input line too long\n");			while ((l = getchar()) != '\n' && l != EOF)				/* void */;			break;		} /* else it was a line without a newline */		margv = makeargv(&margc, &marg);		if (margc == 0) {			continue;		}		c = getcmd(margv[0]);		if (c == (struct cmd *)-1) {			printf("?Ambiguous command\n");			continue;		}		if (c == NULL) {			printf("?Invalid command\n");			continue;		}		if (c->c_conn && !connected) {			printf("Not connected.\n");			continue;		}		if (c->c_handler_v) c->c_handler_v(margc, margv);		else if (c->c_handler_0) c->c_handler_0();		else c->c_handler_1(marg);		if (bell && c->c_bell) putchar('\007');		if (c->c_handler_v != help)			break;	}	(void) signal(SIGINT, intr);	(void) signal(SIGPIPE, lostpeer);}struct cmd *getcmd(const char *name){	const char *p, *q;	struct cmd *c, *found;	int nmatches, longest;	longest = 0;	nmatches = 0;	found = 0;	for (c = cmdtab; (p = c->c_name) != NULL; c++) {		for (q = name; *q == *p++; q++)			if (*q == 0)		/* exact match? */				return (c);		if (!*q) {			/* the name was a prefix */			if (q - name > longest) {				longest = q - name;				nmatches = 1;				found = c;			} else if (q - name == longest)				nmatches++;		}	}	if (nmatches > 1)		return ((struct cmd *)-1);	return (found);}/* * Slice a string up into argc/argv. */int slrflag;char **makeargv(int *pargc, char **parg){	static char *rargv[20];	int rargc = 0;	char **argp;	argp = rargv;	stringbase = line;		/* scan from first of buffer */	argbase = argbuf;		/* store from first of buffer */	slrflag = 0;	while ((*argp++ = slurpstring())!=NULL)		rargc++;	*pargc = rargc;	if (parg) *parg = altarg;	return rargv;}/* * Parse string into argbuf; * implemented with FSM to * handle quoting and strings */staticchar *slurpstring(void){	static char excl[] = "!", dols[] = "$";	int got_one = 0;	register char *sb = stringbase;	register char *ap = argbase;	char *tmp = argbase;		/* will return this if token found */	if (*sb == '!' || *sb == '$') {	/* recognize ! as a token for shell */		switch (slrflag) {	/* and $ as token for macro invoke */			case 0:				slrflag++;				stringbase++;				return ((*sb == '!') ? excl : dols);				/* NOTREACHED */			case 1:				slrflag++;				altarg = stringbase;				break;			default:				break;		}	}S0:	switch (*sb) {	case '\0':		goto OUT;	case ' ':	case '\t':		sb++; goto S0;	default:		switch (slrflag) {			case 0:				slrflag++;				break;			case 1:				slrflag++;				altarg = sb;				break;			default:				break;		}		goto S1;	}S1:	switch (*sb) {	case ' ':	case '\t':	case '\0':		goto OUT;	/* end of token */	case '\\':		sb++; goto S2;	/* slurp next character */	case '"':		sb++; goto S3;	/* slurp quoted string */	default:		*ap++ = *sb++;	/* add character to token */		got_one = 1;		goto S1;	}S2:	switch (*sb) {	case '\0':		goto OUT;	default:		*ap++ = *sb++;		got_one = 1;		goto S1;	}S3:	switch (*sb) {	case '\0':		goto OUT;	case '"':		sb++; goto S1;	default:		*ap++ = *sb++;		got_one = 1;		goto S3;	}OUT:	if (got_one)		*ap++ = '\0';	argbase = ap;			/* update storage pointer */	stringbase = sb;		/* update scan pointer */	if (got_one) {		return(tmp);	}	switch (slrflag) {		case 0:			slrflag++;			break;		case 1:			slrflag++;			altarg = NULL;			break;		default:			break;	}	return NULL;}#define HELPINDENT ((int) sizeof ("directory"))/* * Help command. * Call each command handler with argc == 0 and argv[0] == name. */voidhelp(int argc, char *argv[]){	struct cmd *c;	if (argc == 1) {		int i, j, w;		unsigned k;		int columns, width = 0, lines;		printf("Commands may be abbreviated.  Commands are:\n\n");		for (c = cmdtab; c < &cmdtab[NCMDS]; c++) {			int len = strlen(c->c_name);			if (len > width)				width = len;		}		width = (width + 8) &~ 7;		columns = 80 / width;		if (columns == 0)			columns = 1;		lines = (NCMDS + columns - 1) / columns;		for (i = 0; i < lines; i++) {			for (j = 0; j < columns; j++) {				c = cmdtab + j * lines + i;				if (c->c_name && (!proxy || c->c_proxy)) {					printf("%s", c->c_name);				}				else if (c->c_name) {					for (k=0; k < strlen(c->c_name); k++) {						(void) putchar(' ');					}				}				if (c + lines >= &cmdtab[NCMDS]) {					printf("\n");					break;				}				w = strlen(c->c_name);				while (w < width) {					w = (w + 8) &~ 7;					(void) putchar('\t');				}			}		}		return;	}	while (--argc > 0) {		register char *arg;		arg = *++argv;		c = getcmd(arg);		if (c == (struct cmd *)-1)			printf("?Ambiguous help command %s\n", arg);		else if (c == NULL)			printf("?Invalid help command %s\n", arg);		else			printf("%-*s\t%s\n", HELPINDENT,				c->c_name, c->c_help);	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品成人一区二区艾草| 国内精品国产成人国产三级粉色| 午夜一区二区三区视频| 国产综合久久久久影院| 91福利在线导航| 国产亚洲精品资源在线26u| 青椒成人免费视频| 91福利区一区二区三区| 国产精品视频线看| 国产很黄免费观看久久| 69堂成人精品免费视频| 亚洲一区二区三区四区五区黄| 丁香另类激情小说| 欧美精品一区二区三区久久久| 亚洲国产成人av网| 91美女视频网站| 欧美激情在线一区二区三区| 激情文学综合插| 日韩欧美一级片| 免费成人结看片| 337p亚洲精品色噜噜狠狠| 亚洲黄色免费电影| 91国产免费观看| 亚洲国产人成综合网站| 91精品91久久久中77777| 亚洲色图一区二区| 91网页版在线| 一区二区三区不卡视频| 91精彩视频在线| 亚洲一区二区精品久久av| 在线中文字幕一区二区| 一级日本不卡的影视| 97精品国产97久久久久久久久久久久 | 国产在线精品一区二区夜色| 欧美一级夜夜爽| 久久99精品视频| 亚洲精品在线免费播放| 国产在线精品不卡| 久久精品亚洲国产奇米99| 国产成人h网站| 国产精品视频线看| 色偷偷成人一区二区三区91| 亚洲动漫第一页| 欧美日韩国产天堂| 日韩国产一二三区| 久久精品一区四区| 成人精品国产福利| 亚洲同性gay激情无套| 欧美三级日韩三级| 老司机免费视频一区二区| 久久久91精品国产一区二区精品 | 国产日韩欧美亚洲| 99热这里都是精品| 亚洲综合久久av| 日韩一区二区三区在线| 国产一区二区精品久久| 最好看的中文字幕久久| 欧美日本韩国一区二区三区视频| 裸体歌舞表演一区二区| 日本一二三四高清不卡| 欧洲亚洲国产日韩| 久久精品国产免费看久久精品| 国产网站一区二区三区| 色网站国产精品| 紧缚捆绑精品一区二区| 国产精品国产三级国产有无不卡 | 日本高清不卡在线观看| 日本在线不卡视频一二三区| 久久精品亚洲麻豆av一区二区| 成人av动漫在线| 麻豆国产欧美一区二区三区| 亚洲色图视频网站| 精品国产123| 欧美亚洲丝袜传媒另类| 国产91精品精华液一区二区三区 | 亚洲精品一二三| 亚洲精品一区二区三区精华液| 91蝌蚪porny九色| 国产综合色精品一区二区三区| 亚洲黄色小说网站| 中国av一区二区三区| 日韩天堂在线观看| 在线观看国产精品网站| 国产成人精品一区二区三区网站观看| 一区二区三区鲁丝不卡| 欧美激情中文字幕一区二区| 91精品国产色综合久久ai换脸 | 7777精品伊人久久久大香线蕉超级流畅| 国产成人日日夜夜| 青青草一区二区三区| 玉米视频成人免费看| 中文一区一区三区高中清不卡| 日韩一区二区三区观看| 在线观看日韩国产| 色综合天天综合色综合av| 国产成人精品亚洲日本在线桃色| 日韩vs国产vs欧美| 亚洲成精国产精品女| 亚洲精品伦理在线| 亚洲欧美影音先锋| 国产精品理论在线观看| 久久久99精品免费观看不卡| 欧美大片一区二区| 欧美一区二区三区不卡| 欧美猛男gaygay网站| 欧美午夜影院一区| 欧美私模裸体表演在线观看| 91在线观看地址| youjizz久久| 91在线国内视频| 99久久综合国产精品| 国产高清精品网站| 国产99精品国产| 成人中文字幕合集| 丁香天五香天堂综合| 成人黄页在线观看| 99精品国产视频| 色综合天天天天做夜夜夜夜做| 91麻豆.com| 欧美日韩精品免费| 91精品国产综合久久福利| 91精品国产欧美一区二区18| 欧美一区二区三区婷婷月色| 欧美一区二区三区在| 欧美成人精品高清在线播放| 91精品午夜视频| 欧美电视剧免费全集观看| 精品国产一区二区三区久久久蜜月 | 成人av小说网| 一本到一区二区三区| 欧美自拍丝袜亚洲| 欧美精品一级二级三级| 精品人伦一区二区色婷婷| 久久综合九色欧美综合狠狠| 久久久久一区二区三区四区| 国产日韩欧美一区二区三区乱码| 国产精品久久久99| 亚洲国产日韩a在线播放性色| 日韩在线一区二区三区| 韩国一区二区在线观看| 成人app网站| 欧美日韩亚洲高清一区二区| 91精品国产91久久久久久一区二区 | 国产精品自拍一区| 99久久精品国产一区二区三区| 在线观看日韩精品| 精品久久人人做人人爱| 国产精品国产三级国产| 亚洲自拍与偷拍| 久久电影国产免费久久电影| 床上的激情91.| 欧美女孩性生活视频| 久久女同性恋中文字幕| 亚洲综合丝袜美腿| 国产精品综合久久| 欧美日韩二区三区| 国产精品久久久久影视| 午夜精品久久久久久久99水蜜桃| 国产精品99久久久久久有的能看| 色噜噜狠狠成人网p站| 欧美成人女星排行榜| 亚洲已满18点击进入久久| 国模少妇一区二区三区| 欧美亚洲国产一区二区三区| 久久亚洲一区二区三区明星换脸| 亚洲精品成a人| 国产99久久久国产精品免费看| 777久久久精品| 一区二区三区国产精品| www.日韩av| 精品国产区一区| 视频一区二区国产| 91福利精品视频| 国产精品免费网站在线观看| 久久精品噜噜噜成人av农村| 日本韩国欧美国产| 中文字幕在线一区| 国内久久精品视频| 日韩一区二区不卡| 亚洲午夜三级在线| 91免费国产在线| 日本一二三不卡| 丰满亚洲少妇av| 久久久99精品久久| 国产在线视频一区二区三区| 欧美一区二区日韩| 亚洲va韩国va欧美va| 欧美网站大全在线观看| 亚洲美女精品一区| 91亚洲国产成人精品一区二区三 | 人人狠狠综合久久亚洲| 欧美欧美午夜aⅴ在线观看| 亚洲一区二区三区四区在线观看| 日本韩国视频一区二区| 亚洲美女淫视频| 在线观看精品一区| 亚洲一区二区视频在线观看| 欧美亚洲国产一区在线观看网站| 一区二区三区在线视频免费观看| 色哦色哦哦色天天综合|