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

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

?? ftp.c

?? linux下ftp client程序的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * Copyright (c) 1985, 1989, 1993, 1994 *	The 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. * 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. */#ifndef lintstatic char sccsid[] = "@(#)ftp.c	8.6 (Berkeley) 10/27/94";#endif /* not lint */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <sys/param.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <sys/socket.h>#ifdef TIME_WITH_SYS_TIME# include <sys/time.h># include <time.h>#else# ifdef HAVE_SYS_TIME_H#  include <sys/time.h># else#  include <time.h># endif#endif#include <sys/file.h>#include <netinet/in.h>#ifdef HAVE_NETINET_IN_SYSTM_H#include <netinet/in_systm.h>#endif#ifdef HAVE_NETINET_IP_H#include <netinet/ip.h>#endif#include <arpa/inet.h>#include <arpa/ftp.h>#include <arpa/telnet.h>#include <ctype.h>#include <error.h>#include <errno.h>#include <fcntl.h>#include <netdb.h>#include <pwd.h>#include <signal.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#if defined(HAVE_STDARG_H) && defined(__STDC__) && __STDC__#include <stdarg.h>#else#include <varargs.h>#endif#ifdef HAVE_SYS_SELECT_H#include <sys/select.h>#endif#include "ftp_var.h"#if !HAVE_DECL_FCLOSE/* Some systems don't declare fclose in <stdio.h>, so do it ourselves.  */extern int fclose (FILE *);#endif#if !HAVE_DECL_PCLOSE/* Some systems don't declare pclose in <stdio.h>, so do it ourselves.  */extern int pclose (FILE *);#endifextern int h_errno;struct	sockaddr_in hisctladdr;struct	sockaddr_in data_addr;int	data = -1;int	abrtflag = 0;jmp_buf	ptabort;int	ptabflg;int	ptflag = 0;struct	sockaddr_in myctladdr;off_t	restart_point = 0;FILE	*cin, *cout;char *hookup(host, port)	char *host;	int port;{	struct hostent *hp = 0;	int s, len, tos;	static char hostnamebuf[80];	memset((char *)&hisctladdr, 0, sizeof (hisctladdr));	hisctladdr.sin_addr.s_addr = inet_addr(host);	if (hisctladdr.sin_addr.s_addr != -1) {		hisctladdr.sin_family = AF_INET;		strncpy(hostnamebuf, host, sizeof(hostnamebuf));	} else {		hp = gethostbyname(host);		if (hp == NULL) {#ifdef HAVE_HSTRERROR			error (0, 0, "%s: %s", host, hstrerror(h_errno));#else			extern char *program_name;			char *pfx =			  malloc (strlen (program_name) + 2 + strlen (host) + 1);			sprintf (pfx, "%s: %s", program_name, host);			herror (pfx);#endif			code = -1;			return ((char *) 0);		}		hisctladdr.sin_family = hp->h_addrtype;		memmove((caddr_t)&hisctladdr.sin_addr,#ifdef HAVE_STRUCT_HOSTENT_H_ADDR_LIST				hp->h_addr_list[0],#else				hp->h_addr,#endif				hp->h_length);		strncpy(hostnamebuf, hp->h_name, sizeof(hostnamebuf));	}	hostname = hostnamebuf;	s = socket(hisctladdr.sin_family, SOCK_STREAM, 0);	if (s < 0) {		error (0, errno, "socket");		code = -1;		return (0);	}	hisctladdr.sin_port = port;	while (connect(s, (struct sockaddr *)&hisctladdr, sizeof (hisctladdr)) < 0) {#ifdef HAVE_STRUCT_HOSTENT_H_ADDR_LIST		if (hp && hp->h_addr_list[1]) {			int oerrno = errno;			char *ia;			ia = inet_ntoa(hisctladdr.sin_addr);			error (0, oerrno, "connect to address %s", ia);			hp->h_addr_list++;			memmove((caddr_t)&hisctladdr.sin_addr,					hp->h_addr_list[0], hp->h_length);			fprintf(stdout, "Trying %s...\n",				inet_ntoa(hisctladdr.sin_addr));			close(s);			s = socket(hisctladdr.sin_family, SOCK_STREAM, 0);			if (s < 0) {				error (0, errno, "socket");				code = -1;				return (0);			}			continue;		}#endif		error (0, errno, "connect");		code = -1;		goto bad;	}	len = sizeof (myctladdr);	if (getsockname(s, (struct sockaddr *)&myctladdr, &len) < 0) {		error (0, errno, "getsockname");		code = -1;		goto bad;	}#if defined (IP_TOS) && defined (IPPROTO_IP) && defined (IPTOS_LOWDELAY)	tos = IPTOS_LOWDELAY;	if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos, sizeof(int)) < 0)		error (0, errno, "setsockopt TOS (ignored)");#endif	cin = fdopen(s, "r");	/* dup(s) is for sake of stdio implementations who do not		allow two fdopen's on the same file-descriptor */	cout = fdopen(dup(s), "w");	if (cin == NULL || cout == NULL) {		error (0, 0, "fdopen failed.");		if (cin)			fclose(cin);		if (cout)			fclose(cout);		code = -1;		goto bad;	}	if (verbose)		printf("Connected to %s.\n", hostname);	if (getreply(0) > 2) { 	/* read startup message from server */		if (cin)			fclose(cin);		if (cout)			fclose(cout);		code = -1;		goto bad;	}#ifdef SO_OOBINLINE	{	int on = 1;	if (setsockopt(s, SOL_SOCKET, SO_OOBINLINE, (char *)&on, sizeof(on))		< 0 && debug) {			error (0, errno, "setsockopt");		}	}#endif /* SO_OOBINLINE */	return (hostname);bad:	close(s);	return NULL;}intlogin(host)	char *host;{	char tmp[80];	char *user, *pass, *acct;	int n, aflag = 0;	user = pass = acct = 0;	if (ruserpass(host, &user, &pass, &acct) < 0) {		code = -1;		return (0);	}	while (user == NULL) {		char *myname = getlogin();		if (myname == NULL) {			struct passwd *pp = getpwuid(getuid());			if (pp != NULL)				myname = pp->pw_name;		}		if (myname)			printf("Name (%s:%s): ", host, myname);		else			printf("Name (%s): ", host);		if (fgets(tmp, sizeof(tmp) - 1, stdin)) {			/* If they press Ctrl-d immediately, it's empty.  */			tmp[strlen(tmp) - 1] = '\0';		} else			*tmp = '\0';		if (*tmp == '\0')			user = myname;		else			user = tmp;	}	n = command("USER %s", user);	if (n == CONTINUE) {		if (pass == NULL)			pass = getpass("Password:");		n = command("PASS %s", pass);	}	if (n == CONTINUE) {		aflag++;		acct = getpass("Account:");		n = command("ACCT %s", acct);	}	if (n != COMPLETE) {		error (0, 0, "Login failed.");		return (0);	}	if (!aflag && acct != NULL)		command("ACCT %s", acct);	if (proxy)		return (1);	for (n = 0; n < macnum; ++n) {		if (!strcmp("init", macros[n].mac_name)) {#if HAVE_LIBREADLINE			if (line)				free (line);			line = calloc (200, sizeof (*line));			if (!line)				quit (0, 0);#endif			strcpy(line, "$init");			makeargv();			domacro(margc, margv);			break;		}	}	return (1);}RETSIGTYPEcmdabort(int sig ARG_UNUSED){	printf("\n");	fflush(stdout);	abrtflag++;	if (ptflag)		longjmp(ptabort,1);}/*VARARGS*/int#if defined(HAVE_STDARG_H) && defined(__STDC__) && __STDC__command (const char *fmt, ...)#elsecommand(va_alist)va_dcl#endif{	va_list ap;#if !(defined(HAVE_STDARG_H) && defined(__STDC__) && __STDC__)	const char *fmt;#endif	int r;	sig_t oldintr;	abrtflag = 0;	if (debug) {		printf("---> ");#if defined(HAVE_STDARG_H) && defined(__STDC__) && __STDC__		va_start (ap, fmt);#else		va_start(ap);		fmt = va_arg(ap, char *);#endif		if (strncmp("PASS ", fmt, 5) == 0)			printf("PASS XXXX");		else			vfprintf(stdout, fmt, ap);		va_end(ap);		printf("\n");		fflush(stdout);	}	if (cout == NULL) {		error (0, 0, "No control connection for command");		code = -1;		return (0);	}	oldintr = signal(SIGINT, cmdabort);#if defined(HAVE_STDARG_H) && defined(__STDC__) && __STDC__	va_start (ap, fmt);#else	va_start(ap);	fmt = va_arg(ap, char *);#endif	vfprintf(cout, fmt, ap);	va_end(ap);	fprintf(cout, "\r\n");	fflush(cout);	cpend = 1;	r = getreply(!strcmp(fmt, "QUIT"));	if (abrtflag && oldintr != SIG_IGN)		(*oldintr)(SIGINT);	signal(SIGINT, oldintr);	return (r);}char reply_string[BUFSIZ];		/* last line of previous reply */intgetreply(expecteof)	int expecteof;{	int c, n;	int dig;	int originalcode = 0, continuation = 0;	sig_t oldintr;	int pflag = 0;	char *cp, *pt = pasv;	oldintr = signal(SIGINT, cmdabort);	for (;;) {		dig = n = code = 0;		cp = reply_string;		while ((c = getc(cin)) != '\n') {			if (c == IAC) {     /* handle telnet commands */				switch (c = getc(cin)) {				case WILL:				case WONT:					c = getc(cin);					fprintf(cout, "%c%c%c", IAC, DONT, c);					fflush(cout);					break;				case DO:				case DONT:					c = getc(cin);					fprintf(cout, "%c%c%c", IAC, WONT, c);					fflush(cout);					break;				default:					break;				}				continue;			}			dig++;			if (c == EOF) {				if (expecteof) {					signal(SIGINT,oldintr);					code = 221;					return (0);				}				lostpeer();				if (verbose) {					printf("421 Service not available, remote server has closed connection\n");					fflush(stdout);				}				code = 421;				return (4);			}			if (c != '\r' && (verbose > 0 ||			    (verbose > -1 && n == '5' && dig > 4))) {				if (proxflag &&				   (dig == 1 || dig == 5 && verbose == 0))					printf("%s:",hostname);				putchar(c);			}			if (dig < 4 && isdigit(c))				code = code * 10 + (c - '0');			if (!pflag && code == 227)				pflag = 1;			if (dig > 4 && pflag == 1 && isdigit(c))				pflag = 2;			if (pflag == 2) {				if (c != '\r' && c != ')')					*pt++ = c;				else {					*pt = '\0';					pflag = 3;				}			}			if (dig == 4 && c == '-') {				if (continuation)					code = 0;				continuation++;			}			if (n == 0)				n = c;			if (cp < &reply_string[sizeof(reply_string) - 1])				*cp++ = c;		}		if (verbose > 0 || verbose > -1 && n == '5') {			putchar(c);			fflush (stdout);		}		if (continuation && code != originalcode) {			if (originalcode == 0)				originalcode = code;			continue;		}		*cp = '\0';		if (n != '1')			cpend = 0;		signal(SIGINT,oldintr);		if (code == 421 || originalcode == 421)			lostpeer();		if (abrtflag && oldintr != cmdabort && oldintr != SIG_IGN)			(*oldintr)(SIGINT);		return (n - '0');	}}intempty(mask, sec)	fd_set *mask;	int sec;{	struct timeval t;	t.tv_sec = (long) sec;	t.tv_usec = 0;	return (select(32, mask, (fd_set *) 0, (fd_set *) 0, &t));}jmp_buf	sendabort;voidabortsend(sig)  int sig;{	mflag = 0;	abrtflag = 0;	printf("\nsend aborted\nwaiting for remote to finish abort\n");	fflush(stdout);	longjmp(sendabort, 1);}voidsendrequest(cmd, local, remote, printnames)	char *cmd, *local, *remote;	int printnames;{	struct stat st;	struct timeval start, stop;	int c, d;	FILE *fin, *dout = 0, *popen();	int (*closefunc) (FILE *);	sig_t oldintr, oldintp;	long bytes = 0, local_hashbytes=hashbytes;	char *lmode, buf[BUFSIZ], *bufp;	if (verbose && printnames) {		if (local && *local != '-')			printf("local: %s ", local);		if (remote)			printf("remote: %s\n", remote);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
黄色日韩三级电影| 欧美最猛性xxxxx直播| 91在线porny国产在线看| 欧美电影在线免费观看| 国产精品二三区| 久久99精品国产91久久来源| 欧美性色黄大片| 国产精品免费人成网站| 九九**精品视频免费播放| 色婷婷激情一区二区三区| 久久夜色精品国产欧美乱极品| 五月天激情小说综合| fc2成人免费人成在线观看播放 | 日韩午夜激情免费电影| 亚洲伦理在线精品| voyeur盗摄精品| 久久久国产精品午夜一区ai换脸| 奇米777欧美一区二区| 欧美中文字幕一区| 亚洲一区在线看| 色偷偷88欧美精品久久久| 国产精品久线在线观看| 岛国精品在线播放| 337p粉嫩大胆噜噜噜噜噜91av| 奇米一区二区三区av| 欧美伦理视频网站| 亚洲午夜一区二区| 欧美视频一区在线| 亚洲一区二区视频在线| 欧美日韩一级黄| 五月婷婷激情综合网| 欧美日韩一区二区三区不卡| 亚洲午夜久久久| 精品视频在线免费观看| 天堂一区二区在线| 91精品国产综合久久福利| 五月婷婷欧美视频| 日韩欧美精品在线视频| 美洲天堂一区二卡三卡四卡视频| 日韩亚洲欧美中文三级| 久久99国产精品久久| 国产亚洲欧美在线| 不卡视频免费播放| 一区二区欧美国产| 欧美精三区欧美精三区| 免费成人在线视频观看| 欧美成人三级电影在线| 国产激情91久久精品导航| 亚洲国产精品ⅴa在线观看| 91免费国产在线观看| 亚洲国产精品天堂| 日韩精品在线一区| 国产999精品久久| 亚洲精品成人在线| 精品乱码亚洲一区二区不卡| 丰满岳乱妇一区二区三区| 亚洲女性喷水在线观看一区| 欧美日韩精品免费观看视频 | 国内成+人亚洲+欧美+综合在线| 精品久久久久久最新网址| 不卡的av中国片| 视频在线在亚洲| 国产亚洲成aⅴ人片在线观看| 91啪亚洲精品| 欧美aaaaaa午夜精品| 国产精品网站导航| 欧美久久久影院| 大陆成人av片| 七七婷婷婷婷精品国产| 国产精品免费久久| 日韩欧美在线影院| 色噜噜狠狠色综合中国| 激情综合色播激情啊| 一区二区三区毛片| 国产亚洲一区字幕| 5858s免费视频成人| 国产精品888| 日本美女一区二区三区视频| 国产精品久久久久久久久晋中| 777午夜精品视频在线播放| 豆国产96在线|亚洲| 三级不卡在线观看| 亚洲免费资源在线播放| 久久婷婷色综合| 欧美精品久久99| 欧美主播一区二区三区| av动漫一区二区| 久草精品在线观看| 午夜伦理一区二区| 一级特黄大欧美久久久| 中国av一区二区三区| 精品国产免费人成在线观看| 欧美日韩精品系列| 91久久一区二区| 99久久精品一区| 国产麻豆精品视频| 激情图区综合网| 男人的j进女人的j一区| 五月激情综合色| 一区二区三区色| 亚洲天堂av一区| 国产精品女同一区二区三区| 久久奇米777| 精品乱人伦小说| 精品日韩一区二区| 日韩欧美一二三区| 欧美精品18+| 在线播放欧美女士性生活| 精品视频资源站| 欧美日韩国产123区| 欧美日韩国产精品成人| 欧美日韩精品综合在线| 欧美日免费三级在线| 欧美另类久久久品| 欧美精品自拍偷拍| 欧美一区二区三区四区五区| 91精品国产日韩91久久久久久| 欧美丰满少妇xxxbbb| 欧美一区二区三区性视频| 日韩精品中文字幕一区 | 亚洲女同ⅹxx女同tv| 亚洲九九爱视频| 亚洲精品久久久久久国产精华液| 亚洲精品视频在线观看免费| 亚洲精品国产品国语在线app| 亚洲一区二区三区免费视频| 香蕉久久夜色精品国产使用方法 | 亚洲精品视频一区二区| 亚洲黄色片在线观看| 亚洲mv在线观看| 日本欧美一区二区三区乱码| 久久精品国产免费| 懂色av一区二区三区蜜臀| www.日本不卡| 欧美精品丝袜中出| 精品久久久三级丝袜| 国产精品久99| 亚洲二区在线观看| 国产呦萝稀缺另类资源| 色综合色综合色综合色综合色综合 | 欧美精品在欧美一区二区少妇| 91麻豆精品国产91久久久更新时间 | 亚洲精品亚洲人成人网| 三级欧美在线一区| 国产精品一区二区三区四区| 色综合久久99| 欧美成人艳星乳罩| 亚洲欧美色一区| 久久精品国产亚洲高清剧情介绍| 国产成人av一区二区三区在线 | av亚洲精华国产精华精华 | 视频一区二区三区在线| 懂色av一区二区在线播放| 91国在线观看| 久久九九久精品国产免费直播| 一区二区三区**美女毛片| 久久99精品久久久久久| 日本韩国一区二区三区| 久久欧美中文字幕| 天天综合色天天| 成人性生交大片免费 | 欧美色视频在线| 欧美国产欧美亚州国产日韩mv天天看完整 | 久久精品国产**网站演员| 97精品久久久午夜一区二区三区| 欧美精品高清视频| 亚洲精品免费看| 国产乱码精品一区二区三区忘忧草| 日本高清不卡一区| 国产欧美日韩麻豆91| 日韩黄色免费电影| 欧美午夜不卡视频| 18欧美乱大交hd1984| 国产乱子伦视频一区二区三区| 欧美日韩一区二区三区免费看| 最新热久久免费视频| 国产精品亚洲第一区在线暖暖韩国| 欧美午夜片在线看| 亚洲美女在线一区| 成人永久免费视频| 久久久国产精品麻豆 | 蜜臀av国产精品久久久久| 91福利国产精品| 1区2区3区国产精品| 成人午夜激情影院| 久久久99精品免费观看不卡| 蜜桃视频一区二区三区| 欧美电影一区二区| 午夜天堂影视香蕉久久| 欧美揉bbbbb揉bbbbb| 亚洲精品欧美激情| 一本久久综合亚洲鲁鲁五月天| 国产精品乱人伦一区二区| 高清shemale亚洲人妖| 国产清纯美女被跳蛋高潮一区二区久久w | 国产丝袜欧美中文另类| 国产在线精品一区二区夜色| 欧美成人video| 精品在线一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲 |