亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲免费大片在线观看| 精品一区二区三区在线观看 | 国产一区二区在线观看视频| 亚洲黄色av一区| 国产精品久久久久久亚洲毛片 | 亚洲成av人**亚洲成av**| 中文字幕乱码日本亚洲一区二区 | 麻豆91免费看| 蜜桃视频在线观看一区二区| 日本亚洲视频在线| 久久精品国产一区二区| 久久99国产精品久久99| 国模娜娜一区二区三区| 国产麻豆成人传媒免费观看| 成人一区二区三区中文字幕| 99这里只有精品| 欧美特级限制片免费在线观看| 欧美专区在线观看一区| 7777精品伊人久久久大香线蕉的 | 亚洲视频一区二区在线| 亚洲一区二区中文在线| 爽爽淫人综合网网站| 黄页视频在线91| 成人av免费在线| 欧亚洲嫩模精品一区三区| 欧美精品色综合| 精品99999| 综合色中文字幕| 日日欢夜夜爽一区| 国产成人精品免费看| 色婷婷激情一区二区三区| 91精品国产手机| 国产精品久久久久影视| 亚洲电影视频在线| 麻豆高清免费国产一区| 99久久国产综合精品女不卡| 国产成人综合在线播放| 成人网页在线观看| 国产毛片精品一区| 白白色亚洲国产精品| 欧美精品v国产精品v日韩精品 | 国产精品国产a| 日韩精品欧美成人高清一区二区| 久久福利资源站| 色综合久久综合网| 欧美日韩三级视频| 久久久91精品国产一区二区精品| 洋洋成人永久网站入口| 日韩欧美一区二区不卡| 久久久久久久一区| 一区二区三区四区中文字幕| 国产在线视频一区二区三区| 色婷婷精品久久二区二区蜜臀av| 日韩一区二区三区av| 国产精品激情偷乱一区二区∴| 蜜臀精品久久久久久蜜臀| thepron国产精品| 日韩女优毛片在线| 亚洲第一激情av| 不卡视频一二三| 久久综合色婷婷| 夜夜精品浪潮av一区二区三区| 高清shemale亚洲人妖| 欧美一区二区三区啪啪| 午夜电影一区二区三区| 一本大道久久a久久综合| 国产精品久久久一本精品| 国产激情视频一区二区三区欧美| 91精品国产综合久久久久久久| 亚洲精品日韩一| 92精品国产成人观看免费| 国产精品色一区二区三区| 国产成人免费视频| 国产情人综合久久777777| 九色综合狠狠综合久久| 日韩午夜中文字幕| 蜜臀久久99精品久久久画质超高清 | 国产精品一区一区三区| 日韩久久久精品| 久久疯狂做爰流白浆xx| 日韩精品中午字幕| 久久99久久99小草精品免视看| 日韩午夜激情av| 国产在线麻豆精品观看| 久久色中文字幕| 国产成人在线免费| 国产精品欧美精品| 色综合色狠狠天天综合色| 亚洲一区二区欧美| 在线电影院国产精品| 另类专区欧美蜜桃臀第一页| 精品处破学生在线二十三| 国产成人av一区二区三区在线 | 日韩亚洲电影在线| 国产一区在线观看视频| 中文无字幕一区二区三区| 成人高清视频在线观看| 亚洲天堂av一区| 欧美电影一区二区三区| 国产酒店精品激情| 国产精品久久久久国产精品日日| 色av成人天堂桃色av| 亚洲va欧美va国产va天堂影院| 欧美一区二区三区四区视频 | 日韩美女精品在线| 精品视频一区二区不卡| 美女网站在线免费欧美精品| 国产日韩欧美一区二区三区乱码| 99在线精品视频| 日本va欧美va精品发布| 中文成人综合网| 夜夜嗨av一区二区三区网页| 国产日韩亚洲欧美综合| 成人综合激情网| 亚洲一区二区欧美| 久久久久亚洲综合| 欧美日韩一级二级三级| 国产中文字幕一区| 一区二区三区电影在线播| 91精品国产黑色紧身裤美女| 风间由美一区二区av101| 亚洲第一成人在线| 国产欧美一区二区精品久导航| 色偷偷久久人人79超碰人人澡| 久久99国产精品成人| 一区二区高清免费观看影视大全| 精品乱人伦一区二区三区| 一本一本久久a久久精品综合麻豆| 精品亚洲porn| 午夜精品影院在线观看| 国产精品国模大尺度视频| 欧美大肚乱孕交hd孕妇| 精品视频在线免费看| 成人国产亚洲欧美成人综合网| 久久国产婷婷国产香蕉| 亚洲电影视频在线| 亚洲色图欧洲色图| 欧美国产日韩精品免费观看| 欧美一卡二卡三卡| 欧美日韩视频在线观看一区二区三区 | 精品国产免费一区二区三区香蕉| 一本色道综合亚洲| 亚洲国产aⅴ成人精品无吗| 国产无一区二区| 精品久久国产97色综合| 6080国产精品一区二区| 欧美日韩三级一区| 欧美亚洲综合另类| 欧洲一区二区三区在线| 色呦呦日韩精品| 99re在线视频这里只有精品| 久久av中文字幕片| 国内外成人在线| 久久99日本精品| 久久福利资源站| 日本在线播放一区二区三区| 国产精品国产三级国产专播品爱网 | www.66久久| 99久久精品99国产精品 | 美女视频黄 久久| 青青青伊人色综合久久| 蜜桃视频在线观看一区| 久久99久久久欧美国产| 狠狠色丁香久久婷婷综合_中 | 欧美精品日韩一区| 欧美一区二区在线不卡| 日韩视频免费直播| 久久先锋影音av鲁色资源| 欧美激情一二三区| 亚洲精选免费视频| 亚洲成人av在线电影| 男女视频一区二区| 国产一区二区三区日韩| 成人妖精视频yjsp地址| 91麻豆自制传媒国产之光| 欧美三级视频在线观看| 日韩一区二区在线看片| 欧美国产一区二区| 亚洲综合视频网| 久久精品国产亚洲一区二区三区| 激情欧美一区二区三区在线观看| 国产精品一区二区三区乱码| 99久久精品国产毛片| 欧美二区乱c少妇| 久久九九久精品国产免费直播| 日韩av一二三| 日日夜夜精品视频免费| 精品亚洲成av人在线观看| 91网站在线观看视频| 欧美最新大片在线看| 日本高清免费不卡视频| 欧美成人精品二区三区99精品| 国产精品国产自产拍在线| 午夜天堂影视香蕉久久| 国产成人精品亚洲日本在线桃色| 色综合视频一区二区三区高清| 日韩欧美的一区| 一区二区高清在线| 成人免费av资源| 91精品国产欧美一区二区成人 |