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

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

?? eventlog.c

?? 打魔獸戰網的都知道他是什么
?? C
字號:
/* * Copyright (C) 1999  Rob Crittenden (rcrit@greyoak.com) * Copyright (C) 1999,2000  Ross Combs (rocombs@cs.nmsu.edu) * * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */#include "common/setup_before.h"#include <stdio.h>#ifdef HAVE_STDDEF_H# include <stddef.h>#else# ifndef NULL#  define NULL ((void *)0)# endif#endif#include <errno.h>#include "compat/strerror.h"#ifdef HAVE_STRING_H# include <string.h>#else# ifdef HAVE_STRINGS_H#  include <strings.h># endif#endif#include "compat/strcasecmp.h"#include "compat/vargs.h"#ifdef TIME_WITH_SYS_TIME# include <sys/time.h># include <time.h>#else# ifdef HAVE_SYS_TIME_H#  include <sys/time.h># else#  include <time.h># endif#endif#include "compat/strftime.h"#ifdef HAVE_UNISTD_H# include <unistd.h>#endif#include "common/eventlog.h"#include "common/hexdump.h"#include "common/setup_after.h"#ifdef WIN32_GUI# include "win32/winmain.h"#endifstatic FILE *           eventstrm=NULL;static t_eventlog_level currlevel=eventlog_level_debug|                                  eventlog_level_info|                                  eventlog_level_warn|                                  eventlog_level_error|                                  eventlog_level_fatal;/* FIXME: maybe this should be default for win32 */static int eventlog_debugmode=0;extern void eventlog_set_debugmode(int debugmode){    eventlog_debugmode = debugmode;}extern void eventlog_set(FILE * fp){    eventstrm = fp;}extern FILE * eventlog_get(void){  return eventstrm;}extern int eventlog_close(void){   fclose(eventstrm);   return 0;}extern int eventlog_open(char const * filename){    FILE * temp;        if (!filename)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL filename");	return -1;    }        if (!(temp = fopen(filename,"a")))    {	eventlog(eventlog_level_error,__FUNCTION__,"could not open file \"%s\" for appending (fopen: %s)",filename,pstrerror(errno));	return -1;    }        if (eventstrm && eventstrm!=stderr) /* close old one */	if (fclose(eventstrm)<0)	{	    eventstrm = temp;	    eventlog(eventlog_level_error,__FUNCTION__,"could not close previous logfile after writing (fclose: %s)",pstrerror(errno));	    return 0;	}    eventstrm = temp;        return 0;}extern void eventlog_clear_level(void){    currlevel = eventlog_level_none;}extern int eventlog_add_level(char const * levelname){    if (!levelname)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL levelname");	return -1;    }        if (strcasecmp(levelname,"trace")==0)    {	currlevel |= eventlog_level_trace;	return 0;    }    if (strcasecmp(levelname,"debug")==0)    {	currlevel |= eventlog_level_debug;	return 0;    }    if (strcasecmp(levelname,"info")==0)    {	currlevel |= eventlog_level_info;	return 0;    }    if (strcasecmp(levelname,"warn")==0)    {	currlevel |= eventlog_level_warn;	return 0;    }    if (strcasecmp(levelname,"error")==0)    {	currlevel |= eventlog_level_error;	return 0;    }    if (strcasecmp(levelname,"fatal")==0)    {	currlevel |= eventlog_level_fatal;	return 0;    }        eventlog(eventlog_level_error,__FUNCTION__,"got bad levelname \"%s\"",levelname);    return -1;}extern int eventlog_del_level(char const * levelname){    if (!levelname)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL levelname");	return -1;    }        if (strcasecmp(levelname,"trace")==0)    {	currlevel &= ~eventlog_level_trace;	return 0;    }    if (strcasecmp(levelname,"debug")==0)    {	currlevel &= ~eventlog_level_debug;	return 0;    }    if (strcasecmp(levelname,"info")==0)    {	currlevel &= ~eventlog_level_info;	return 0;    }    if (strcasecmp(levelname,"warn")==0)    {	currlevel &= ~eventlog_level_warn;	return 0;    }    if (strcasecmp(levelname,"error")==0)    {	currlevel &= ~eventlog_level_error;	return 0;    }    if (strcasecmp(levelname,"fatal")==0)    {	currlevel &= ~eventlog_level_fatal;	return 0;    }            eventlog(eventlog_level_error,__FUNCTION__,"got bad levelname \"%s\"",levelname);    return -1;}extern char const * eventlog_get_levelname_str(t_eventlog_level level){  switch (level)  {  case eventlog_level_trace:    return "trace";  case eventlog_level_debug:    return "debug";  case eventlog_level_info:    return "info ";  case eventlog_level_warn:    return "warn ";  case eventlog_level_error:    return "error";  case eventlog_level_fatal:    return "fatal";  default:    return "unknown";  } }extern void eventlog_hexdump_data(void const * data, unsigned int len){    unsigned int i;    char dst[100];    unsigned char * datac;    if (!data) {	eventlog(eventlog_level_error, __FUNCTION__, "got NULL data");	return;    }    for (i = 0, datac = (char*)data; i < len; i += 16, datac += 16)    {	hexdump_string(datac, (len - i < 16) ? (len - i) : 16, dst, i);	fprintf(eventstrm,"%s\n",dst);#ifdef WIN32_GUI        gui_lprintf(eventlog_level_info,"%s\n",dst);#endif       if (eventlog_debugmode)       {	 printf("%s\n",dst);       }    }    if (eventlog_debugmode) fflush(stdout);    fflush(eventstrm);}extern void eventlog(t_eventlog_level level, char const * module, char const * fmt, ...){    va_list     args;    char        time_string[EVENT_TIME_MAXLEN];    struct tm * tmnow;    time_t      now;        if (!(level&currlevel))	return;    if (!eventstrm)	return;        /* get the time before parsing args */    time(&now);    if (!(tmnow = localtime(&now)))	strcpy(time_string,"?");    else	strftime(time_string,EVENT_TIME_MAXLEN,EVENT_TIME_FORMAT,tmnow);        if (!module)    {	fprintf(eventstrm,"%s [error] eventlog: got NULL module\n",time_string);#ifdef WIN32_GUI        gui_lprintf(eventlog_level_error,"%s [error] eventlog: got NULL module\n",time_string);#endif	fflush(eventstrm);	return;    }    if (!fmt)    {	fprintf(eventstrm,"%s [error] eventlog: got NULL fmt\n",time_string);#ifdef WIN32_GUI        gui_lprintf(eventlog_level_error,"%s [error] eventlog: got NULL fmt\n",time_string);#endif	fflush(eventstrm);	return;    }        fprintf(eventstrm,"%s [%s] %s: ",time_string,eventlog_get_levelname_str(level),module);#ifdef WIN32_GUI    gui_lprintf(level,"%s [%s] %s: ",time_string,eventlog_get_levelname_str(level),module);#endif    VA_START(args,fmt);#ifdef HAVE_VPRINTF    vfprintf(eventstrm,fmt,args);#ifdef WIN32_GUI    gui_lvprintf(level,fmt,args);#endif#else# if HAVE__DOPRNT    _doprnt(fmt,args,eventstrm);# else    fprintf(eventstrm,"sorry, vfprintf() and _doprnt() are not available on this system");# endif#endif    va_end(args);    fprintf(eventstrm,"\n");#ifdef WIN32_GUI    gui_lprintf(level,"\n");#endif    if (eventlog_debugmode) {    	printf("%s [%s] %s: ",time_string,eventlog_get_levelname_str(level),module);    	va_start(args,fmt);#ifdef HAVE_VPRINTF    	vprintf(fmt,args);#else# if HAVE__DOPRNT    	_doprnt(fmt,args,stdout);# else    	printf("sorry, vfprintf() and _doprnt() are not available on this system");# endif#endif    	va_end(args);    	printf("\n");	fflush(stdout);    }    fflush(eventstrm);}extern void eventlog_step(char const * filename, t_eventlog_level level, char const * module, char const * fmt, ...){    va_list args;    char        time_string[EVENT_TIME_MAXLEN];    struct tm * tmnow;    time_t      now;    FILE *      fp;        if (!(level&currlevel))	return;    if (!eventstrm)	return;        if (!(fp = fopen(filename, "a")))	return;        /* get the time before parsing args */    time(&now);    if (!(tmnow = localtime(&now)))	strcpy(time_string,"?");    else	strftime(time_string,EVENT_TIME_MAXLEN,EVENT_TIME_FORMAT,tmnow);        if (!module)    {	fprintf(fp,"%s [error] eventlog_step: got NULL module\n",time_string);	fclose(fp);	return;    }    if (!fmt)    {	fprintf(fp,"%s [error] eventlog_step: got NULL fmt\n",time_string);	fclose(fp);	return;    }        fprintf(fp,"%s [%s] %s: ",time_string,eventlog_get_levelname_str(level),module);    va_start(args,fmt);#ifdef HAVE_VPRINTF    vfprintf(fp,fmt,args);#else# if HAVE__DOPRNT    _doprnt(fmt,args,fp);# else    fprintf(fp,"sorry, vfprintf() and _doprnt() are not available on this system");# endif#endif    va_end(args);    fprintf(fp,"\n");    fclose(fp);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产馆精品极品| 经典三级视频一区| 一区二区三区在线视频观看58| 国产三级精品在线| 国产精品婷婷午夜在线观看| 国产精品色哟哟| 综合久久久久久| 一区二区三区高清在线| 亚洲国产成人va在线观看天堂| 日日摸夜夜添夜夜添国产精品| 五月婷婷欧美视频| 久久精品国产亚洲5555| 成人美女视频在线观看| 色爱区综合激月婷婷| 欧美二区三区的天堂| 精品国产成人系列| 中文字幕免费观看一区| 亚洲成人资源网| 国产麻豆精品一区二区| 成人黄色片在线观看| 欧美性三三影院| 精品对白一区国产伦| 中文字幕视频一区| 麻豆精品一区二区三区| 狠狠色综合日日| 91久久久免费一区二区| 91精品黄色片免费大全| 国产精品黄色在线观看| 偷窥少妇高潮呻吟av久久免费| 极品少妇xxxx精品少妇| 日本乱人伦aⅴ精品| 精品国产乱码久久久久久免费| 中文字幕制服丝袜一区二区三区| 亚洲mv在线观看| 成人网在线免费视频| 7777精品久久久大香线蕉| 欧美—级在线免费片| 日韩电影在线免费看| 99久久精品国产网站| 精品电影一区二区| 亚洲成人资源网| 91视频国产观看| 欧美韩国日本一区| 美女在线视频一区| 欧美色中文字幕| 亚洲欧美综合在线精品| 国产一区啦啦啦在线观看| 91精品国产手机| 亚洲午夜激情av| 91玉足脚交白嫩脚丫在线播放| www激情久久| 日韩国产精品久久久久久亚洲| 成人h动漫精品一区二| 精品1区2区在线观看| 日本欧美加勒比视频| 欧美日韩专区在线| 一区二区在线观看不卡| 成人综合婷婷国产精品久久免费| 日韩写真欧美这视频| 偷窥少妇高潮呻吟av久久免费| 91美女精品福利| 日韩毛片一二三区| 色综合久久天天综合网| 国产精品欧美经典| 懂色av噜噜一区二区三区av| 久久久久九九视频| 国产在线一区二区综合免费视频| 欧美日韩精品二区第二页| 亚洲高清视频中文字幕| 欧美在线观看一二区| 亚洲综合在线五月| 欧美揉bbbbb揉bbbbb| 亚洲3atv精品一区二区三区| 欧美色男人天堂| 午夜精品福利一区二区三区蜜桃| 欧美综合亚洲图片综合区| 亚洲制服丝袜av| 欧美日韩高清不卡| 日本91福利区| 精品毛片乱码1区2区3区| 国产主播一区二区| 国产精品青草久久| 欧美主播一区二区三区| 午夜成人免费电影| 精品盗摄一区二区三区| 成人午夜激情在线| 亚洲国产一区二区三区青草影视| 欧美男生操女生| 国内精品免费**视频| 日本一区二区三区久久久久久久久不| 风流少妇一区二区| 亚洲精品大片www| 日韩一二在线观看| 国产成人精品网址| 亚洲一区二区在线免费看| 91精品国产综合久久福利软件| 狠狠色丁香久久婷婷综| 国产精品成人免费| 9191精品国产综合久久久久久 | 丰满放荡岳乱妇91ww| 国产精品久久看| 欧美系列一区二区| 麻豆成人在线观看| 亚洲图片另类小说| 欧美一区二区二区| 99久久精品免费精品国产| 亚洲永久免费av| 国产亚洲精品bt天堂精选| 在线视频一区二区免费| 国产一区二区三区电影在线观看| 亚洲免费观看在线观看| 精品99一区二区三区| 在线亚洲一区二区| 国产精品一区专区| 日韩在线a电影| 最近中文字幕一区二区三区| 日韩一区二区三区视频在线 | 6080国产精品一区二区| 粉嫩高潮美女一区二区三区| 日本成人中文字幕| 亚洲人成网站影音先锋播放| 精品国产三级电影在线观看| 欧美在线|欧美| 成人黄色免费短视频| 久久99久久久欧美国产| 午夜激情综合网| 亚洲激情在线激情| 欧美国产精品一区| 欧美成人在线直播| 欧美一区二区三区四区五区| 一本色道久久综合亚洲91| 国产成人在线视频网站| 精彩视频一区二区| 日本女优在线视频一区二区| 亚洲电影一区二区三区| 亚洲人成小说网站色在线 | 日韩综合一区二区| 一级精品视频在线观看宜春院| 中文字幕免费不卡| 欧美激情在线看| 久久精品男人天堂av| 日韩视频中午一区| 日韩西西人体444www| 日韩一区二区精品| 欧美一区二区免费视频| 91精品免费在线| 日韩一级在线观看| 欧美精品一区二区三区久久久 | 国产精品亲子伦对白| 久久久久久久综合狠狠综合| 久久综合色播五月| 国产三级三级三级精品8ⅰ区| 久久久www成人免费无遮挡大片| 欧美xxxxx裸体时装秀| 26uuu亚洲综合色| 国产日产亚洲精品系列| 国产精品视频免费看| 亚洲视频免费在线观看| 亚洲一区二区三区四区五区黄| 亚洲高清视频的网址| 奇米一区二区三区av| 国产精品综合二区| av亚洲精华国产精华| 91行情网站电视在线观看高清版| 精品视频在线免费| 日韩欧美黄色影院| 国产精品亲子伦对白| 亚洲一区二区影院| 久久精品国产网站| 成人免费精品视频| 欧美午夜精品久久久| 日韩无一区二区| 国产精品区一区二区三| 亚洲综合一区二区精品导航| 热久久久久久久| 粉嫩av一区二区三区在线播放 | 天天爽夜夜爽夜夜爽精品视频| 蜜桃视频一区二区三区在线观看 | 国产69精品久久777的优势| 91视视频在线观看入口直接观看www| 欧美午夜寂寞影院| 国产欧美日本一区视频| 亚洲最大色网站| 国产麻豆91精品| 成人成人成人在线视频| 欧美日韩不卡视频| 久久久久国色av免费看影院| 亚洲精品综合在线| 国产精品1区2区3区| 欧美色偷偷大香| 国产精品视频观看| 丝瓜av网站精品一区二区| av在线不卡电影| 日韩欧美一级二级三级久久久 | 欧美偷拍一区二区| 国产视频一区不卡| 日韩主播视频在线| 欧美午夜一区二区三区免费大片| 久久亚洲精品国产精品紫薇| 婷婷亚洲久悠悠色悠在线播放|