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

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

?? main.c

?? linux下ftp client程序的源碼
?? C
字號:
/* * Copyright (c) 1985, 1989, 1993, 1994, 2002 *	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. */#if 0static char sccsid[] = "@(#)main.c	8.6 (Berkeley) 10/9/94";#endif/* * FTP User Program -- Command Interface. */#ifdef HAVE_CONFIG_H#include <config.h>#endif/*#include <sys/ioctl.h>*/#include <sys/types.h>#include <sys/socket.h>#include <arpa/ftp.h>#include <ctype.h>#include <error.h>#include <netdb.h>#include <pwd.h>#include <signal.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <getopt.h>/* Define macro to nothing so declarations in ftp_var.h become definitions. */#define FTP_EXTERN#include "ftp_var.h"#if HAVE_READLINE_READLINE_H# include <readline/readline.h>#endifchar *program_name;#define DEFAULT_PROMPT "ftp> "static char *prompt = 0;static voidusage (int err){  if (err != 0)    {      fprintf (stderr, "Usage: %s [OPTION...] [HOST [PORT]]\n", program_name);      fprintf (stderr, "Try `%s --help' for more information.\n", program_name);    }  else    {      fprintf (stdout, "Usage: %s [OPTION...] [HOST [PORT]]\n", program_name);      puts ("Remote file transfer.\n\n\  -d, --debug                Turn on debugging mode\n\  -g, --no-glob              Turn off file name globbing\n\  -i, --no-prompt            Don't prompt during multiple-file transfers\n\  -n, --no-login             Don't automatically login to the remove system\n\  -t, --trace                Enable packet tracing\n\  -p, --prompt[=PROMPT]      Print a command-line prompt (optionally PROMPT),\n\                             even if not on a tty\n\  -v, --verbose              Be verbose\n\      --help                 Give this help list\n\  -V, --version              Print program version");      fprintf (stdout, "\nSubmit bug reports to %s.\n", PACKAGE_BUGREPORT);    }  exit (err);}static const char *short_options = "dginp::tv";static struct option long_options[] ={  { "trace", no_argument, 0, 't' },  { "verbose", no_argument, 0, 'v' },  { "no-login", no_argument, 0, 'n' },  { "no-prompt", no_argument, 0, 'i' },  { "debug", no_argument, 0, 'd' },  { "no-glob", no_argument, 0, 'g' },  { "help", no_argument, 0, '&' },  { "prompt", optional_argument, 0, 'p' },  { "version", no_argument, 0, 'V' },  { 0 }};intmain (int argc, char *argv[]){  int ch, top;  struct passwd *pw = NULL;  char *cp;  program_name = argv[0];  sp = getservbyname ("ftp", "tcp");  if (sp == 0)    error (1, 0, "ftp/tcp: unknown service");  doglob = 1;  interactive = 1;  autologin = 1;  while ((ch = getopt_long (argc, argv, short_options, long_options, 0))	 != EOF)    {      switch (ch) {      case 'd': /* Enable ebug mode.  */	options |= SO_DEBUG;	debug++;	break;      case 'g': /* No glob.  */	doglob = 0;	break;      case 'i': /* No prompt.  */	interactive = 0;	break;      case 'n': /* No automatic login.  */	autologin = 0;	break;      case 't': /* Enable packet tracing.  */	trace++;	break;      case 'v': /* Verbose.  */	verbose++;	break;      case 'p': /* Print command line prompt.  */	prompt = optarg ? optarg : DEFAULT_PROMPT;	break;      case '&': /* Usage.  */	usage (0);	/* Not reached.  */      case 'V': /* Version.  */	printf ("ftp (%s) %s\n", PACKAGE_NAME, PACKAGE_VERSION);	exit (0);      case '?':      default:	usage (1);	/* Not reached.  */      }    }  argc -= optind;  argv += optind;  fromatty = isatty (fileno (stdin));  if (fromatty)    {      verbose++;      if (! prompt)	prompt = DEFAULT_PROMPT;    }  cpend = 0;	/* no pending replies */  proxy = 0;	/* proxy not active */  passivemode = 0; /* passive mode 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)    {      char *buf = malloc (strlen (pw->pw_dir) + 1);      if (buf)	{	  strcpy (buf, pw->pw_dir);	  home = buf;	}    }  if (argc > 0)    {      char *xargv[5];      if (setjmp (toplevel))	exit (0);      signal(SIGINT, intr);      signal(SIGPIPE, lostpeer);      xargv[0] = program_name;      xargv[1] = argv[0];      xargv[2] = argv[1];      xargv[3] = argv[2];      xargv[4] = NULL;      setpeer (argc+1, xargv);    }  top = setjmp (toplevel) == 0;  if (top)    {      signal (SIGINT, intr);      signal (SIGPIPE, lostpeer);    }  for (;;)    {      cmdscanner(top);      top = 1;    }}RETSIGTYPEintr (int sig ARG_UNUSED){  longjmp (toplevel, 1);}RETSIGTYPElostpeer (int sig ARG_UNUSED){  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;{	char *s;	while (*filename) {		s = strrchr(filename, '/');		if (s == NULL)			break;		if (s[1])			return (s + 1);		*s = '\0';	}	return (filename);}*//* * Command parser. */voidcmdscanner (int top){  struct cmd *c;  int l;  if (!top)    putchar ('\n');  for (;;)    {#if HAVE_LIBREADLINE      if (line)	{	  free (line);	  line = 0;	}      line = readline (prompt);      if (!line)	quit (0, 0);      l = strlen (line);      if (l >= MAXLINE)        {          printf("Line too long.\n");          break;        }      if (line && *line)	add_history (line);      if (l == 0)	break;#else      if (prompt)	{	  printf ("%s",prompt);	  fflush(stdout);	}      if (fgets (line, sizeof line, stdin) == NULL)	quit(0, 0);      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 */#endif      makeargv ();      if (margc == 0)	continue;      c = getcmd (margv[0]);      if (c == (struct cmd *) -1)	{	  printf ("?Ambiguous command\n");	  continue;	}      if (c == 0)	{	  printf ("?Invalid command\n");	  continue;	}      if (c->c_conn && !connected)	{	  printf ("Not connected.\n");	  continue;	}      (*c->c_handler) (margc, margv);      if (bell && c->c_bell)	putchar('\007');      if (c->c_handler != help)	break;    }  signal (SIGINT, intr);  signal (SIGPIPE, lostpeer);}/* * Slice a string up into argc/argv. */int slrflag;voidmakeargv (){  char **argp;  margc = 0;  argp = margv;  stringbase = line;		/* scan from first of buffer */  argbase = argbuf;		/* store from first of buffer */  slrflag = 0;  while ((*argp++ = slurpstring ()))    margc++;}/* * Parse string into argbuf; * implemented with FSM to * handle quoting and strings */char *slurpstring (){  int got_one = 0;  char *sb = stringbase;  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 == '!') ? "!" : "$");	/* 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 = (char *) 0;      break;    default:      break;    }  return ((char *) 0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费在线欧美视频| 欧美日本韩国一区二区三区视频 | 国产麻豆欧美日韩一区| 欧美一级高清大全免费观看| 久久无码av三级| 亚洲国产欧美另类丝袜| 国产精品一区二区三区乱码| 欧美三级视频在线播放| 中文字幕欧美激情一区| 午夜av一区二区三区| 福利电影一区二区| 日韩午夜在线影院| 亚洲一区二区在线播放相泽| 成人综合激情网| 91精品国产日韩91久久久久久| 国产精品久久久一区麻豆最新章节| 五月婷婷久久丁香| 99riav久久精品riav| 久久五月婷婷丁香社区| 天天射综合影视| 欧洲av在线精品| 国产精品久久久久久久久免费丝袜 | 亚洲国产精品久久艾草纯爱| 国产91在线|亚洲| 精品日本一线二线三线不卡| 视频一区视频二区在线观看| 91久久免费观看| 国产精品久久久久国产精品日日| 国产主播一区二区| 精品福利av导航| 蜜臀av一区二区在线观看| 欧美日韩黄色影视| 亚洲在线视频一区| 精品欧美一区二区三区精品久久| 一区二区三区不卡在线观看| 91香蕉国产在线观看软件| 国产精品天天看| 粉嫩aⅴ一区二区三区四区| 久久久美女毛片| 国产一区二区三区四| 精品日韩在线观看| 国模套图日韩精品一区二区| 精品sm在线观看| 国产在线精品免费av| 久久久久免费观看| 国产精品一区二区x88av| 久久久久久久综合日本| 国产精品456| 国产精品私人影院| bt欧美亚洲午夜电影天堂| 中文字幕日韩av资源站| 色偷偷久久人人79超碰人人澡| 亚洲精品久久久久久国产精华液| 色婷婷精品久久二区二区蜜臀av| 一区二区国产视频| 7777精品伊人久久久大香线蕉的| 日韩电影免费在线| 久久综合五月天婷婷伊人| 国产高清不卡二三区| 亚洲三级在线观看| 777午夜精品免费视频| 久久精品国产久精国产爱| 久久亚洲私人国产精品va媚药| 成人午夜看片网址| 亚洲最大成人综合| 欧美一区二区三区视频免费 | 中文字幕在线视频一区| 欧美性一二三区| 久久99热这里只有精品| 国产精品毛片高清在线完整版| 91浏览器在线视频| 久久福利资源站| 成人欧美一区二区三区黑人麻豆 | 在线视频中文字幕一区二区| 免费观看91视频大全| 亚洲国产精品成人综合色在线婷婷 | 国产精品久久精品日日| 91亚洲精品乱码久久久久久蜜桃| 午夜亚洲国产au精品一区二区| 精品国产91乱码一区二区三区| 92国产精品观看| 九九国产精品视频| 亚洲女同女同女同女同女同69| 欧美片网站yy| 成人精品国产一区二区4080| 日韩激情一区二区| 中文字幕一区三区| 欧美白人最猛性xxxxx69交| 色8久久人人97超碰香蕉987| 国产麻豆视频一区| 日韩av成人高清| 一区二区三区中文字幕| 久久久国产精品午夜一区ai换脸| 精品视频色一区| av电影一区二区| 激情图区综合网| 婷婷中文字幕综合| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩一区二区在线观看视频| 欧美私模裸体表演在线观看| 成人激情电影免费在线观看| 捆绑变态av一区二区三区| 亚洲一区二区三区在线播放| 国产精品美女视频| 久久精品视频一区二区三区| 欧美福利视频一区| 欧美少妇一区二区| 97久久精品人人做人人爽| 国产91精品欧美| 国产一区二区剧情av在线| 久久精品国产精品亚洲红杏| 天堂成人免费av电影一区| 一区二区激情小说| 亚洲综合在线视频| 亚洲在线一区二区三区| 一区二区三区欧美激情| 亚洲精品videosex极品| 亚洲欧美韩国综合色| |精品福利一区二区三区| 国产精品沙发午睡系列990531| 国产女人18毛片水真多成人如厕| 精品国产免费久久| 精品福利视频一区二区三区| 欧美大片日本大片免费观看| 日韩欧美一区二区不卡| 国产精品久久久久四虎| 中文字幕制服丝袜成人av| 日本一区二区高清| 亚洲三级电影全部在线观看高清| 国产精品久久久久久久久免费桃花 | 亚洲你懂的在线视频| 亚洲免费av高清| 亚洲成人自拍网| 偷拍与自拍一区| 蜜臀国产一区二区三区在线播放| 激情综合色综合久久| 国产综合色产在线精品| 高清久久久久久| 国产91在线观看丝袜| 色综合咪咪久久| 欧美日本乱大交xxxxx| 精品人在线二区三区| 国产精品视频一二三区 | 久久你懂得1024| 中文无字幕一区二区三区| 亚洲欧美另类在线| 日韩不卡在线观看日韩不卡视频| 免费精品视频在线| 成人午夜碰碰视频| 欧洲生活片亚洲生活在线观看| 51精品秘密在线观看| 精品国产乱码久久久久久免费| 中文字幕欧美三区| 亚洲一二三区视频在线观看| 久久激情五月婷婷| 99视频在线精品| 91麻豆精品91久久久久久清纯| xnxx国产精品| 一区二区三区四区亚洲| 麻豆传媒一区二区三区| 日韩一区二区三区电影在线观看 | 精品区一区二区| 亚洲色图欧美偷拍| 美女网站一区二区| 99视频一区二区| 精品久久久三级丝袜| 亚洲视频免费观看| 国产一区二区三区不卡在线观看| 99国产精品久| 亚洲精品一区二区三区香蕉| 亚洲欧美日韩综合aⅴ视频| 久久国产精品99久久久久久老狼| 99久久99精品久久久久久| 日韩欧美中文字幕一区| 亚洲女人****多毛耸耸8| 精品无人码麻豆乱码1区2区| 欧美在线观看一二区| 欧美国产一区在线| 久久91精品久久久久久秒播| 色婷婷综合久久久中文字幕| 久久精品人人做人人综合| 天天影视色香欲综合网老头| 色综合中文综合网| 色综合中文字幕国产| 欧美精品一区二区不卡| 五月激情六月综合| 色欧美88888久久久久久影院| 亚洲精品一区二区三区影院| 亚洲va在线va天堂| 日本道色综合久久| 国产精品的网站| 国产在线精品一区二区夜色| 欧美一区二区免费视频| 亚洲高清免费观看| 色呦呦日韩精品| 自拍偷在线精品自拍偷无码专区 | 欧美日韩在线播放| 亚洲激情中文1区| 色呦呦一区二区三区| 亚洲欧美日韩国产综合|