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

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

?? ftp.c

?? 這是 FTP協議的 0。17版本的源代碼 在一定程度上是比較適用的
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * 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. *//*  * From: @(#)ftp.c	5.38 (Berkeley) 4/22/91 */char ftp_rcsid[] =   "$Id: ftp.c,v 1.25 1999/12/13 20:33:20 dholland Exp $";#include <sys/param.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <sys/socket.h>#include <sys/time.h>#include <sys/file.h>#include <netinet/in.h>#include <netinet/ip.h>#include <arpa/ftp.h>#include <arpa/inet.h>#include <arpa/telnet.h>#include <stdio.h>#include <signal.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <netdb.h>#include <pwd.h>#include <stdarg.h>#include "ftp_var.h"#include "cmds.h"#include "../version.h"int data = -1;off_t restart_point = 0;static struct sockaddr_in hisctladdr;static struct sockaddr_in data_addr;static struct sockaddr_in myctladdr;static int ptflag = 0;static sigjmp_buf recvabort;static sigjmp_buf sendabort;static sigjmp_buf ptabort;static int ptabflg = 0;static int abrtflag = 0;void lostpeer(int);extern int connected;static char *gunique(char *);static void proxtrans(const char *cmd, char *local, char *remote);static int initconn(void);static void ptransfer(const char *direction, long bytes, 		      const struct timeval *t0, 		      const struct timeval *t1);static void tvsub(struct timeval *tdiff, 		  const struct timeval *t1, 		  const struct timeval *t0);static void abort_remote(FILE *din);FILE *cin, *cout;static FILE *dataconn(const char *);char *hookup(char *host, int port){	register struct hostent *hp = 0;	int s, tos;	socklen_t len;	static char hostnamebuf[256];	memset(&hisctladdr, 0, sizeof(hisctladdr));	if (inet_aton(host, &hisctladdr.sin_addr)) {		hisctladdr.sin_family = AF_INET;		strncpy(hostnamebuf, host, sizeof(hostnamebuf));		hostnamebuf[sizeof(hostnamebuf)-1]=0;	} 	else {		hp = gethostbyname(host);		if (hp == NULL) {			fprintf(stderr, "ftp: %s: ", host);			herror((char *)NULL);			code = -1;			return((char *) 0);		}		hisctladdr.sin_family = hp->h_addrtype;		if (hp->h_length > (int)sizeof(hisctladdr.sin_addr)) {			hp->h_length = sizeof(hisctladdr.sin_addr);		}		memcpy(&hisctladdr.sin_addr, hp->h_addr_list[0], hp->h_length);		(void) strncpy(hostnamebuf, hp->h_name, sizeof(hostnamebuf));		hostnamebuf[sizeof(hostnamebuf)-1] = 0;	}	hostname = hostnamebuf;	s = socket(hisctladdr.sin_family, SOCK_STREAM, 0);	if (s < 0) {		perror("ftp: socket");		code = -1;		return (0);	}	hisctladdr.sin_port = port;	while (connect(s, (struct sockaddr *)&hisctladdr, sizeof (hisctladdr)) < 0) {		if (hp && hp->h_addr_list[1]) {			int oerrno = errno;			fprintf(stderr, "ftp: connect to address %s: ",				inet_ntoa(hisctladdr.sin_addr));			errno = oerrno;			perror((char *) 0);			hp->h_addr_list++;			memcpy(&hisctladdr.sin_addr, hp->h_addr_list[0], 			       hp->h_length);			fprintf(stdout, "Trying %s...\n",				inet_ntoa(hisctladdr.sin_addr));			(void) close(s);			s = socket(hisctladdr.sin_family, SOCK_STREAM, 0);			if (s < 0) {				perror("ftp: socket");				code = -1;				return (0);			}			continue;		}		perror("ftp: connect");		code = -1;		goto bad;	}	len = sizeof (myctladdr);	if (getsockname(s, (struct sockaddr *)&myctladdr, &len) < 0) {		perror("ftp: getsockname");		code = -1;		goto bad;	}#ifdef IP_TOS	tos = IPTOS_LOWDELAY;	if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos, sizeof(int)) < 0)		perror("ftp: setsockopt TOS (ignored)");#endif	cin = fdopen(s, "r");	cout = fdopen(s, "w");	if (cin == NULL || cout == NULL) {		fprintf(stderr, "ftp: fdopen failed.\n");		if (cin)			(void) fclose(cin);		if (cout)			(void) 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)			(void) fclose(cin);		if (cout)			(void) 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) {			perror("ftp: setsockopt");		}	}#endif /* SO_OOBINLINE */	return (hostname);bad:	(void) close(s);	return ((char *)0);}intdologin(const char *host){	char tmp[80];	char *luser, *pass, *zacct;	int n, aflag = 0;	luser = pass = zacct = 0;	if (xruserpass(host, &luser, &pass, &zacct) < 0) {		code = -1;		return(0);	}	while (luser == 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)==NULL) {			fprintf(stderr, "\nLogin failed.\n");			return 0;		}		tmp[strlen(tmp) - 1] = '\0';		if (*tmp == '\0')			luser = myname;		else			luser = tmp;	}	n = command("USER %s", luser);	if (n == CONTINUE) {		if (pass == NULL) {			/* fflush(stdout); */			pass = getpass("Password:");		}		n = command("PASS %s", pass);	}	if (n == CONTINUE) {		aflag++;		/* fflush(stdout); */		zacct = getpass("Account:");		n = command("ACCT %s", zacct);	}	if (n != COMPLETE) {		fprintf(stderr, "Login failed.\n");		return (0);	}	if (!aflag && zacct != NULL)		(void) command("ACCT %s", zacct);	if (proxy)		return(1);	for (n = 0; n < macnum; ++n) {		if (!strcmp("init", macros[n].mac_name)) {			int margc;			char **margv;			strcpy(line, "$init");			margv = makeargv(&margc, NULL);			domacro(margc, margv);			break;		}	}	return (1);}static voidcmdabort(int ignore){	(void)ignore;	printf("\n");	fflush(stdout);	abrtflag++;	if (ptflag) siglongjmp(ptabort,1);}intcommand(const char *fmt, ...){	va_list ap;	int r;	void (*oldintr)(int);	abrtflag = 0;	if (debug) {		printf("---> ");		va_start(ap, fmt);		if (strncmp("PASS ", fmt, 5) == 0)			printf("PASS XXXX");		else 			vfprintf(stdout, fmt, ap);		va_end(ap);		printf("\n");		(void) fflush(stdout);	}	if (cout == NULL) {		perror ("No control connection for command");		code = -1;		return (0);	}	oldintr = signal(SIGINT, cmdabort);	va_start(ap, fmt);	vfprintf(cout, fmt, ap);	va_end(ap);	fprintf(cout, "\r\n");	(void) fflush(cout);	cpend = 1;	r = getreply(!strcmp(fmt, "QUIT"));	if (abrtflag && oldintr != SIG_IGN)		(*oldintr)(SIGINT);	(void) signal(SIGINT, oldintr);	return(r);}char reply_string[BUFSIZ];		/* last line of previous reply */#include <ctype.h>intgetreply(int expecteof){	register int c, n;	register int dig;	register char *cp;	int originalcode = 0, continuation = 0;	void (*oldintr)(int);	int pflag = 0;	size_t px = 0;	size_t psize = sizeof(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);					(void) fflush(cout);					break;				case DO:				case DONT:					c = getc(cin);					fprintf(cout, "%c%c%c", IAC, WONT, c);					(void) fflush(cout);					break;				default:					break;				}				continue;			}			dig++;			if (c == EOF) {				if (expecteof) {					(void) signal(SIGINT,oldintr);					code = 221;					return (0);				}				lostpeer(0);				if (verbose) {					printf("421 Service not available, remote server has closed connection\n");					(void) 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);				(void) 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 != ')') {					if (px < psize-1) pasv[px++] = c;				}				else {					pasv[px] = '\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')) {			(void) putchar(c);			(void) fflush (stdout);		}		if (continuation && code != originalcode) {			if (originalcode == 0)				originalcode = code;			continue;		}		*cp = '\0';		if (n != '1')			cpend = 0;		(void) signal(SIGINT,oldintr);		if (code == 421 || originalcode == 421)			lostpeer(0);		if (abrtflag && oldintr != cmdabort && oldintr != SIG_IGN)			(*oldintr)(SIGINT);		return (n - '0');	}}static intempty(fd_set *mask, int hifd, int sec){	struct timeval t;	t.tv_sec = (long) sec;	t.tv_usec = 0;	return(select(hifd+1, mask, (fd_set *) 0, (fd_set *) 0, &t));}static voidabortsend(int ignore){	(void)ignore;	mflag = 0;	abrtflag = 0;	printf("\nsend aborted\nwaiting for remote to finish abort\n");	(void) fflush(stdout);	siglongjmp(sendabort, 1);}#define HASHBYTES 1024voidsendrequest(const char *cmd, char *local, char *remote, int printnames){	struct stat st;	struct timeval start, stop;	register int c, d;	FILE *volatile fin, *volatile dout = 0;	int (*volatile closefunc)(FILE *);	void (*volatile oldintr)(int);	void (*volatile oldintp)(int);	volatile long bytes = 0, hashbytes = HASHBYTES;	char buf[BUFSIZ], *bufp;	const char *volatile lmode;	if (verbose && printnames) {		if (local && *local != '-')			printf("local: %s ", local);		if (remote)			printf("remote: %s\n", remote);	}	if (proxy) {		proxtrans(cmd, local, remote);		return;	}	if (curtype != type)		changetype(type, 0);	closefunc = NULL;	oldintr = NULL;	oldintp = NULL;	lmode = "w";	if (sigsetjmp(sendabort, 1)) {		while (cpend) {			(void) getreply(0);		}		if (data >= 0) {			(void) close(data);			data = -1;		}		if (oldintr)			(void) signal(SIGINT,oldintr);		if (oldintp)			(void) signal(SIGPIPE,oldintp);		code = -1;		return;	}	oldintr = signal(SIGINT, abortsend);	if (strcmp(local, "-") == 0)		fin = stdin;	else if (*local == '|') {		oldintp = signal(SIGPIPE,SIG_IGN);		fin = popen(local + 1, "r");		if (fin == NULL) {			perror(local + 1);			(void) signal(SIGINT, oldintr);			(void) signal(SIGPIPE, oldintp);			code = -1;			return;		}		closefunc = pclose;	} else {		fin = fopen(local, "r");		if (fin == NULL) {			fprintf(stderr, "local: %s: %s\n", local,				strerror(errno));			(void) signal(SIGINT, oldintr);			code = -1;			return;		}		closefunc = fclose;		if (fstat(fileno(fin), &st) < 0 ||		    (st.st_mode&S_IFMT) != S_IFREG) {			fprintf(stdout, "%s: not a plain file.\n", local);			(void) signal(SIGINT, oldintr);			fclose(fin);			code = -1;			return;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美三区| 日韩一级二级三级| 免费国产亚洲视频| 亚洲欧洲性图库| 欧美变态tickle挠乳网站| av色综合久久天堂av综合| 毛片av一区二区| 亚洲一二三四久久| 国产精品网站在线观看| 欧美一区二区成人| 欧美色倩网站大全免费| 99国产麻豆精品| 国产精品77777| 午夜精彩视频在线观看不卡| 亚洲视频 欧洲视频| 久久毛片高清国产| 日韩欧美色电影| 欧美久久一二区| 91福利视频网站| av福利精品导航| 福利一区在线观看| 国产一区二区三区四| 捆绑调教一区二区三区| 水野朝阳av一区二区三区| 伊人性伊人情综合网| 成人免费在线观看入口| 国产欧美视频一区二区| 久久综合中文字幕| 精品国产电影一区二区| 日韩欧美电影一二三| 欧美日韩国产高清一区二区| 一本到不卡精品视频在线观看| 成人黄页毛片网站| www.色精品| 99在线精品视频| 波多野结衣精品在线| 丁香五精品蜜臀久久久久99网站| 韩国av一区二区三区四区 | 国产精品久久久久7777按摩| 久久亚洲综合av| 久久综合中文字幕| 久久久久久久久一| 亚州成人在线电影| 一区二区免费视频| 日韩制服丝袜先锋影音| 日韩成人免费在线| 激情五月婷婷综合| 国产二区国产一区在线观看| 成人夜色视频网站在线观看| www.一区二区| 在线中文字幕一区二区| 欧美精品日韩综合在线| 欧美肥妇毛茸茸| 欧美mv日韩mv| 中文字幕精品一区二区精品绿巨人 | 91精品国产品国语在线不卡| 日韩欧美视频一区| 久久久久久麻豆| 国产精品美女www爽爽爽| 亚洲免费观看高清完整版在线 | 亚洲国产成人porn| 青娱乐精品视频| 国产成人精品1024| 色综合久久六月婷婷中文字幕| 欧美天堂亚洲电影院在线播放| 欧美久久一区二区| 久久影院电视剧免费观看| 中文字幕欧美激情| 午夜电影网一区| 国产一区二区美女| 99久久精品免费精品国产| 在线日韩国产精品| 69av一区二区三区| 日韩美女视频在线| 中文字幕欧美日韩一区| 亚洲色图欧洲色图| 亚洲成av人片一区二区三区 | 日韩不卡一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久国产精品免费| jizzjizzjizz欧美| 欧美日韩三级视频| 欧美系列日韩一区| 久久免费偷拍视频| 亚洲六月丁香色婷婷综合久久| 一区二区三区四区不卡视频| 亚洲成人av电影在线| 精品亚洲欧美一区| 99亚偷拍自图区亚洲| 欧美三级电影网站| 26uuu国产电影一区二区| 国产精品女人毛片| 午夜精品123| 东方aⅴ免费观看久久av| 91女厕偷拍女厕偷拍高清| 一本久久a久久免费精品不卡| 欧美一区二区免费观在线| 国产欧美日本一区二区三区| 亚洲国产日韩a在线播放性色| 国产在线观看免费一区| 色先锋久久av资源部| 国产精品美女久久福利网站| 亚洲色图欧美激情| 高清国产一区二区| 欧美军同video69gay| 国产女同性恋一区二区| 天天免费综合色| caoporn国产精品| 欧美一级高清片在线观看| 亚洲欧美一区二区三区极速播放 | 不卡的av中国片| 欧美精品乱码久久久久久| 国产午夜亚洲精品不卡| 亚洲午夜一区二区| 成人精品小蝌蚪| 欧美精品久久久久久久多人混战 | 国产精品视频一二三| 人人狠狠综合久久亚洲| 高清不卡一二三区| 欧美日韩专区在线| 18成人在线观看| 麻豆成人91精品二区三区| 91浏览器打开| 久久久www成人免费毛片麻豆| 日韩成人dvd| 欧美日韩久久久| 亚洲一区二区三区在线| 韩国午夜理伦三级不卡影院| 91精品国产aⅴ一区二区| 樱桃视频在线观看一区| 粉嫩蜜臀av国产精品网站| 欧美videos中文字幕| 午夜精品福利一区二区三区蜜桃| 色综合久久中文综合久久牛| 亚洲国产精品成人久久综合一区| 国模一区二区三区白浆| 91精品国产一区二区三区香蕉| 亚洲精品国产视频| 99久精品国产| 最新久久zyz资源站| 国产福利一区二区三区在线视频| 日韩美女视频一区二区在线观看| 亚洲老司机在线| 精品1区2区3区| 亚洲超碰精品一区二区| 欧美伊人久久久久久午夜久久久久| 中文字幕日韩一区二区| caoporn国产一区二区| 中文字幕亚洲精品在线观看| www.日本不卡| 亚洲色欲色欲www| 色天天综合色天天久久| 亚洲欧洲日韩av| 91色九色蝌蚪| 一区二区三区产品免费精品久久75| 不卡的av中国片| 午夜影院久久久| 91精品国产综合久久婷婷香蕉 | 国产精品一卡二| 国产欧美精品国产国产专区| 丁香一区二区三区| 国产精品久久久久久久久免费相片 | 日韩精品久久久久久| 8x8x8国产精品| 蜜桃在线一区二区三区| 欧美日韩国产精品成人| 国内精品国产成人| 久久精品欧美日韩| 成人午夜碰碰视频| 怡红院av一区二区三区| 欧美日韩精品三区| 人人狠狠综合久久亚洲| 国产精品天美传媒沈樵| 91美女片黄在线观看91美女| 亚洲成va人在线观看| 日韩免费高清电影| 福利视频网站一区二区三区| 亚洲日本在线a| 91香蕉视频污| 免费在线看成人av| 中文字幕成人网| 欧美无砖专区一中文字| 日本最新不卡在线| 久久色中文字幕| 色综合视频一区二区三区高清| 免费成人av资源网| 国产精品网站在线播放| 欧美婷婷六月丁香综合色| 蜜臀av亚洲一区中文字幕| 国产视频一区二区在线| 在线欧美日韩国产| 日韩二区在线观看| 久久新电视剧免费观看| 色国产精品一区在线观看| 日本在线不卡视频| 国产精品伦理在线| 欧美剧在线免费观看网站| 国产成人在线电影| 麻豆精品在线看| 亚洲欧洲国产日韩|