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

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

?? main.c

?? 一個FTP工具C源碼.zip. 可以完成大部分功能.
?? 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 <err.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"/* basename (argv[0]).  NetBSD, linux, & gnu libc all define it.  */extern char *__progname;#define DEFAULT_PROMPT "ftp> "static char *prompt = 0;static voidusage (int err){  if (err != 0)    {      fprintf (stderr, "Usage: %s [OPTION...] [HOST [PORT]]\n", __progname);      fprintf (stderr, "Try `%s --help' for more information.\n", __progname);    }  else    {      fprintf (stdout, "Usage: %s [OPTION...] [HOST [PORT]]\n", __progname);      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;#ifndef HAVE___PROGNAME  __progname = argv[0];#endif  sp = getservbyname ("ftp", "tcp");  if (sp == 0)    errx (1, "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);      (void) signal(SIGINT, intr);      (void) signal(SIGPIPE, lostpeer);      xargv[0] = __progname;      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)    {      (void) signal (SIGINT, intr);      (void) signal (SIGPIPE, lostpeer);    }  for (;;)    {      cmdscanner(top);      top = 1;    }}voidintr (int sig){  longjmp (toplevel, 1);}voidlostpeer (int sig){  if (connected)    {      if (cout != NULL)	{	  (void) shutdown (fileno (cout), 1+1);	  (void) fclose (cout);	  cout = NULL;	}      if (data >= 0)	{	  (void) shutdown (data, 1+1);	  (void) close (data);	  data = -1;	}      connected = 0;    }  pswitch (1);  if (connected)    {      if (cout != NULL)	{	  (void) shutdown (fileno(cout), 1+1);	  (void) 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)    (void) putchar ('\n');  for (;;)    {#if HAVE_LIBREADLINE      if (line)	{	  free (line);	  line = 0;	}      line = readline (prompt);      if (!line)	quit (0, 0);      if (line && *line)	add_history (line);      l = strlen (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)	(void) putchar('\007');      if (c->c_handler != help)	break;    }  (void) signal (SIGINT, intr);  (void) signal (SIGPIPE, lostpeer);}struct cmd *getcmd (char *name){  char *p, *q;  struct cmd *c, *found;  int nmatches, longest;  longest = 0;  nmatches = 0;  found = 0;  for (c = cmdtab; (p = c->c_name); 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;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);}#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, 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)    {      char *arg;      arg = *++argv;      c = getcmd(arg);      if (c == (struct cmd *)-1)	printf("?Ambiguous help command %s\n", arg);      else if (c == (struct cmd *)0)	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一区二区三区免费野_久草精品视频
欧美这里有精品| 成人av电影在线观看| 日韩一区二区电影| 秋霞午夜av一区二区三区| 欧美一区二区三区免费观看视频 | 日韩在线一二三区| 欧美一区二区在线播放| 蜜臀av性久久久久av蜜臀妖精| 精品少妇一区二区三区日产乱码 | 国产一区二区三区高清播放| 久久伊人中文字幕| 成人免费的视频| 一区二区三区欧美久久| 欧美日本在线看| 久久精品国产精品青草| 国产精品入口麻豆原神| 欧美中文字幕不卡| 精品综合久久久久久8888| 中文在线一区二区| 精品污污网站免费看| 久久精品国产秦先生| 自拍偷自拍亚洲精品播放| 欧美日韩美少妇| 国产美女久久久久| 亚洲一二三四区| 精品成a人在线观看| 91小视频在线| 蜜桃久久久久久久| 国产精品不卡在线| 3d动漫精品啪啪一区二区竹菊| 国产高清不卡一区| 亚洲mv在线观看| 国产欧美一区二区三区沐欲| 欧美亚洲国产一区在线观看网站| 久久国产福利国产秒拍| 亚洲三级理论片| 欧美一区二区三区色| 一本一本久久a久久精品综合麻豆| 麻豆精品国产传媒mv男同| 中文字幕高清不卡| 91麻豆精品国产91久久久久久久久 | 欧美在线不卡视频| 国内成人自拍视频| 亚洲成人激情社区| 中文字幕日韩一区| 2020国产精品自拍| 91精品国产全国免费观看| 成人99免费视频| 精品夜夜嗨av一区二区三区| 一区二区三区丝袜| 国产欧美精品一区二区三区四区| 欧美三级蜜桃2在线观看| 成人美女在线观看| 国产在线播放一区三区四| 三级欧美在线一区| 一区二区三区四区精品在线视频| 日本一区二区三区在线观看| 日韩欧美一区二区不卡| 欧美性生活影院| www.欧美精品一二区| 国产精品一区二区黑丝| 喷水一区二区三区| 五月婷婷欧美视频| 亚洲一区二区欧美| 一区二区三区欧美视频| 亚洲免费在线看| 中文字幕在线一区二区三区| 亚洲精品一区二区三区精华液 | 欧美一区二区在线看| 欧美色综合网站| 色婷婷综合久久久久中文一区二区 | 亚洲情趣在线观看| 国产精品国产三级国产aⅴ入口| 2021国产精品久久精品| 2021国产精品久久精品| 久久先锋资源网| www久久精品| 久久久亚洲欧洲日产国码αv| 26uuu久久综合| 国产亚洲欧美一区在线观看| 久久精品一区八戒影视| 国产色综合久久| 国产精品无遮挡| 亚洲欧美日韩在线播放| 亚洲视频一区在线观看| 亚洲综合激情网| 日韩精品欧美精品| 精品一区二区三区蜜桃| 国内精品写真在线观看| 国产成人在线影院 | 亚洲国产综合人成综合网站| 亚洲国产日韩在线一区模特| 亚洲国产毛片aaaaa无费看 | 国产成人精品免费在线| 成人app在线观看| 在线国产电影不卡| 91精品国产综合久久精品图片| 日韩一区二区在线观看视频播放| 欧美va日韩va| 国产精品欧美一区二区三区| 亚洲欧美影音先锋| 亚洲午夜在线观看视频在线| 免费成人在线网站| 国产成人三级在线观看| 91在线国内视频| 欧美一区二区三区免费在线看 | 老司机一区二区| 成人国产在线观看| 欧美久久久久久久久中文字幕| 欧美成人a在线| 专区另类欧美日韩| 日韩一区精品字幕| 丁香婷婷深情五月亚洲| 欧美日韩色综合| 久久精品亚洲一区二区三区浴池| 亚洲欧美激情一区二区| 蜜臂av日日欢夜夜爽一区| 成人精品视频一区二区三区 | 国产福利一区二区三区视频| 91女厕偷拍女厕偷拍高清| 欧美日韩高清一区二区三区| 久久久亚洲欧洲日产国码αv| 亚洲综合男人的天堂| 韩国一区二区视频| 91国产免费观看| 国产无人区一区二区三区| 一区二区三区日韩在线观看| 国产精品18久久久久久久久| 在线观看免费亚洲| 久久婷婷色综合| 午夜精品爽啪视频| 国产suv精品一区二区6| 91麻豆精品国产91久久久资源速度| 中文字幕一区av| 激情图区综合网| 欧美精选在线播放| 亚洲欧美精品午睡沙发| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 久久精品一区八戒影视| 日韩激情av在线| 91成人免费网站| 国产精品国产a| 国产伦精一区二区三区| 日韩一区二区中文字幕| 亚洲国产毛片aaaaa无费看| 91偷拍与自偷拍精品| 国产亚洲精品bt天堂精选| 蜜臀va亚洲va欧美va天堂 | 欧美一区二区在线视频| 亚洲影视在线播放| 色悠悠亚洲一区二区| 中文字幕高清不卡| 国产91精品一区二区麻豆网站| 欧美大尺度电影在线| 五月天激情小说综合| 色哟哟一区二区在线观看 | 亚洲男人的天堂一区二区| 成人av在线资源| 国产午夜精品一区二区三区嫩草| 毛片av一区二区| 日韩欧美电影一区| 蜜桃视频在线观看一区| 日韩午夜电影av| 免费观看久久久4p| 日韩美女一区二区三区四区| 日本伊人色综合网| 欧美一级国产精品| 蜜臀精品久久久久久蜜臀| 日韩欧美成人激情| 久国产精品韩国三级视频| 精品国产不卡一区二区三区| 国产一区二区主播在线| 国产欧美va欧美不卡在线| 成人国产精品免费观看| 亚洲丝袜精品丝袜在线| 在线观看av一区二区| 婷婷六月综合网| 日韩一级片网站| 激情文学综合丁香| 国产色一区二区| 91在线视频免费观看| 亚洲二区在线观看| 日韩天堂在线观看| 精品一区二区三区日韩| 欧美国产精品v| 91黄色免费看| 免费在线观看精品| 久久精品水蜜桃av综合天堂| 91污片在线观看| 日韩中文字幕一区二区三区| 精品国偷自产国产一区| 国产91在线观看丝袜| 亚洲男人天堂一区| 欧美一区二区三区喷汁尤物| 国产成人在线视频网站| 亚洲色大成网站www久久九九| 欧美日韩久久久| 国产一区二区福利| 艳妇臀荡乳欲伦亚洲一区| 欧美大片一区二区三区|