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

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

?? console_fe.c

?? 站點映像程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
 /*    sitecopy, for managing remote web sites.   Copyright (C) 1998-99, Joe Orton <joe@orton.demon.co.uk>                                                                        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 program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.   $Id: console_fe.c,v 1.29.2.7 1999/08/19 22:09:27 joe Exp $*//* This is the console front end for sitecopy. * TODO: Some of the configuration stuff should be moved out of here. */#include <config.h>#include <sys/types.h>#include <sys/param.h>#include <sys/stat.h>#include <stdio.h>#ifdef HAVE_STRING_H#include <string.h>#endif#ifdef HAVE_STRINGS_H#include <strings.h>#endif #ifdef HAVE_STDLIB_H#include <stdlib.h>#endif /* HAVE_STDLIB_H */#ifdef HAVE_UNISTD_H#include <unistd.h>#endif /* HAVE_UNISTD_H */#include <signal.h>#include <time.h>#include <getopt.h>#include <basename.h>#ifdef ENABLE_NLS#include <libintl.h>#define _(str) gettext(str)#else#define _(str) str#endif /* ENABLE_NLS */#include "frontend.h"#include "sites.h"#include "rcfile.h"#include "common.h"/* From lib/yesno.c */int yesno(void);/* The maximum number of sites which can be specified on the command * line */#define MAXSITES 20enum action_t {    action_none,    action_list,    action_synch,    action_fetch,    action_update,    action_catchup,    action_init,    action_view} action;const char *action_names[] = {    NULL,    _("Showing changes to"),    _("Synchronizing"),    _("Fetching"),    _("Updating"),    _("Catching up"),    _("Initializing"),    NULL};/* The short program name, basename(argv[0]) */const char *progname;const char *sitenames[MAXSITES]; /* the sites specified on the command line */int numsites; /* the number of sites specified */struct site_t *current_site; /* this is used to save the state if we			      * get signalled mid-update */bool needsite; /* Is a site name required for the given action? *//* User-specified options */bool allsites; /* Do they want all sites to be operated on? */bool listflat; /* Do they want the 'flat' list style */int quiet; /* How quiet do they want us to be? *//* Functions prototypes */void init( int, char ** );int main( int, char ** );void usage( void );void version( void );void site_normlist( struct site_t * );#if 0bool fe_ynprompt( void );#endifvoid abort_handler( int );void site_dumpsites( void );void init_sites( void );void abort_handler( int sig ) {    /* Flush out debugging messages first */    fflush( stderr );#ifdef HAVE_STRSIGNAL    printf( _("\n\n%s: Caught signal: %s (%d)\n"), progname, 	    strsignal( sig ), sig );#else    printf( _("\n\n%s: Caught signal %d\n"), progname, sig );#endif    if( action == action_update && current_site!=NULL ) {	printf( _("%s: In site update, saving current progress... "),		progname );	fflush( stdout );	site_writefiles( current_site );	printf( _("done.\n") );    }    printf( _("%s: Terminating.\n"), progname );    exit( 15 );}/* Produce the normal listing output for the given site. */void site_normlist( struct site_t *the_site ) {    struct site_file_t *current;    int count;    if( the_site->numnew > 0 ) {	printf( _("* These items have been added since the last update:\n") );	count = 0;	for( current = the_site->files; current!=NULL; current=current->next) {	    if( current->diff == file_new ) {		if( count++ ) printf( ", " );		if( current->dir ) printf( _("dir:") );		    printf( "%s", current->rel_local);	    }	}	putchar( '\n' );    }    if( the_site->numchanged > 0 ) {	printf( _("* These items have been changed since the last update:\n"));	count = 0;	for( current = the_site->files; current!=NULL; current=current->next) {	    if( current->diff == file_changed ) {		if( count++ ) printf( ", " );		printf( "%s", current->rel_local);	    }	}	putchar( '\n' );    }    if( the_site->numdeleted > 0 ) {	if( the_site->nodelete ) {	    printf( _("* These items have been deleted, but will be left on the server:\n") );	} else {	    printf( _("* These items have been deleted since the last update:\n"));	}	count = 0;	for (current = the_site->files; current!=NULL; current=current->next) {	    if( current->diff == file_deleted ) {		if( count++ ) printf( ", " );		if( current->dir ) printf( _("dir:") );		printf( "%s", current->rel_local );	    }	}	putchar( '\n' );    }    if( the_site->nummoved > 0 ) {	printf( _("* These items have been moved since the last update:\n") );	count = 0;	for (current = the_site->files; current!=NULL; current=current->next) {	    if( current->diff == file_moved ) {		if( count++ ) printf( ", " );		printf( "%s->/%s", current->old->rel_local, 			current->directory  );	    }	}	putchar( '\n' );    }}void site_dumpsites( ) {    struct site_t *current;    for( current=all_sites; current!=NULL; current=current->next ) {	/* FIXME: Possibly, make sure we have the actual port number first	 * so we don't have to mess around printing out the port */	printf( _("Site: %s\n\tServer: %s"), current->name, current->server );	printf( _("  Port: ") );	if( current->port == 0 ) {	    printf( _("%s\n"), current->driver->service_name );	} else {	    printf( _("%d\n"), current->port );	}	printf( _("\tProtocol: %s    Username: %s\n"),		current->driver->protocol_name, current->username );	if( ! current->ftp_pasv_mode )	    printf( _("\tPassive mode FTP will not be used.\n") );	printf( _("\tRemote directory: %s\n\tLocal directory: %s\n"),		current->remote_root_user, current->local_root_user );	printf( _("\tPermissions: %s     Symlinks: %s\n"),		PERMSMODE( current ), SYMLINKSMODE( current ) );	if( current->nodelete ) 	    printf( _("\tRemote files will not be deleted.\n") );	if( current->checkmoved ) 	    printf( _("\tFiles will be moved remotely if moved locally.\n") );    }}void init( int argc, char *argv[] ) {    int optc, opt_index;    bool firstlist = false;    extern char *optarg;    extern int optind;#ifdef DEBUGGING    char *shortopts = "d:acifhklp:qr:suvVy";#else    char *shortopts = "acifhklp:qr:suvVy";#endif    const struct option longopts[] = {	/* Operation modes */	{ "update", no_argument, NULL, 'u' },	{ "initialize", no_argument, NULL, 'i' },	{ "fetch", no_argument, NULL, 'f' },	{ "synchronize", no_argument, NULL, 's' },	{ "list", no_argument, NULL, 'l' },	{ "flatlist", no_argument, &listflat, true },	{ "keep-going", no_argument, NULL, 'k' },	{ "help", no_argument, NULL, 'h' },	{ "catchup", no_argument, NULL, 'c' },	{ "view", no_argument, NULL, 'v' },	/* Options */	{ "quiet", no_argument, &quiet, 1 },	{ "silent", no_argument, &quiet, 2 },	{ "rcfile", required_argument, NULL, 'r' },	{ "storepath", required_argument, NULL, 'p' },#ifdef DEBUGGING	{ "debug", required_argument, NULL, 'd' },#endif	{ "prompting", no_argument, &fe_prompting, true },	{ "allsites", no_argument, &allsites, true },	{ "version", no_argument, NULL, 'V' },	{ 0, 0, 0, 0 }    };	#ifdef DEBUGGING    /* We need these for setting up the debugging mask from     * the command line */    extern int debug_mask;    debug_mask = 0;#endif        /* SETACTION is used to ensure only one opmode is specified     * on the command line at a time.     */#define SETACTION( newaction ) 						   \    if( action != action_none ) {					   \	printf( _("%s: Error: Only specify ONE operation mode at a time.\n"), \		progname );						   \	printf( _("Try `%s --help' for more information.\n"), progname );  \	exit( -1 );							   \    } else {								   \	action = newaction;						   \    }    /* Defaults */    allsites = fe_prompting = false;    action = action_none;    fe_prompting = false;    progname = base_name( argv[0] );    needsite = false;    /* Read the cmdline args */    while( (optc = getopt_long( argc, argv, 				shortopts, longopts, &opt_index)) != -1) {	switch( optc ) {	case 0:	    /* Make the action list mode if they gave --flatlist */	    if( listflat == true )		action = action_list;	    break;	case 'l':	    if( firstlist == false ) {		SETACTION( action_list );		firstlist = true;	    } else {		listflat = true;	    }	    break;	case 's': SETACTION( action_synch ); break;	case 'f': SETACTION( action_fetch ); break;	case 'i': SETACTION( action_init ); break;	case 'c': SETACTION( action_catchup ); break;	case 'u': SETACTION( action_update ); break;	case 'v': 	    SETACTION( action_view );	    allsites = true; /* so they get checked */	    break;	case 'q': quiet++; break;	case 'r': 	    if( strlen(optarg) != 0 ) {		rcfile = strdup( optarg );	    } else {		usage( );		exit(-1);	    }	    break;	case 'p':	    if( strlen(optarg) != 0 ) {		if( optarg[strlen(optarg)] != '/' ) {		    copypath = malloc( strlen(optarg) + 2 );		    strcpy( copypath, optarg );		    strcat( copypath, "/" );		} else {		    copypath = strdup( optarg );		}	    } else {		usage( );		exit(-1);	    }	    break;#ifdef DEBUGGING	case 'd': /* set debugging level */	    debug_mask = atoi(optarg);	    break;#endif	case 'y':	    fe_prompting = true;	    break;	case 'k':	    site_keepgoing = true;	    break;	case 'a':	    allsites = true;	    break;	case 'V': version( ); exit(-1);	case 'h': usage( ); exit(-1);	case '?': 	default:	    printf( _("Try `%s --help' for more information.\n"), progname );	    exit(-1);	}    }    /* Set the default action mode */    if( action == action_none )	action = action_list;    /* Determine whether the specified action needs a site name     * to operate on */    needsite = ((action==action_list) || (action==action_update) || \		(action==action_catchup) || (action==action_synch) || \		(action==action_fetch) || (action==action_init));        /* Get those site names off the end of the cmdline */    for( numsites = 0 ; optind < argc; optind++ ) {	sitenames[numsites++] = argv[optind];	if( numsites == MAXSITES ) {	    printf( _("%s: Warning: Only %d sites can be specified on the command line!\nExtra entries are being skipped.\n"), progname, MAXSITES );	    break;	}    }}#if 0/* Prompts for confirmation - returns */bool fe_ynprompt( ) {    char in[BUFSIZ];    fgets( in, BUFSIZ, stdin );    return (*in == 'y'); /* only return true if they put a 'y' first */}#endifbool fe_can_update( const struct site_file_t *file ) {    if( file->dir ) {	if( file->diff == file_new ) {	    printf( _("Create %s/"), file->rel_local );	} else {	    printf( _("Delete %s/"), file->rel_local );	}    } else {	switch( file->diff ) {	case file_changed:	case file_new: printf( _("Upload %s"), file->rel_local ); break;	case file_deleted: printf( _("Delete %s"), file->rel_local ); break;	case file_moved: printf( _("Move %s->/%s"), file->old->rel_local,				 file->directory ); break;	default: printf( "You've really broken it now.\n" ); break;	}    }    printf( _("? (y/n) ") );    return yesno( );}/* Called when the given files is about to be updated */void fe_updating( const struct site_file_t *file ) {    switch( quiet ) {    case 0:	if( file->dir ) {	    if( file->diff == file_new ) {		printf( _("Creating %s/: "), file->rel_local+1 );	    } else {		printf( _("Deleting %s/: "), file->rel_local+1 );	    }	} else {	    switch( file->diff ) {	    case file_changed:	    case file_new: printf( _("Uploading %s: ["), file->rel_local+1 ); break;	    case file_deleted: printf( _("Deleting %s: "), file->rel_local+1 ); break;	    case file_moved: printf( _("Moving %s->%s: "), file->old->rel_local+1,				     file->directory ); break;	    default: printf( "You've really broken it now.\n" ); break;	    }	}	fflush( stdout );	break;    case 1:	printf( "%s\n", file->rel_local+1 );	break;    default:	break;    }}void fe_updated( const struct site_file_t *file, const bool success,		 const char *error ) {    if( quiet > 0 ) {	if( ! success ) {	    printf( _("Failed to update %s:\n%s\n"), 		    file->rel_local, error );	}	return;    }    if( file->dir || (file->diff!=file_changed && file->diff!=file_new) ) {	if( success ) {	    printf( _("done.\n") );	} else {	    printf( _("failed:\n%s\n"), error );	}    } else {	if( success ) {	    printf( _("] done.\n") );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成年人网站91| 久久久亚洲午夜电影| 欧美午夜电影一区| 91高清视频免费看| 在线视频国内自拍亚洲视频| 欧美在线制服丝袜| 欧美日韩日日夜夜| 日韩欧美高清在线| 久久综合九色综合欧美就去吻| 久久免费电影网| 国模无码大尺度一区二区三区 | 成人精品免费视频| 国产传媒欧美日韩成人| 波多野结衣中文字幕一区 | 91精品国产欧美日韩| 666欧美在线视频| 日韩欧美一区中文| 久久久久久久久蜜桃| 中文av一区二区| 一区二区三区四区不卡视频| 亚洲成av人片一区二区| 蜜臀精品久久久久久蜜臀| 国内精品久久久久影院色| 国产91精品在线观看| 91国偷自产一区二区使用方法| 欧美日韩亚洲综合在线| 欧美成人综合网站| 中文字幕在线视频一区| 亚洲一区二区在线观看视频| 免费国产亚洲视频| 成人黄色电影在线 | 欧美亚洲自拍偷拍| 欧美一区二区三区在线观看视频 | 午夜欧美视频在线观看| 久久电影国产免费久久电影| 成人激情视频网站| 欧美精品视频www在线观看| 久久无码av三级| 夜夜精品视频一区二区| 另类综合日韩欧美亚洲| 99r国产精品| 91精品国产高清一区二区三区| 久久香蕉国产线看观看99| 亚洲欧美电影院| 老司机精品视频在线| 国产精品久久毛片| 一区二区免费在线| 国产精品一区二区三区乱码| 色久综合一二码| www国产成人免费观看视频 深夜成人网| 国产午夜亚洲精品午夜鲁丝片| 亚洲欧美日韩国产综合在线| 蜜桃在线一区二区三区| 91麻豆swag| 精品国产乱子伦一区| 亚洲观看高清完整版在线观看| 国内久久婷婷综合| 在线观看国产日韩| 欧美激情一区二区三区全黄| 婷婷六月综合网| av电影在线不卡| 精品国产a毛片| 午夜精品福利在线| 91色在线porny| 国产亚洲婷婷免费| 日韩不卡在线观看日韩不卡视频| 波多野结衣亚洲一区| 日韩欧美专区在线| 亚洲自拍都市欧美小说| 成人午夜大片免费观看| 欧美岛国在线观看| 偷窥少妇高潮呻吟av久久免费| 99国产一区二区三精品乱码| 久久久久久久久久看片| 美女视频黄频大全不卡视频在线播放| 91热门视频在线观看| 国产日韩视频一区二区三区| 紧缚奴在线一区二区三区| 欧美日韩一级黄| 亚洲综合丝袜美腿| 色偷偷久久人人79超碰人人澡| 久久久一区二区三区| 久久国产精品第一页| 7777精品伊人久久久大香线蕉| 一区二区三区在线观看欧美| 成人动漫av在线| 欧美极品xxx| 国产精品中文欧美| 欧美成人女星排行榜| 蜜臀av亚洲一区中文字幕| 欧美精品成人一区二区三区四区| 亚洲最快最全在线视频| 91玉足脚交白嫩脚丫在线播放| 国产欧美日韩视频一区二区| 国产精品一区二区久久精品爱涩 | 国产精品国产a| 东方aⅴ免费观看久久av| 久久久久久久性| 精品一区二区三区在线播放| 欧美电影免费观看完整版| 视频在线观看国产精品| 91精品国产欧美一区二区18| 日韩电影免费在线看| 欧美肥大bbwbbw高潮| 午夜精彩视频在线观看不卡| 56国语精品自产拍在线观看| 日韩有码一区二区三区| 日韩欧美一区中文| 国产剧情一区二区| 国产喂奶挤奶一区二区三区| 国产成人精品影视| 国产精品久久久一本精品| 不卡一区二区中文字幕| 国产精品美女久久久久久久| 91视视频在线直接观看在线看网页在线看 | 亚洲精品免费一二三区| 色播五月激情综合网| 亚洲成人动漫精品| 欧美一区二区性放荡片| 国产伦精品一区二区三区视频青涩 | 国产精品久久夜| 91免费版在线看| 亚洲va天堂va国产va久| 欧美一级xxx| 国产成人福利片| 伊人色综合久久天天人手人婷| 欧美午夜一区二区三区| 日本大胆欧美人术艺术动态| 欧美精品一区二区三区久久久| 成人免费视频视频| 亚洲激情男女视频| 日韩欧美www| 成人美女在线观看| 亚洲一区二区中文在线| 欧美成人a∨高清免费观看| 福利一区在线观看| 亚洲激情男女视频| 欧美不卡一区二区三区| 99久久国产综合色|国产精品| 亚洲h在线观看| www精品美女久久久tv| 色综合久久中文综合久久97| 石原莉奈一区二区三区在线观看| 欧美成人女星排行榜| 99久久久国产精品| 日韩国产在线观看| 国产欧美一区二区三区网站| 欧美在线视频日韩| 精品一区二区影视| 亚洲一区二区三区四区五区中文| 精品日韩99亚洲| 91美女精品福利| 精品写真视频在线观看| 亚洲视频小说图片| 日韩一区二区三区在线视频| 97aⅴ精品视频一二三区| 麻豆国产91在线播放| 亚洲精品成人精品456| 久久亚洲欧美国产精品乐播| 欧美亚洲高清一区| 国产不卡视频在线播放| 日韩中文欧美在线| 亚洲九九爱视频| 久久久精品tv| 91麻豆精品91久久久久同性| 成人教育av在线| 精品亚洲成a人| 石原莉奈一区二区三区在线观看| 中文字幕一区二区5566日韩| 日韩亚洲欧美成人一区| 色素色在线综合| 国产传媒日韩欧美成人| 免费观看成人av| 亚洲综合小说图片| 国产精品久久久久影视| 精品国产一区a| 91精品国产欧美一区二区| 色欧美片视频在线观看| 成人综合日日夜夜| 国内精品嫩模私拍在线| 免费不卡在线视频| 91久久国产最好的精华液| 成人app网站| 国产成人av电影在线| 国内一区二区视频| 美女一区二区三区| 日韩av在线播放中文字幕| 亚洲综合一区二区| 亚洲激情五月婷婷| 亚洲免费在线观看| 国产精品国产馆在线真实露脸| 国产欧美日韩另类一区| 精品久久一区二区三区| 日韩午夜电影在线观看| 91精品国产综合久久精品图片 | 精品国产sm最大网站免费看| 日韩一区二区精品在线观看| 欧美久久一区二区| 欧美日韩电影在线| 4438x亚洲最大成人网|