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

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

?? htsqllog.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
字號:
/*								   HTSQL.c**	SQL LOGGING MODULE****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTSQLLog.c,v 2.3 1999/02/22 22:10:12 frystyk Exp $****	This module contains a simple SQL based logging mechanism for requests**	and anything else you want to log**** History:**  	23 Apr 98	Henrik Frystyk, frystyk@w3.org*//* Library include files */#include "WWWLib.h"#include "HTSQL.h"#include "HTSQLLog.h"					 /* Implemented here */#include <mysql/mysql.h>struct _HTSQLLog {    HTSQL *		sql;    char *		relative;		/* Make URIs relative to */    int			accesses;    HTSQLLogFlags	flags;};#define DEFAULT_SQL_URIS_TABLE		"uris"#define DEFAULT_SQL_REQUESTS_TABLE	"requests"#define DEFAULT_SQL_RESOURCES_TABLE	"resources"#define DEFAULT_SQL_LINKS_TABLE		"links"#define DEFAULT_SQL_KEY_TYPE		"int unsigned not null"#define MAX_URI_LENGTH			255/* ------------------------------------------------------------------------- */PRIVATE int find_uri(HTSQLLog * me, const char * uri){    int index = -1;    if (me && me->sql && uri) {	char buf[1024];        char * query = NULL;        MYSQL_RES * result = NULL;	query = HTSQL_printf(buf, 1024, "select * from %s where uri=%S",			     DEFAULT_SQL_URIS_TABLE, uri);	if (HTSQL_query(me->sql, query) &&	    (result = HTSQL_storeResult(me->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_uri (HTSQLLog * me, const char * uri){    if (me && me->sql && uri) {	int index = -1;	char * rel = me->relative ? HTRelative(uri, me->relative) : NULL;	/* If we can't find the URI then add it */	if ((index = find_uri(me, rel ? rel : uri)) < 0) {	    char buf[1024];	    char * query = HTSQL_printf(buf, 1024, "insert into %s (uri) values (%S)",					DEFAULT_SQL_URIS_TABLE, rel ? rel : uri);	    if (HTSQL_query(me->sql, query) != YES) {		HT_FREE(rel);		return -1;	    }	    index = HTSQL_getLastInsertId(me->sql);	}	HT_FREE(rel);	return index;    }    return -1;}PRIVATE BOOL add_linktype (HTSQLLog * me, int srcidx, int dstidx,			   const char * type, const char * comment){    if (me && me->sql && srcidx>=0 && dstidx>=0 && type) {	char buf[1024];	char * query = HTSQL_printf(buf, 1024, "insert into %s values (%u,%u,%S,%S)",				    DEFAULT_SQL_LINKS_TABLE,				    srcidx, dstidx, type, comment);	return HTSQL_query(me->sql, query);    }    return NO;}PRIVATE BOOL clear_table (HTSQLLog * me, const char * table){    if (me && me->sql && table) {	char buf[1024];	char * query = HTSQL_printf(buf, 1024, "delete from %s", table);	return HTSQL_query(me->sql, query);    }    return NO;}PRIVATE BOOL drop_table (HTSQLLog * me, const char * table){    if (me && me->sql && table) {	char buf[1024];	char * query = HTSQL_printf(buf, 1024, "drop table %s", table);	return HTSQL_query(me->sql, query);    }    return NO;}PRIVATE BOOL createTables (HTSQLLog * me, HTSQLLogFlags flags){    if (me && me->sql) {	char buf[1024];	char * query = NULL;	/* If we have to delete it first */	if (flags & HTSQLLOG_DROP_URIS_TABLE) 	    drop_table(me, DEFAULT_SQL_URIS_TABLE);	/* Create URI table (which is the index) */	query = HTSQL_printf(buf, 1024,			     "create table %s (id %s auto_increment, uri varchar(%u) binary not null, primary key(id), unique (uri), index uri_idx (uri(32)))",			     DEFAULT_SQL_URIS_TABLE,			     DEFAULT_SQL_KEY_TYPE,			     MAX_URI_LENGTH);	HTSQL_query(me->sql, query);	/* If we have to clear it out */	if (flags & HTSQLLOG_CLEAR_URIS_TABLE) 	    clear_table(me, DEFAULT_SQL_URIS_TABLE);	/* If we have to delete it first */	if (flags & HTSQLLOG_DROP_REQUESTS_TABLE) 	    drop_table(me, DEFAULT_SQL_REQUESTS_TABLE);	/* Create Request table */	query = HTSQL_printf(buf, 1024,			     "create table %s (uri %s primary key, method char(16) not null, status int unsigned not null, request_time datetime, response_time datetime)",			     DEFAULT_SQL_REQUESTS_TABLE,			     DEFAULT_SQL_KEY_TYPE);	HTSQL_query(me->sql, query);	/* If we have to clear it out */	if (flags & HTSQLLOG_CLEAR_REQUESTS_TABLE) 	    clear_table(me, DEFAULT_SQL_REQUESTS_TABLE);	/* If we have to delete it first */	if (flags & HTSQLLOG_DROP_RESOURCES_TABLE) 	    drop_table(me, DEFAULT_SQL_RESOURCES_TABLE);	/* Create Resource table */	query = HTSQL_printf(buf, 1024,			     "create table %s (uri %s primary key, length bigint unsigned not null, last_modified datetime, expires datetime, content_type char(32), charset char(32), content_encoding char(32), content_language char(32), title char(128))",			     DEFAULT_SQL_RESOURCES_TABLE,			     DEFAULT_SQL_KEY_TYPE);	HTSQL_query(me->sql, query);	/* If we have to clear it out */	if (flags & HTSQLLOG_CLEAR_RESOURCES_TABLE) 	    clear_table(me, DEFAULT_SQL_RESOURCES_TABLE);	/* If we have to delete it first */	if (flags & HTSQLLOG_DROP_LINKS_TABLE) 	    drop_table(me, DEFAULT_SQL_LINKS_TABLE);	/* Create Link Relations table */	query = HTSQL_printf(buf, 1024,			     "create table %s (source %s, destination %s, link_type char(32) not null, comment char(128), unique(source,destination,link_type))",			     DEFAULT_SQL_LINKS_TABLE,			     DEFAULT_SQL_KEY_TYPE,			     DEFAULT_SQL_KEY_TYPE);	HTSQL_query(me->sql, query);	/* If we have to clear it out */	if (flags & HTSQLLOG_CLEAR_LINKS_TABLE) 	    clear_table(me, DEFAULT_SQL_LINKS_TABLE);	/* All done */	return YES;	    }    return NO;}/*	Open a connection**	-----------------**	Returns YES if OK, NO on error*/PUBLIC HTSQLLog * HTSQLLog_open (const char * 	host,				 const char * 	user,				 const char * 	pw,				 const char * 	db,				 HTSQLLogFlags 	flags){    HTSQLLog * me = NULL;    if (!host || !user || !pw || !db) {	HTTRACE(SQL_TRACE, "SQLLog...... Missing SQLLog host, user, password, or db\n");	return NULL;    }    if ((me = (HTSQLLog *) HT_CALLOC(1, sizeof(HTSQLLog))) == NULL)        HT_OUTOFMEM("HTSQLLog_open");    if ((me->sql = HTSQL_new(host, user, pw, 0)) != NULL &&	HTSQL_connect(me->sql) == YES && HTSQL_selectDB(me->sql, db) == YES) {	/* Make sure we have the right set of tables */	createTables(me, flags);	me->flags = flags;    } else {	HTSQL_delete(me->sql);	HT_FREE(me);    }    return me;}/*	Close connection**	----------------**	Returns YES if OK, NO on error*/PUBLIC BOOL HTSQLLog_close (HTSQLLog * me){    if (me) {	if (me->sql) HTSQL_close(me->sql);	HT_FREE(me->relative);	HT_FREE(me);	return YES;    }    return NO;}PUBLIC BOOL HTSQLLog_clearTables (HTSQLLog * me){    if (me && me->sql) {	/* ... */	return YES;    }    return NO;}PUBLIC BOOL HTSQLLog_makeRelativeTo (HTSQLLog * me, const char * relative){    if (me) {	StrAllocCopy(me->relative, relative);	return YES;    }    return NO;}PUBLIC int HTSQLLog_accessCount (HTSQLLog * me){    return me ? me->accesses : -1;}PUBLIC BOOL HTSQLLog_addURI (HTSQLLog * me, const char * uri){    return (me && me->sql && (add_uri(me, uri)>=0));}PUBLIC BOOL HTSQLLog_addLinkRelationship (HTSQLLog * me,					  const char * src_uri,					  const char * dst_uri,					  const char * link_type,					  const char * comment){    if (src_uri && dst_uri) {	int srcidx = add_uri(me, src_uri);	int dstidx = add_uri(me, dst_uri);	return add_linktype(me, srcidx, dstidx, link_type, comment);    }    return NO;}PUBLIC BOOL HTSQLLog_addEntry (HTSQLLog * me, HTRequest * request, int status){    if (me && me->sql) {	HTParentAnchor * anchor = HTRequest_anchor(request);	HTParentAnchor * parent_anchor = HTRequest_parent(request);	char * uri = HTAnchor_address((HTAnchor *) anchor);	int index = 0;	char buf[512];	char * query = NULL;	/* Insert into the URI table */	if ((index = add_uri(me, uri)) < 0) {	    HT_FREE(uri);	    return NO;	}	/* Insert into the request table */	query = HTSQL_printf(buf, 512, "replace into %s values (%u,%S,%u,%T,%T)",			     DEFAULT_SQL_REQUESTS_TABLE,			     index,			     HTMethod_name(HTRequest_method(request)),			     abs(status),			     HTRequest_date(request),			     HTAnchor_date(anchor));	if (HTSQL_query(me->sql, query) != YES) {	    HT_FREE(uri);	    return NO;	}	/* Insert into the resource table */	{	    HTList * encodings = HTAnchor_encoding(anchor);	    HTList * languages = HTAnchor_language(anchor);	    HTFormat format = HTAnchor_format(anchor);	    HTCharset charset = HTAnchor_charset(anchor);	    HTEncoding encoding = encodings ? HTList_firstObject(encodings) : NULL;	    HTLanguage language = languages ? HTList_firstObject(languages) : NULL;	    query = HTSQL_printf(buf, 512, "replace into %s values (%u,%l,%T,%T,%S,%S,%S,%S,%S)",				 DEFAULT_SQL_RESOURCES_TABLE,				 index,				 HTAnchor_length(anchor),				 HTAnchor_lastModified(anchor),				 HTAnchor_expires(anchor),				 format != WWW_UNKNOWN ? HTAtom_name(format) : NULL,				 charset ? HTAtom_name(charset) : NULL,				 encoding ? HTAtom_name(encoding) : NULL,				 language ? HTAtom_name(language) : NULL,				 HTAnchor_title(anchor));	    if (HTSQL_query(me->sql, query) != YES) {		HT_FREE(uri);		return NO;	    }	}	/* Insert into the relationship table */	if (parent_anchor) {	    char * parent = HTAnchor_address((HTAnchor *) parent_anchor);	    if (uri && parent && *parent) {		int srcidx = add_uri(me, parent);		add_linktype(me, srcidx, index, "referer", NULL);	    }	    HT_FREE(parent);	}	/* Count one more access */	me->accesses++;	HT_FREE(uri);	return YES;    }    return NO;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香亚洲综合激情啪啪综合| 国产精品久久久久aaaa樱花| 一区二区不卡在线视频 午夜欧美不卡在 | 成人免费毛片片v| 日韩美女一区二区三区| 美腿丝袜一区二区三区| 日韩一区二区免费高清| 免费观看91视频大全| 欧美偷拍一区二区| 日韩中文字幕区一区有砖一区| 91黄色小视频| 亚洲成人福利片| 制服丝袜激情欧洲亚洲| 日本亚洲欧美天堂免费| 日韩免费成人网| 寂寞少妇一区二区三区| 91麻豆精品国产91久久久久| 五月综合激情婷婷六月色窝| 91精品视频网| 国产原创一区二区| 国产调教视频一区| 波多野结衣亚洲| 一区二区三区不卡视频| 欧美一区二区视频网站| 国产自产v一区二区三区c| 日韩欧美在线网站| 久久成人精品无人区| 日本一区二区成人| 95精品视频在线| 三级不卡在线观看| 精品国产一二三区| 97久久超碰国产精品| 性欧美疯狂xxxxbbbb| 久久久噜噜噜久久中文字幕色伊伊| 久久99国产精品久久| 中文字幕乱码日本亚洲一区二区| 91免费视频大全| 亚洲一区二区三区四区五区中文 | 国内精品久久久久影院一蜜桃| 国产清纯美女被跳蛋高潮一区二区久久w | 丝袜脚交一区二区| 欧美激情一区二区在线| 欧美亚洲国产一卡| 国产91色综合久久免费分享| 亚洲亚洲人成综合网络| 亚洲精品一区二区三区精华液| 国产伦精品一区二区三区免费迷| 亚洲色图清纯唯美| 精品国产亚洲在线| 91久久精品日日躁夜夜躁欧美| 免费看黄色91| 亚洲免费毛片网站| 天堂影院一区二区| 欧美一区二区啪啪| 91啦中文在线观看| 国产在线播放一区三区四| 国产精品美女久久久久久久 | 国产成人欧美日韩在线电影| 亚洲欧美成aⅴ人在线观看| 欧美tickling挠脚心丨vk| 91丨九色丨国产丨porny| 麻豆精品一区二区| 一区二区免费看| 久久久久久久精| 欧美狂野另类xxxxoooo| 成人动漫视频在线| 国产在线视频不卡二| 亚洲成a人片综合在线| 成人欧美一区二区三区1314| 久久久蜜桃精品| 91视频91自| 国产精品自在在线| 蜜桃久久av一区| 亚洲第一成年网| 亚洲免费观看高清完整版在线观看熊| 337p亚洲精品色噜噜狠狠| 欧美自拍偷拍午夜视频| av高清久久久| 欧美丰满少妇xxxxx高潮对白| 日韩精品亚洲一区| 日韩精品一级二级| 亚洲欧美日韩国产综合| 国产精品福利av| 久久这里只精品最新地址| 日韩欧美国产一区二区在线播放| 欧美中文字幕一区| 色婷婷综合在线| 国产精品99久久久| 国产一区在线观看麻豆| 精品无人码麻豆乱码1区2区 | 日本欧美一区二区三区乱码| 亚洲五月六月丁香激情| 亚洲已满18点击进入久久| 亚洲天堂成人在线观看| 亚洲男同1069视频| 亚洲美女视频一区| 亚洲综合一区二区三区| 亚洲一区精品在线| 视频一区在线播放| 亚洲国产综合人成综合网站| 亚洲一区二区三区四区的| 卡一卡二国产精品 | 中文字幕欧美国产| 国产清纯白嫩初高生在线观看91| 久久美女艺术照精彩视频福利播放| 欧美日韩亚洲不卡| 欧美精品久久99| 日韩欧美国产三级| 欧美一二三在线| 欧美伦理电影网| 精品国产三级电影在线观看| 精品国产免费久久| 欧美大白屁股肥臀xxxxxx| 欧美国产欧美综合| 一区二区三区在线不卡| 免费成人在线播放| 成人黄色在线网站| 欧美一区二区视频在线观看2020| 国产视频一区二区在线| 亚洲高清不卡在线观看| 国产一区二区三区国产| 亚洲精品乱码久久久久久日本蜜臀| 成人亚洲一区二区一| 在线一区二区三区四区五区| 日韩欧美亚洲国产精品字幕久久久| 中文字幕巨乱亚洲| 日韩高清一区在线| 91农村精品一区二区在线| 欧美videos大乳护士334| 亚洲区小说区图片区qvod| 美女www一区二区| 色久综合一二码| 久久影院电视剧免费观看| 一区二区三区在线播放| 国产精品66部| 欧美一级黄色片| 亚洲国产中文字幕在线视频综合 | 午夜视频在线观看一区| 成人国产免费视频| 欧美α欧美αv大片| 午夜久久久久久久久| 成人免费av在线| www成人在线观看| 日韩二区三区四区| 欧美美女视频在线观看| 亚洲靠逼com| 一本一道久久a久久精品| 欧美性videosxxxxx| 欧美日韩美少妇| 亚洲天天做日日做天天谢日日欢| 韩国三级中文字幕hd久久精品| 欧美日韩久久不卡| 洋洋av久久久久久久一区| 日本在线不卡一区| 国产精品久久久久影院色老大 | 强制捆绑调教一区二区| 欧美视频在线一区| 亚洲自拍偷拍av| 欧美性大战久久| 亚洲国产成人精品视频| 在线亚洲免费视频| 尤物在线观看一区| 欧亚一区二区三区| 亚洲综合色噜噜狠狠| 在线一区二区视频| 亚洲成人精品影院| 欧美精品日韩一本| 日韩精品乱码免费| 日韩欧美国产电影| 韩国欧美国产1区| 国产亚洲欧美在线| 成人性生交大片| 中文字幕永久在线不卡| 91蝌蚪porny| 亚洲国产精品欧美一二99| 3d成人h动漫网站入口| 久久99久国产精品黄毛片色诱| 久久综合一区二区| 成人h精品动漫一区二区三区| 中文字幕欧美激情一区| 91一区二区在线观看| 亚洲一区二区在线观看视频| 欧美精品一级二级| 国产精品一区免费视频| 综合自拍亚洲综合图不卡区| 在线观看亚洲a| 七七婷婷婷婷精品国产| 国产欧美精品国产国产专区| 色综合天天天天做夜夜夜夜做| 亚洲综合视频网| 欧美zozo另类异族| 99精品欧美一区二区三区小说 | 丝袜国产日韩另类美女| 日韩欧美电影一二三| 国产精品亚洲第一区在线暖暖韩国| 日韩一区日韩二区| 欧美一区二区三区系列电影| 国产成人自拍高清视频在线免费播放| 国产精品久久久爽爽爽麻豆色哟哟| 欧美丝袜丝交足nylons图片|