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

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

?? cvs2sql.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
字號:
/***	W3C CVS To SQL Log Converter****	(c) COPRIGHT MIT 1999.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: cvs2sql.c,v 1.8 1999/04/12 19:00:32 frystyk Exp $****	This program takes cvs log info via stdin and writes it to an SQL DB****  Author:**	Henrik Frystyk Nielsen, http://www.w3.org/People/Frystyk***/#include "WWWLib.h"			      /* Global Library Include file */#include "WWWSQL.h"#include "HTextImp.h"#define APP_NAME			"cvs2sql"#define APP_VERSION			"1.0"#define DEFAULT_SQL_SERVER		"localhost"#define DEFAULT_SQL_DB			"cvs"#define DEFAULT_SQL_USER		"none"#define DEFAULT_SQL_PW			"none"#define DEFAULT_SQL_LOCATION_TABLE	"locations"#define DEFAULT_SQL_USER_TABLE		"users"#define DEFAULT_SQL_COMMENTS_TABLE	"comments"#define DEFAULT_SQL_LOG_TABLE		"logs"#define DEFAULT_SQL_KEY_TYPE		"int unsigned not null"#define MAX_KEY_LENGTH			255#define DEFAULT_CVS_USER		"unknown"#define DELIMITERS			" \n"#define BUFSIZE				8196typedef enum _SQLFlags {    SQL_CLEAR_LOCATION_TABLE 	= 0x1,    SQL_DROP_LOCATION_TABLE 	= 0x2,     SQL_CLEAR_USER_TABLE	= 0x4,    SQL_DROP_USER_TABLE		= 0x8,    SQL_CLEAR_COMMENTS_TABLE	= 0x10,    SQL_DROP_COMMENTS_TABLE	= 0x20,    SQL_CLEAR_LOG_TABLE		= 0x40,    SQL_DROP_LOG_TABLE		= 0x80} SQLFlags;/* ------------------------------------------------------------------------- */PRIVATE void VersionInfo (void){    fprintf(stdout, "W3C Sample Software\n\n");    fprintf(stdout, "\t%s, W3C CVS Log to SQL converter version %s\n", APP_NAME, APP_VERSION);    fprintf(stdout, "\tlibwww, W3C Sample Library version %s\n\n", HTLib_version());    fprintf(stdout, "Please send feedback to <www-lib@w3.org>\n");}PRIVATE void Cleanup (int status, HTSQL * sql, HTChunk * chunk){    HTChunk_delete(chunk);    HTSQL_delete(sql);    HTLibTerminate();#ifdef VMS    exit(status ? status : 1);#else    exit(status ? status : 0);#endif}PRIVATE BOOL clear_table (HTSQL * me, const char * table){    if (me && table) {	char buf[1024];	char * query = HTSQL_printf(buf, 1024, "delete from %s", table);	return HTSQL_query(me, query);    }    return NO;}PRIVATE BOOL drop_table (HTSQL * me, const char * table){    if (me && table) {	char buf[1024];	char * query = HTSQL_printf(buf, 1024, "drop table %s", table);	return HTSQL_query(me, query);    }    return NO;}/* ** Create the three CVS tables if not already there** 	location:	filename, id** 	user: 		username, id** 	log:		user_id, location_id, date, operation, message*/PRIVATE BOOL createTables (HTSQL * sql, SQLFlags flags){    if (sql) {	char buf[1024];	char * query = NULL;	/* Create location table */	/* If we have to delete it first */	if (flags & SQL_DROP_LOCATION_TABLE) 	    drop_table(sql, DEFAULT_SQL_LOCATION_TABLE);	query = HTSQL_printf(buf, 1024,			     "create table %s (id %s auto_increment, location varchar(%u) binary not null, primary key(id), unique(location), index loc_idx(location(32)))",			     DEFAULT_SQL_LOCATION_TABLE,			     DEFAULT_SQL_KEY_TYPE,			     MAX_KEY_LENGTH);	HTSQL_query(sql, query);	/* If we have to clear it out */	if (flags & SQL_CLEAR_LOCATION_TABLE) 	    clear_table(sql, DEFAULT_SQL_LOCATION_TABLE);	/* Create user table */	/* If we have to delete it first */	if (flags & SQL_DROP_USER_TABLE) 	    drop_table(sql, DEFAULT_SQL_USER_TABLE);	query = HTSQL_printf(buf, 1024,			     "create table %s (id %s auto_increment, username varchar(%u) binary not null, primary key(id), unique(username), index username_idx(username(32)))",			     DEFAULT_SQL_USER_TABLE,			     DEFAULT_SQL_KEY_TYPE,			     MAX_KEY_LENGTH);	HTSQL_query(sql, query);	/* If we have to clear it out */	if (flags & SQL_CLEAR_USER_TABLE) 	    clear_table(sql, DEFAULT_SQL_USER_TABLE);	/* Create comments table */	/* If we have to delete it first */	if (flags & SQL_DROP_COMMENTS_TABLE) 	    drop_table(sql, DEFAULT_SQL_COMMENTS_TABLE);	query = HTSQL_printf(buf, 1024,			     "create table %s (id %s auto_increment, comment text, primary key(id))",			     DEFAULT_SQL_COMMENTS_TABLE,			     DEFAULT_SQL_KEY_TYPE);	HTSQL_query(sql, query);	/* If we have to clear it out */	if (flags & SQL_CLEAR_COMMENTS_TABLE) 	    clear_table(sql, DEFAULT_SQL_COMMENTS_TABLE);	/* Create logs table */	/* If we have to delete it first */	if (flags & SQL_DROP_LOG_TABLE) 	    drop_table(sql, DEFAULT_SQL_LOG_TABLE);	query = HTSQL_printf(buf, 1024,			     "create table %s (location %s, username %s, date datetime, operation char(32), comment %s)",			     DEFAULT_SQL_LOG_TABLE,			     DEFAULT_SQL_KEY_TYPE,			     DEFAULT_SQL_KEY_TYPE,			     DEFAULT_SQL_KEY_TYPE);	HTSQL_query(sql, query);	/* If we have to clear it out */	if (flags & SQL_CLEAR_LOG_TABLE) 	    clear_table(sql, DEFAULT_SQL_LOG_TABLE);	/* All done */	return YES;	    }    return NO;}PRIVATE int find_location(HTSQL * sql, const char * location){    int index = -1;    if (sql && location) {	char buf[4096];        char * query = NULL;        MYSQL_RES * result = NULL;	query = HTSQL_printf(buf, 4096, "select * from %s where location=%S",			     DEFAULT_SQL_LOCATION_TABLE, location);	if (HTSQL_query(sql, query) &&	    (result = HTSQL_storeResult(sql)) != NULL) {	    MYSQL_ROW row;	    if ((row = mysql_fetch_row(result)) && row[0])		index = atoi(row[0]);	    HTSQL_freeResult(result);	}    }    return index;}PRIVATE int add_location (HTSQL * sql, const char * location){    if (sql && location) {	int index = -1;	/* If we can't find the LOCATION then add it */	if ((index = find_location(sql, location)) < 0) {	    char buf[4096];	    char * query = HTSQL_printf(buf, 4096, "insert into %s (location) values (%S)",					DEFAULT_SQL_LOCATION_TABLE, location);	    if (HTSQL_query(sql, query) != YES) {		return -1;	    }	    index = HTSQL_getLastInsertId(sql);	}	return index;    }    return -1;}PRIVATE int find_user(HTSQL * sql, const char * user){    int index = -1;    if (sql && user) {	char buf[1024];        char * query = NULL;        MYSQL_RES * result = NULL;	query = HTSQL_printf(buf, 1024, "select * from %s where username=%S",			     DEFAULT_SQL_USER_TABLE, user);	if (HTSQL_query(sql, query) &&	    (result = HTSQL_storeResult(sql)) != NULL) {	    MYSQL_ROW row;	    if ((row = mysql_fetch_row(result)) && row[0])		index = atoi(row[0]);	    HTSQL_freeResult(result);	}    }    return index;}PRIVATE int add_user (HTSQL * sql, const char * user){    if (sql && user) {	int index = -1;	/* If we can't find the USER then add it */	if ((index = find_user(sql, user)) < 0) {	    char buf[1024];	    char * query = HTSQL_printf(buf, 1024, "insert into %s (username) values (%S)",					DEFAULT_SQL_USER_TABLE, user);	    if (HTSQL_query(sql, query) != YES) {		return -1;	    }	    index = HTSQL_getLastInsertId(sql);	}	return index;    }    return -1;}PRIVATE int add_comment (HTSQL * sql, const char * comment){    if (sql && comment) {	char buf[8196];	char * query = HTSQL_printf(buf, 8196, "insert into %s (comment) values (%S)",				    DEFAULT_SQL_COMMENTS_TABLE, comment);	if (HTSQL_query(sql, query) != YES) return -1;	return HTSQL_getLastInsertId(sql);    }    return -1;}int main (int argc, char ** argv){    HTSQL *	sql = NULL;    char *	sqlserver = DEFAULT_SQL_SERVER;    char *	sqldb = DEFAULT_SQL_DB;    char *	sqluser = DEFAULT_SQL_USER;    char *	sqlpw = DEFAULT_SQL_PW;    char *	cvsuser = DEFAULT_CVS_USER;    time_t	cvsdate = -1;    FILE * fin = stdin;    char *	input_buffer[BUFSIZE];    HTChunk *	loginfo = HTChunk_new(BUFSIZE);    int		arg = 0;    BOOL	create_db = YES;    /* Initiate libwww */    HTLibInit(APP_NAME, APP_VERSION);    /* Scan command line for parameters */    for (arg=1; arg<argc; arg++) {	if (*argv[arg] == '-') {	    	    if (!strcmp(argv[arg], "-h") || !strcmp(argv[arg], "-?")) {		VersionInfo();		Cleanup(0, sql, loginfo);	    } else if (!strcmp(argv[arg], "-v")) {		HTSetTraceMessageMask("q");	    } else if (!strcmp(argv[arg], "-nocreate")) {		create_db = NO;	    } else if (!strncmp(argv[arg], "-sqldb", 5)) {		sqldb = (arg+1 < argc && *argv[arg+1] != '-') ?		    argv[++arg] : DEFAULT_SQL_DB;	    } else if (!strncmp(argv[arg], "-sqlpassword", 5)) {		sqlpw = (arg+1 < argc && *argv[arg+1] != '-') ?		    argv[++arg] : DEFAULT_SQL_PW;	    } else if (!strncmp(argv[arg], "-sqlserver", 5)) {		sqlserver = (arg+1 < argc && *argv[arg+1] != '-') ?		    argv[++arg] : DEFAULT_SQL_SERVER;	    } else if (!strncmp(argv[arg], "-sqluser", 5)) {		sqluser = (arg+1 < argc && *argv[arg+1] != '-') ?		    argv[++arg] : DEFAULT_SQL_USER;	    } else if (!strncmp(argv[arg], "-cvsuser", 5)) {		cvsuser = (arg+1 < argc && *argv[arg+1] != '-') ?		    argv[++arg] : DEFAULT_CVS_USER;	    } else if (!strncmp(argv[arg], "-cvsdate", 5)) {		cvsdate = (arg+1 < argc && *argv[arg+1] != '-') ?		    HTParseTime(argv[++arg], NULL, NO) : -1;	    } else {		fprintf(stderr, "Bad Argument (%s)\n", argv[arg]);	    }	} else {	    fprintf(stderr, "Bad Argument (%s)\n", argv[arg]);	}    }    /* Get an SQL object */    if ((sql = HTSQL_new(sqlserver, sqluser, sqlpw, 0)) == NULL)	Cleanup(-1, sql, loginfo);    /* Connect to the SQL server */    if (HTSQL_connect(sql) != YES) Cleanup(-1, sql, loginfo);    /* Select our database */    if (HTSQL_selectDB(sql, sqldb) != YES) Cleanup(-1, sql, loginfo);    /* Create our tables */    if (create_db) createTables(sql, 0);    /* Read the arguments from stdin */    for (;;) {	int status = fread(input_buffer, 1, BUFSIZE, fin);	if (status < 0) Cleanup(-1, sql, loginfo);	if (status == 0) break;	HTChunk_putb(loginfo, (const char *) input_buffer, status);    }    /* Parse the input chunk */    {	char * ptr = HTChunk_data(loginfo);	char * noop1 = HTNextField(&ptr);	char * noop2 = HTNextField(&ptr);	char * root = HTNextField(&ptr);	char * operation = NULL;	char * files = NULL;	char * comment = NULL;	int comment_id = -1;	int user_id = -1;	char * p, * q;#ifdef HT_REENTRANT	char *lasts;					     /* For strtok_r */#endif	/* Find shared log message and get id */	if ((q = HTStrCaseStr(ptr, "\nLog Message:")) != NULL) {	    comment = q+14;	    *q = '\0';	}	if ((comment_id = add_comment(sql, comment)) < 0) 	    Cleanup(-1, sql, loginfo);	/* Add/find user and get id */	if ((user_id = add_user(sql, cvsuser)) < 0)	    Cleanup(-1, sql, loginfo);	/* For each operation, find the files involved */	while ((q = HTStrCaseStr(ptr, " Files:")) != NULL) {	    /* Find the operation */	    files = q+9;	    for (p=q; p>HTChunk_data(loginfo) && *p && *p!='\n'; p--);	    p++;	    operation = HTNextField(&p);	    /* Find the next line */	    if ((q = strchr(files, '\n')) != NULL) {		*q++ = '\0';		ptr = q;	    }	    /* Create the query */	    if (operation && files && comment) {		char * file;		int location_id = -1;#ifdef HT_REENTRANT		if ((file = strtok_r(files, DELIMITERS, &lasts)) != NULL) {#else		if ((file = strtok(files, DELIMITERS)) != NULL) {#endif /* HT_REENTRANT */		    do {			char * path = NULL;					StrAllocMCopy(&path, root, "/", file, NULL);			/* Add/find location and get id */			if ((location_id = add_location(sql, path)) < 0) {			    Cleanup(-1, sql, loginfo);			    break;			}#if 0			fprintf(stderr, "location: `%s\', user: `%s\', operation: `%s\', comment: `%s\'\n",				path, cvsuser, operation, comment);#endif			/* Add log entry */			{			    char buf[16384];			    char * query = HTSQL_printf(buf, 16384, "insert into %s values (%u,%u,%T,%S,%u)",							DEFAULT_SQL_LOG_TABLE,							location_id,							user_id,							cvsdate,							operation,							comment_id);			    if (HTSQL_query(sql, query) != YES) {				Cleanup(-1, sql, loginfo);				break;			    }			}					HT_FREE(path);#ifdef HT_REENTRANT		    } while ((file = (char *) strtok_r(NULL, DELIMITERS, &lasts)) != NULL);#else		    } while ((file = strtok(NULL, DELIMITERS)) != NULL);#endif /* HT_REENTRANT */		}	    }	}    }    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99在线热播精品免费| www.欧美日韩| 国产精品888| 91亚洲国产成人精品一区二三| 国产美女娇喘av呻吟久久| 国产麻豆视频一区二区| 色综合久久中文综合久久牛| 亚洲成人av电影| 久国产精品韩国三级视频| 欧美电视剧在线看免费| 日日夜夜免费精品| 777亚洲妇女| 午夜精品123| 91麻豆精品国产自产在线观看一区| 亚洲人一二三区| 成人自拍视频在线观看| 欧美中文字幕不卡| 精品久久久久一区二区国产| 亚洲一区二区在线播放相泽| 麻豆成人综合网| 在线免费观看日韩欧美| 精品福利av导航| 亚洲成av人片一区二区三区| 成人一级视频在线观看| 国产欧美精品国产国产专区| 国产一区二区三区日韩| 久久婷婷一区二区三区| 麻豆91在线看| 欧美成人官网二区| 韩国v欧美v亚洲v日本v| 久久亚洲精品国产精品紫薇| 国产综合色视频| 久久女同互慰一区二区三区| 国产综合久久久久影院| 国产日产亚洲精品系列| 大白屁股一区二区视频| 亚洲国产精品传媒在线观看| 成人免费视频免费观看| 国产精品毛片久久久久久久| 成人av动漫网站| 亚洲自拍欧美精品| 欧美丰满一区二区免费视频| 日本在线不卡一区| 日韩精品一区二区三区四区视频| 久久福利资源站| 国产精品乱人伦| 欧美亚洲愉拍一区二区| 亚洲国产成人91porn| 欧美一区二区在线视频| 精久久久久久久久久久| 欧美激情综合五月色丁香小说| eeuss鲁片一区二区三区 | 在线免费观看视频一区| 欧美精品1区2区| 亚洲人吸女人奶水| 日韩福利视频网| 国内一区二区视频| 精品一区二区国语对白| 色欧美日韩亚洲| 欧美一卡二卡三卡四卡| 欧美国产日韩亚洲一区| 亚洲激情在线播放| 青青草国产精品亚洲专区无| 国内成+人亚洲+欧美+综合在线| 国产精品一区二区久久精品爱涩| 国产精品不卡在线| 欧美日韩成人在线一区| 国产一区二区三区香蕉| 一区二区在线观看免费视频播放| 91精品国产综合久久久久久久久久 | 亚洲精品乱码久久久久久黑人| 欧美色图片你懂的| 国产精品一区二区免费不卡| 夜夜嗨av一区二区三区中文字幕| 日韩精品一区二| 97精品国产露脸对白| 麻豆视频一区二区| 亚洲欧美日韩国产中文在线| 91精品在线观看入口| 色综合夜色一区| 国产一区二区三区日韩| 亚洲国产日韩综合久久精品| 国产亚洲美州欧州综合国| 91浏览器入口在线观看| 国产精品亚洲专一区二区三区| 亚洲第一搞黄网站| 中文字幕视频一区二区三区久| 日韩一区二区中文字幕| 色偷偷成人一区二区三区91| 国产美女一区二区| 日韩专区欧美专区| 尤物视频一区二区| 国产精品乱人伦| 久久亚洲一级片| 欧美一区二区不卡视频| 欧美三级韩国三级日本一级| 波多野结衣中文字幕一区二区三区 | 亚洲色图第一区| 国产日韩欧美亚洲| 精品国产凹凸成av人导航| 欧美三日本三级三级在线播放| 国产91精品精华液一区二区三区 | 亚洲男人天堂一区| 国产精品婷婷午夜在线观看| 中文字幕精品在线不卡| 成人福利视频在线看| 亚洲午夜国产一区99re久久| 精品久久久影院| 成人app在线| 五月婷婷综合网| 最好看的中文字幕久久| 91黄视频在线| 国产美女视频一区| 在线观看免费视频综合| 最近中文字幕一区二区三区| 中国av一区二区三区| 久久蜜桃香蕉精品一区二区三区| 精品国产免费久久| 亚洲精品一区二区三区四区高清 | 国产最新精品精品你懂的| 蜜臀av性久久久久蜜臀aⅴ流畅| 天堂久久久久va久久久久| 一区二区三区**美女毛片| 亚洲人成精品久久久久久| 亚洲欧美一区二区三区孕妇| 亚洲美女视频在线观看| 亚洲一二三区在线观看| 亚洲精品国产a久久久久久 | 亚洲毛片av在线| 亚洲一区二区五区| 日本美女一区二区| 韩国三级在线一区| 成人ar影院免费观看视频| 91碰在线视频| 91精品国产综合久久久久久| 日韩久久久精品| 欧美韩国日本不卡| 一区二区三区在线免费视频| 日本欧美在线观看| 国产99精品视频| 欧美在线小视频| 精品1区2区在线观看| 中文字幕一区二区在线观看| 综合激情成人伊人| www.久久久久久久久| 91成人在线免费观看| 欧美丰满少妇xxxxx高潮对白| 久久只精品国产| 亚洲女厕所小便bbb| 秋霞午夜av一区二区三区| 国产一区二区三区四| 欧美视频中文字幕| 久久久国产综合精品女国产盗摄| 成人免费在线视频| 日韩国产欧美三级| 成人国产电影网| 91精品国产综合久久久蜜臀图片| 国产亚洲一区二区三区四区| 亚洲大片在线观看| 国产成人精品一区二区三区四区| 欧日韩精品视频| 国产精品美女久久久久久| 美女尤物国产一区| 精品中文字幕一区二区小辣椒 | 色一情一乱一乱一91av| 国产免费久久精品| 日韩激情av在线| 欧美日韩国产综合久久| 中文字幕av不卡| 美女视频黄 久久| 欧美三级日本三级少妇99| 国产精品视频一二| 国产成人自拍网| 精品对白一区国产伦| 久久精品国产免费看久久精品| 国产精品三级在线观看| 亚洲精选免费视频| 国产91精品欧美| 久久久精品tv| 美洲天堂一区二卡三卡四卡视频| 91久久国产综合久久| 欧美精彩视频一区二区三区| 美女脱光内衣内裤视频久久影院| 免费人成黄页网站在线一区二区| 青椒成人免费视频| 欧美精品亚洲一区二区在线播放| 一区二区三区四区不卡在线| 国产+成+人+亚洲欧洲自线| 日韩精品一区二区三区在线| 天天爽夜夜爽夜夜爽精品视频 | 丝袜美腿成人在线| 色久优优欧美色久优优| 国产精品乱码一区二区三区软件| 国产成人亚洲综合色影视| 精品福利一二区| 国产老妇另类xxxxx| 精品日韩欧美一区二区| 激情综合色播激情啊| 久久久久久久久久久久久夜| 激情文学综合网|