⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftpdir.c

📁 在ftplib-3.1-1-linux.tar.gz,修改了一个BUG,和增加了一个函数
💻 C
字号:
/***************************************************************************//*									   *//* ftpdir.c - perform a remote directory via ftplib                        *//* Copyright (C) 1996, 1997 Thomas Pfau, pfau@cnj.digex.net                *//*	73 Catherine Street, South Bound Brook, NJ, 08880		   *//*									   *//* This program is free software; you can redistribute it and/or    	   *//* modify it under the terms of the GNU General Public License		   *//* as published by the Free Software Foundation; either version 2	   *//* of the License, or (at your option) any later version.		   *//*		   							   *//* This program is distributed in the hope that it will be useful,	   *//* but WITHOUT ANY WARRANTY; without even the implied warranty of	   *//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the	   *//* GNU General Public License for more details. 			   *//*							   		   *//* You should have received a copy of the GNU General Public License	   *//* along with this progam; if not, write to the Free Software  		   *//* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA		   *//* 02111-1307, USA.							   *//*									   *//***************************************************************************/#if defined(__unix__)#include <unistd.h>#elif defined(_WIN32)#include <windows.h>#endif#include <stdio.h>#include <stdlib.h>#include "ftplib.h"#if defined(__unix__)#define ENV_USER "USER"#elif defined(_WIN32)#include "getopt.h"#define ENV_USER "USERNAME"#endifstatic void usage(char *cmd){    printf("%s <host> [filespec] [-l <username>] [-p <password]\n",cmd);    exit(2);}static int ftpdir(char *host, char *user, char *pass, char *root, char *fspec){    if (!ftpOpen(host))    {	fprintf(stderr,"Unable to connect to node %s\n%s",host,ftplib_lastresp);	return 0;    }    if (!ftpLogin(user,pass))    {	fprintf(stderr,"Login failure\n%s",ftplib_lastresp);	return 0;    }    if (root != NULL)    {	if (!ftpChdir(root))	{	    fprintf(stderr,"Change directory failed\n%s",ftplib_lastresp);	    return 0;	}    }    if (!ftpNlst(NULL,fspec))    {	fprintf(stderr,"Directory failure\n%s",ftplib_lastresp);	return 0;    }    ftpQuit();    return 1;}void main(int argc, char *argv[]){    char *host = NULL;    char *user = NULL;    char *pass = NULL;    char *root = NULL;    char mode;    char *fspec = NULL;    int opt;    int i;    while ((opt = getopt(argc,argv,"ail:p:r:v:")) != -1)    {	if (opt == '?')	{	    fprintf(stderr,"Unknown option %s\n",argv[optind]);	    exit(2);	}	switch (optopt)	{	  case 'a' : mode = 'A'; break;	  case 'i' : mode = 'I'; break;	  case 'l' :	    if (opt == ':')	    {		fprintf(stderr,"Missing value for -l\n");		exit(2);	    }	    user = optarg;	    break;	  case 'p' :	    if (opt == ':')	    {		fprintf(stderr,"Missing value for -p\n");		exit(2);	    }	    pass = optarg;	    break;	  case 'r' :	    if (opt == ':')	    {		fprintf(stderr,"Missing value for -r\n");		exit(2);	    }	    root = optarg;	    break;	  case 'v' :	    if (opt == ':')		ftplib_debug++;	    else		ftplib_debug = atoi(optarg);	    break;	}    }    for (i=1;i<argc;i++)    {	if (*argv[i] == '-')	{	    switch (argv[i][1])	    {	      case 'l':		user = argv[++i];		break;	      case 'p':		pass = argv[++i];		break;	      case 'd':		ftplib_debug++;		break;	      case 'r':		root = argv[++i];		break;	      default:		usage(argv[0]);	    }	}	else if (host == NULL)	    host = argv[i];	else if (fspec == NULL)	    fspec = argv[i];	else	    usage(argv[0]);    }    ftpInit();    if (user == NULL)    {	user = "anonymous";	if (pass == NULL)	{	    char *u,h[64];	    u = getenv(ENV_USER);	    if (gethostname(h,64) < 0)	    {		perror("gethostname");		exit(2);	    }	    if ((u != NULL) && (h != NULL))	    {		static char xxx[64];		sprintf(xxx,"%s@%s",u,h);		pass = xxx;	    }	}    }    if ((host == NULL) || (user == NULL) || (pass == NULL))	usage(argv[0]);    if (!ftpdir(host,user,pass,root,fspec))	exit(2);    exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -