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

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

?? ftp.c

?? EFI(Extensible Firmware Interface)是下一代BIOS
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*	$Id: ftp.c,v 1.15 1998/12/09 20:49:20 eivind Exp $	*/
/*	$NetBSD: ftp.c,v 1.29.2.1 1997/11/18 01:01:04 mellon Exp $	*/

/*
 * Copyright (c) 1985, 1989, 1993, 1994
 *	The Regents of the University of California.  All rights reserved.
 *
 *
 * Portions copyright (c) 1999, 2000
 * Intel Corporation.
 * 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, Intel Corporation, and its contributors.
 * 
 * 4. Neither the name of University, Intel Corporation, or their respective
 *    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, INTEL CORPORATION 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,
 * INTEL CORPORATION 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.
 *
 */

#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)ftp.c	8.6 (Berkeley) 10/27/94";
#else
__RCSID("$Id: ftp.c,v 1.15 1998/12/09 20:49:20 eivind Exp $");
__RCSID_SOURCE("$NetBSD: ftp.c,v 1.29.2.1 1997/11/18 01:01:04 mellon Exp $");
#endif
#endif /* not lint */

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>

#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <arpa/ftp.h>
#include <arpa/telnet.h>

#include <ctype.h>
#include <err.h>
#include <errno.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#if EFI32 || EFI64
#include "efimisc.h"	
#ifdef __STDC__
#include <stdarg.h>
#else
#include <varargs.h>
#endif
#endif

#include "ftp_var.h"

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;


FILE	*cin, *cout;

char *
hookup(host, port)
	const char *host;
	int port;
{
	struct hostent *hp = NULL;
	int s, len, tos;
	static char hostnamebuf[MAXHOSTNAMELEN];

	memset((void *)&hisctladdr, 0, sizeof(hisctladdr));
	if (inet_aton(host, &hisctladdr.sin_addr) != 0) {
		hisctladdr.sin_family = AF_INET;
		(void) strncpy(hostnamebuf, host, sizeof(hostnamebuf));
	} else {
		hp = gethostbyname(host);
		if (hp == NULL) {
			warnx("%s: %s", host, hstrerror(h_errno));
			code = -1;
			return ((char *) 0);
		}
		hisctladdr.sin_family = hp->h_addrtype;
		memcpy(&hisctladdr.sin_addr, hp->h_addr_list[0], 
			MIN(hp->h_length,sizeof(hisctladdr.sin_addr)));
		(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) {
		warn("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;
			char *ia;

			ia = inet_ntoa(hisctladdr.sin_addr);
			errno = oerrno;
			warn("connect to address %s", ia);
			hp->h_addr_list++;
			memcpy(&hisctladdr.sin_addr, hp->h_addr_list[0], 
				MIN(hp->h_length,sizeof(hisctladdr.sin_addr)));
			printf("Trying %s...\n",
			    inet_ntoa(hisctladdr.sin_addr));
			(void)close(s);
			s = socket(hisctladdr.sin_family, SOCK_STREAM, 0);
			if (s < 0) {
				warn("socket");
				code = -1;
				return (0);
			}
			continue;
		}
		warn("connect");
		code = -1;
		goto bad;
	}
	len = sizeof(myctladdr);
	if (getsockname(s, (struct sockaddr *)&myctladdr, &len) < 0) {
		warn("getsockname");
		code = -1;
		goto bad;
	}
#ifdef IP_TOS
	tos = IPTOS_LOWDELAY;
	if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos, sizeof(int)) < 0)
		warn("setsockopt TOS (ignored)");
#endif
	cin = fdopen(s, "r");
	cout = fdopen(s, "w");
	if (cin == NULL || cout == NULL) {
		warnx("fdopen failed.");
		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) {
			warn("setsockopt");
		}
	}
#endif /* SO_OOBINLINE */

	return (hostname);
bad:
	(void)close(s);
	return ((char *)0);
}

void
cmdabort(notused)
	int notused;
{

	alarmtimer(0);
	putchar('\n');
	(void)fflush(stdout);
	abrtflag++;
	if (ptflag)
		longjmp(ptabort, 1);
}

/*VARARGS*/
int
#ifdef __STDC__
command(const char *fmt, ...)
#else
command(va_alist)
	va_dcl
#endif
{
	va_list ap;
	int r;
	sig_t oldintr;
#ifndef __STDC__
	const char *fmt;
#endif

	abrtflag = 0;
	if (debug) {
		fputs("---> ", stdout);
#ifdef __STDC__
		va_start(ap, fmt);
#else
		va_start(ap);
		fmt = va_arg(ap, const char *);
#endif
		if (strncmp("PASS ", fmt, 5) == 0)
			fputs("PASS XXXX", stdout);
		else if (strncmp("ACCT ", fmt, 5) == 0)
			fputs("ACCT XXXX", stdout);
		else
			vprintf(fmt, ap);
		va_end(ap);
		putchar('\n');
		(void)fflush(stdout);
	}
	if (cout == NULL) {
		warnx("No control connection for command.");
		code = -1;
		return (0);
	}
	oldintr = signal(SIGINT, cmdabort);
#ifdef __STDC__
	va_start(ap, fmt);
#else
	va_start(ap);
	fmt = va_arg(ap, char *);
#endif
	vfprintf(cout, fmt, ap);
	va_end(ap);
	fputs("\r\n", cout);
	(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];		/* first line of previous reply */

int
getreply(expecteof)
	int expecteof;
{
	char current_line[BUFSIZ];	/* last line of previous reply */
	int c, n, line;
	int dig;
	int originalcode = 0, continuation = 0;
	sig_t oldintr;
	int pflag = 0;
	char *cp, *pt = pasv;

	oldintr = signal(SIGINT, cmdabort);
	for (line = 0 ;; line++) {
		dig = n = code = 0;
		cp = current_line;
		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();
				if (verbose) {
					puts(
"421 Service not available, remote server has closed connection.");
					(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((unsigned char)c))
				code = code * 10 + (c - '0');
			if (!pflag && code == 227)
				pflag = 1;
			if (dig > 4 && pflag == 1 && isdigit((unsigned char)c))
				pflag = 2;
			if (pflag == 2) {
				if (c != '\r' && c != ')' &&
				    pt < &pasv[sizeof(pasv)-1])
					*pt++ = c;
				else {
					*pt = '\0';
					pflag = 3;
				}
			}
			if (dig == 4 && c == '-') {
				if (continuation)
					code = 0;
				continuation++;
			}
			if (n == 0)
				n = c;
			if (cp < &current_line[sizeof(current_line) - 1])
				*cp++ = c;
		}
		if (verbose > 0 || (verbose > -1 && n == '5')) {
			(void)putchar(c);
			(void)fflush (stdout);
		}
		if (line == 0) {
			size_t len = (size_t)(cp - current_line);	/* cast added for EFI port */

			if (len > sizeof(reply_string))
				len = sizeof(reply_string);

			(void)strncpy(reply_string, current_line, len);
			reply_string[len] = '\0';
		}
		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();
		if (abrtflag && oldintr != cmdabort && oldintr != SIG_IGN)
			(*oldintr)(SIGINT);
		return (n - '0');
	}
}

int
empty(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;

void
abortsend(notused)
	int notused;
{

	alarmtimer(0);
	mflag = 0;
	abrtflag = 0;
	puts("\nsend aborted\nwaiting for remote to finish abort.");
	(void)fflush(stdout);
	longjmp(sendabort, 1);
}

void
sendrequest(cmd, local, remote, printnames)
	const char *cmd, *local, *remote;
	int printnames;
{
	struct stat st;
	int c, d;
	FILE *fin, *dout;
	int (*closefunc) __P((FILE *));
	sig_t oldinti, oldintr, oldintp;
	volatile off_t hashbytes;
	char *lmode, buf[BUFSIZ], *bufp;
	int oprogress;

#ifdef __GNUC__			/* XXX: to shut up gcc warnings */
	(void)&fin;
	(void)&dout;
	(void)&closefunc;
	(void)&oldinti;
	(void)&oldintr;
	(void)&oldintp;
	(void)&lmode;
#endif

	hashbytes = mark;
	direction = "sent";
	dout = NULL;
	bytes = 0;
	filesize = -1;
	oprogress = progress;
	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;
	oldinti = NULL;
	lmode = "w";
	if (setjmp(sendabort)) {
		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);
		if (oldinti)
			(void)signal(SIGINFO, oldinti);
		code = -1;
		goto cleanupsend;
	}
	oldintr = signal(SIGINT, abortsend);
	oldinti = signal(SIGINFO, psummary);
	if (strcmp(local, "-") == 0) {
		fin = stdin;
		progress = 0;
	} else if (*local == '|') {
		oldintp = signal(SIGPIPE, SIG_IGN);
		fin = popen(local + 1, "r");
		if (fin == NULL) {
			warn("%s", local + 1);
			(void)signal(SIGINT, oldintr);
			(void)signal(SIGPIPE, oldintp);
			(void)signal(SIGINFO, oldinti);
			code = -1;
			goto cleanupsend;
		}
		progress = 0;
		closefunc = pclose;
	} else {
		fin = fopen(local, "r");
		if (fin == NULL) {
			warn("local: %s", local);
			(void)signal(SIGINT, oldintr);
			(void)signal(SIGINFO, oldinti);
			code = -1;
			goto cleanupsend;
		}
		closefunc = fclose;
		if (fstat(fileno(fin), &st) < 0 || !S_ISREG(st.st_mode)) {
			printf("%s: not a plain file.\n", local);
			(void)signal(SIGINT, oldintr);
			(void)signal(SIGINFO, oldinti);
			fclose(fin);
			code = -1;
			goto cleanupsend;
		}
		filesize = st.st_size;
	}
	if (initconn()) {
		(void)signal(SIGINT, oldintr);
		(void)signal(SIGINFO, oldinti);
		if (oldintp)
			(void)signal(SIGPIPE, oldintp);
		code = -1;
		if (closefunc != NULL)
			(*closefunc)(fin);
		goto cleanupsend;
	}
	if (setjmp(sendabort))
		goto abort;

	if (restart_point &&
	    (strcmp(cmd, "STOR") == 0 || strcmp(cmd, "APPE") == 0)) {
		int rc;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
18成人在线观看| 丝袜美腿成人在线| 日韩一级片在线观看| av中文一区二区三区| 久久成人免费日本黄色| 一区二区三区在线观看欧美| 精品国产伦一区二区三区免费| 91网站最新地址| 国产成人aaa| 久久不见久久见免费视频1| 亚洲成人7777| 亚洲人成7777| 国产精品久久国产精麻豆99网站| 精品国产一区二区三区久久久蜜月| 在线欧美小视频| 色婷婷国产精品| 国产91精品入口| 国产福利精品导航| 激情五月婷婷综合网| 日韩高清不卡一区二区三区| 一区二区三区日韩精品| 国产精品乱人伦中文| 国产夜色精品一区二区av| 日韩精品一区二区三区在线 | 亚洲一区二区不卡免费| 中文字幕免费不卡| 久久久精品人体av艺术| 日韩欧美视频一区| 日韩欧美第一区| 制服丝袜亚洲网站| 欧美精品久久天天躁| 欧美日韩一级大片网址| 91久久香蕉国产日韩欧美9色| av爱爱亚洲一区| 成人精品电影在线观看| 成人黄色av网站在线| 国产成人精品免费| 丁香一区二区三区| 成人短视频下载| 本田岬高潮一区二区三区| 成人三级在线视频| 成人美女在线视频| 99精品1区2区| 在线看日本不卡| 欧美色老头old∨ideo| 91精选在线观看| 日韩欧美一二三| 精品精品欲导航| 国产色综合一区| 国产蜜臀97一区二区三区| 国产三级精品三级| 国产精品精品国产色婷婷| 亚洲免费观看在线观看| 一区二区三区精品| 日本中文一区二区三区| 韩国一区二区三区| 不卡欧美aaaaa| 在线国产亚洲欧美| 日韩亚洲欧美一区| 国产精品美女视频| 欧美亚洲综合色| 成人网在线免费视频| 91在线一区二区| 欧美丝袜丝交足nylons图片| 欧美男男青年gay1069videost | 久久99国产精品麻豆| 成人免费毛片a| 欧美亚洲图片小说| 精品久久国产老人久久综合| 中文字幕电影一区| 调教+趴+乳夹+国产+精品| 国内国产精品久久| 色综合欧美在线视频区| 91精品久久久久久蜜臀| 国产欧美精品一区二区色综合| 亚洲欧美一区二区不卡| 视频一区二区三区入口| 国产·精品毛片| 制服丝袜国产精品| 国产精品美女久久久久久久| 午夜av电影一区| 成人黄色片在线观看| 777色狠狠一区二区三区| 国产精品美女一区二区| 日本成人中文字幕| 成人午夜激情片| 欧美喷潮久久久xxxxx| 国产精品毛片a∨一区二区三区| 五月天亚洲婷婷| 91丨porny丨中文| 亚洲精品一线二线三线| 亚洲综合偷拍欧美一区色| 国产福利电影一区二区三区| 欧美日本一区二区三区四区| 中文字幕一区二区三区在线观看| 免费在线成人网| 欧美亚洲动漫制服丝袜| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美视频一二三区| 国产精品丝袜一区| 国模冰冰炮一区二区| 在线播放91灌醉迷j高跟美女| 国产精品美女一区二区在线观看| 久久成人免费网| 亚洲欧美日韩中文播放| 奇米精品一区二区三区四区| 91久久久免费一区二区| 国产精品少妇自拍| 国内精品免费在线观看| 91精品黄色片免费大全| 亚洲一区二区三区不卡国产欧美| 成人开心网精品视频| wwwwxxxxx欧美| 免费三级欧美电影| 欧美日韩高清一区二区不卡| 中文字幕一区二区三区av| 国产成人鲁色资源国产91色综| 欧美一级理论片| 视频一区中文字幕| 在线视频国内一区二区| 最新高清无码专区| 99re亚洲国产精品| 中文字幕欧美激情| 成人精品免费看| 国产午夜三级一区二区三| 激情av综合网| 久久综合九色欧美综合狠狠| 久久精品国产精品青草| 日韩天堂在线观看| 秋霞影院一区二区| 日韩免费视频一区| 国内国产精品久久| 国产亚洲成av人在线观看导航| 国内精品伊人久久久久影院对白| 日韩欧美123| 久久爱www久久做| 久久综合九色综合97_久久久| 国产美女精品一区二区三区| 久久综合久久综合九色| 国产91丝袜在线18| 最新国产成人在线观看| 色婷婷av一区二区| 亚洲韩国精品一区| 日韩亚洲欧美一区| 国产一区二区美女诱惑| 国产片一区二区三区| 99综合电影在线视频| 亚洲激情在线播放| 欧美日韩高清影院| 精品一区二区三区在线视频| 久久综合色综合88| av不卡在线观看| 亚洲电影一级片| 精品久久人人做人人爽| 不卡一区中文字幕| 亚洲国产婷婷综合在线精品| 91精品国产手机| 国产成人免费视频网站高清观看视频 | 亚洲卡通动漫在线| 91精品国产91久久综合桃花 | 欧美中文字幕亚洲一区二区va在线| 午夜精品一区二区三区免费视频 | 97久久精品人人做人人爽50路| 一区二区视频免费在线观看| 欧美电影一区二区| 国产一区 二区| 一区二区国产盗摄色噜噜| 日韩三区在线观看| 成人午夜精品在线| 午夜精品成人在线视频| 久久久国产午夜精品 | 91精品蜜臀在线一区尤物| 国产精品一区二区在线观看网站 | 中文字幕亚洲一区二区av在线| 欧美综合亚洲图片综合区| 麻豆精品久久久| 亚洲天堂福利av| 日韩三级精品电影久久久 | 东方aⅴ免费观看久久av| 亚洲国产另类av| 国产欧美日本一区视频| 欧美精品在线一区二区| 国产xxx精品视频大全| 一区二区三区自拍| 久久精品视频网| 制服.丝袜.亚洲.另类.中文| 成人h动漫精品| 激情久久五月天| 五月天亚洲婷婷| 成人免费一区二区三区在线观看| 日韩欧美国产综合在线一区二区三区| av高清久久久| 国产乱理伦片在线观看夜一区| 亚洲国产日韩一区二区| 国产精品短视频| 久久综合成人精品亚洲另类欧美| 欧美日韩一区二区在线观看视频 | 亚洲第一久久影院| 中文字幕日韩av资源站| 精品欧美乱码久久久久久|