// Init the file layer, ready to read and write the file from the info // of ifile. int File_Layer_Init(char *filename, Inode *ifile, u_int cachesize) { // filename is the flash file that are going to open, these argument are passed by user, layer to layer. // then we need to read the ifile from the checkpoint to the // memory, please return like:*ifile = &(Log.checkPoint.ifile) // in phase 2, we need add more argument for lfs [option], // such as cachesize and the interval of checkpoint time. return Log_Init(filename, ifile, cachesize /* other arguement in phase 2*/); }
/***************************************************************************** 函 数 名 : Log_SelfTask 功能描述 : 打印自处理任务 输入参数 : VOS_UINT32 ulPara1 VOS_UINT32 ulPara2 VOS_UINT32 ulPara3 VOS_UINT32 ulPara4 输出参数 : 无 返 回 值 : VOS_VOID 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2007年4月24日 作 者 : 李霄 46160 修改内容 : 新生成函数 *****************************************************************************/ VOS_VOID Log_SelfTask(VOS_UINT32 ulPara1, VOS_UINT32 ulPara2, VOS_UINT32 ulPara3, VOS_UINT32 ulPara4) { VOS_INT32 sRet; VOS_UINT32 ulLen; /*lint -e813*/ VOS_CHAR acTmpStr[LOG_MAX_COLUMN_VAL_EX + 1]; /*lint +e813*/ ulPara1 = ulPara1; ulPara2 = ulPara2; ulPara3 = ulPara3; ulPara4 = ulPara4; Log_Init(); for(;;) { if(VOS_OK != VOS_SmP(g_stLogEnt.semOmPrint, 0)) { continue; } if (LOG_NULL_PTR == g_stLogEnt.rngOmRbufId) { continue; } if (LOG_TRUE == OM_RingBufferIsEmpty(g_stLogEnt.rngOmRbufId)) { continue; } sRet = OM_RingBufferGet(g_stLogEnt.rngOmRbufId, (VOS_CHAR*)(&ulLen), sizeof(VOS_UINT32)); if (sizeof(VOS_UINT32) != (VOS_UINT32)sRet) { continue; } if(LOG_MAX_COLUMN_VAL_EX < ulLen) { OM_RingBufferFlush(g_stLogEnt.rngOmRbufId); continue; } sRet = OM_RingBufferGet(g_stLogEnt.rngOmRbufId, acTmpStr, (VOS_INT32)ulLen); if (ulLen == (VOS_UINT32)sRet) { Log_Output(g_stLogEnt.ulLogOutput, acTmpStr, ulLen); } } }
int main(int argc, char *argv[]) { int n = 8; Log_Init("/tmp/httpserver.log", LOGFLAG_FILE); LOG_ERRORS("error !\n"); LOG_WARNS("warn !\n"); LOG_INFOS("info !\n"); LOG_DEBUGS("debug !\n"); LOG_TRACES("trace !\n"); Log_Close(); return 0; }
/***************************************************************************** 函 数 名 : Log_SelfTask 功能描述 : 打印自处理任务 输入参数 : unsigned long ulPara1 unsigned long ulPara2 unsigned long ulPara3 unsigned long ulPara4 输出参数 : 无 返 回 值 : void 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2007年4月24日 作 者 : 李霄 46160 修改内容 : 新生成函数 *****************************************************************************/ void Log_SelfTask(unsigned long ulPara1, unsigned long ulPara2, unsigned long ulPara3, unsigned long ulPara4) { int sRet; unsigned long ulLen; /*lint -e813*/ char acTmpStr[LOG_MAX_COLUMN_VAL_EX + 1]; /*lint +e813*/ Log_Init(); for(;;) { if(VOS_OK != VOS_SmP(g_stLogEnt.semOmPrint, 0)) { continue; } if (LOG_NULL_PTR == g_stLogEnt.rngOmRbufId) { continue; } if (LOG_TRUE == OM_RingBufferIsEmpty(g_stLogEnt.rngOmRbufId)) { continue; } sRet = OM_RingBufferGet(g_stLogEnt.rngOmRbufId, (char*)(&ulLen), sizeof(unsigned long)); if (sizeof(unsigned long) != (unsigned long)sRet) { continue; } if(LOG_MAX_COLUMN_VAL_EX < ulLen) { OM_RingBufferFlush(g_stLogEnt.rngOmRbufId); continue; } sRet = OM_RingBufferGet(g_stLogEnt.rngOmRbufId, acTmpStr, (long)ulLen); if (ulLen == (unsigned long)sRet) { Log_Output(g_stLogEnt.ulLogOutput, acTmpStr, ulLen); } } }
void Log(char level, char *format, ...) { va_list valist; va_start(valist, format); if (!initialized) { Log_Init(); } switch (level) { case L_FATAL: if (fatal_out != NULL && vfprintf(fatal_out, format, valist) < 0) Log(L_TRACE, "Could not write to FATAL log output"); break; case L_ERROR: if (error_out != NULL && vfprintf(error_out, format, valist) < 0) Log(L_TRACE, "Could not write to ERROR log output"); break; case L_WARN: if (warn_out != NULL && vfprintf(warn_out, format, valist) < 0) Log(L_TRACE, "Could not write to WARN log output"); break; case L_INFO: if (info_out != NULL && vfprintf(info_out, format, valist) < 0) Log(L_TRACE, "Could not write to INFO log output"); break; case L_DEBUG: if (debug_out != NULL && vfprintf(debug_out, format, valist) < 0) Log(L_TRACE, "Could not write to DEBUG log output"); break; case L_TRACE: if (trace_out != NULL) vfprintf(trace_out, format, valist); break; default: break; } va_end(valist); }
int BiribitClientAddLogCallback(BiribitClientLogCallback _pCallback) { Log_Init(); return Log_AddCallback((LogCallback) _pCallback); }
void BiribitClientSetLogFile(const char* path) { Log_Init(); Log_SetLogFile(path); }
/** * The main() function of ngIRCd. * * Here all starts: this function is called by the operating system loader, * it is the first portion of code executed of ngIRCd. * * @param argc The number of arguments passed to ngIRCd on the command line. * @param argv An array containing all the arguments passed to ngIRCd. * @return Global exit code of ngIRCd, zero on success. */ GLOBAL int main(int argc, const char *argv[]) { bool ok, configtest = false; bool NGIRCd_NoDaemon = false; int i; size_t n; #if defined(DEBUG) && defined(HAVE_MTRACE) /* enable GNU libc memory tracing when running in debug mode * and functionality available */ mtrace(); #endif umask(0077); NGIRCd_SignalQuit = NGIRCd_SignalRestart = false; NGIRCd_Passive = false; #ifdef DEBUG NGIRCd_Debug = false; #endif #ifdef SNIFFER NGIRCd_Sniffer = false; #endif strlcpy(NGIRCd_ConfFile, SYSCONFDIR, sizeof(NGIRCd_ConfFile)); strlcat(NGIRCd_ConfFile, CONFIG_FILE, sizeof(NGIRCd_ConfFile)); Fill_Version(); /* parse conmmand line */ for (i = 1; i < argc; i++) { ok = false; if (argv[i][0] == '-' && argv[i][1] == '-') { /* long option */ if (strcmp(argv[i], "--config") == 0) { if (i + 1 < argc) { /* Ok, there's an parameter left */ strlcpy(NGIRCd_ConfFile, argv[i+1], sizeof(NGIRCd_ConfFile)); /* next parameter */ i++; ok = true; } } if (strcmp(argv[i], "--configtest") == 0) { configtest = true; ok = true; } #ifdef DEBUG if (strcmp(argv[i], "--debug") == 0) { NGIRCd_Debug = true; ok = true; } #endif if (strcmp(argv[i], "--help") == 0) { Show_Version(); puts(""); Show_Help( ); puts( "" ); exit(1); } if (strcmp(argv[i], "--nodaemon") == 0) { NGIRCd_NoDaemon = true; ok = true; } if (strcmp(argv[i], "--passive") == 0) { NGIRCd_Passive = true; ok = true; } #ifdef SNIFFER if (strcmp(argv[i], "--sniffer") == 0) { NGIRCd_Sniffer = true; ok = true; } #endif if (strcmp(argv[i], "--version") == 0) { Show_Version(); exit(1); } } else if(argv[i][0] == '-' && argv[i][1] != '-') { /* short option */ for (n = 1; n < strlen(argv[i]); n++) { ok = false; #ifdef DEBUG if (argv[i][n] == 'd') { NGIRCd_Debug = true; ok = true; } #endif if (argv[i][n] == 'f') { if (!argv[i][n+1] && i+1 < argc) { /* Ok, next character is a blank */ strlcpy(NGIRCd_ConfFile, argv[i+1], sizeof(NGIRCd_ConfFile)); /* go to the following parameter */ i++; n = strlen(argv[i]); ok = true; } } if (argv[i][n] == 'h') { Show_Version(); puts(""); Show_Help(); puts(""); exit(1); } if (argv[i][n] == 'n') { NGIRCd_NoDaemon = true; ok = true; } if (argv[i][n] == 'p') { NGIRCd_Passive = true; ok = true; } #ifdef SNIFFER if (argv[i][n] == 's') { NGIRCd_Sniffer = true; ok = true; } #endif if (argv[i][n] == 't') { configtest = true; ok = true; } if (argv[i][n] == 'V') { Show_Version(); exit(1); } if (!ok) { printf("%s: invalid option \"-%c\"!\n", PACKAGE_NAME, argv[i][n]); printf("Try \"%s --help\" for more information.\n", PACKAGE_NAME); exit(1); } } } if (!ok) { printf("%s: invalid option \"%s\"!\n", PACKAGE_NAME, argv[i]); printf("Try \"%s --help\" for more information.\n", PACKAGE_NAME); exit(1); } } /* Debug level for "VERSION" command */ NGIRCd_DebugLevel[0] = '\0'; #ifdef DEBUG if (NGIRCd_Debug) strcpy(NGIRCd_DebugLevel, "1"); #endif #ifdef SNIFFER if (NGIRCd_Sniffer) { NGIRCd_Debug = true; strcpy(NGIRCd_DebugLevel, "2"); } #endif if (configtest) { Show_Version(); puts(""); exit(Conf_Test()); } while (!NGIRCd_SignalQuit) { /* Initialize global variables */ NGIRCd_Start = time(NULL); (void)strftime(NGIRCd_StartStr, 64, "%a %b %d %Y at %H:%M:%S (%Z)", localtime(&NGIRCd_Start)); NGIRCd_SignalRestart = false; NGIRCd_SignalQuit = false; /* Initialize modules, part I */ Log_Init(!NGIRCd_NoDaemon); Random_Init(); Conf_Init(); Log_ReInit(); /* Initialize the "main program": chroot environment, user and * group ID, ... */ if (!NGIRCd_Init(NGIRCd_NoDaemon)) { Log(LOG_ALERT, "Fatal: Initialization failed"); exit(1); } /* Initialize modules, part II: these functions are eventually * called with already dropped privileges ... */ Channel_Init(); Client_Init(); Conn_Init(); Class_Init(); if (!io_library_init(CONNECTION_POOL)) { Log(LOG_ALERT, "Fatal: Could not initialize IO routines: %s", strerror(errno)); exit(1); } if (!Signals_Init()) { Log(LOG_ALERT, "Fatal: Could not set up signal handlers: %s", strerror(errno)); exit(1); } /* Create protocol and server identification. The syntax * used by ngIRCd in PASS commands and the known "extended * flags" are described in doc/Protocol.txt. */ #ifdef IRCPLUS snprintf(NGIRCd_ProtoID, sizeof NGIRCd_ProtoID, "%s%s %s|%s:%s", PROTOVER, PROTOIRCPLUS, PACKAGE_NAME, PACKAGE_VERSION, IRCPLUSFLAGS); #ifdef ZLIB strcat(NGIRCd_ProtoID, "Z"); #endif if (Conf_OperCanMode) strcat(NGIRCd_ProtoID, "o"); #else /* IRCPLUS */ snprintf(NGIRCd_ProtoID, sizeof NGIRCd_ProtoID, "%s%s %s|%s", PROTOVER, PROTOIRC, PACKAGE_NAME, PACKAGE_VERSION); #endif /* IRCPLUS */ strlcat(NGIRCd_ProtoID, " P", sizeof NGIRCd_ProtoID); #ifdef ZLIB strlcat(NGIRCd_ProtoID, "Z", sizeof NGIRCd_ProtoID); #endif LogDebug("Protocol and server ID is \"%s\".", NGIRCd_ProtoID); Channel_InitPredefined(); if (Conn_InitListeners() < 1) { Log(LOG_ALERT, "Server isn't listening on a single port!" ); Log(LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME); Pidfile_Delete(); exit(1); } /* Main Run Loop */ Conn_Handler(); Conn_Exit(); Client_Exit(); Channel_Exit(); Class_Exit(); Log_Exit(); } Pidfile_Delete(); return 0; } /* main */
/** * Initialise emulation */ static void Main_Init(void) { /* Open debug log file */ if (!Log_Init()) { fprintf(stderr, "Logging/tracing initialization failed\n"); exit(-1); } Log_Printf(LOG_INFO, PROG_NAME ", compiled on: " __DATE__ ", " __TIME__ "\n"); /* Init SDL's video subsystem. Note: Audio and joystick subsystems will be initialized later (failures there are not fatal). */ if (SDL_Init(SDL_INIT_VIDEO | Opt_GetNoParachuteFlag()) < 0) { fprintf(stderr, "Could not initialize the SDL library:\n %s\n", SDL_GetError() ); exit(-1); } ClocksTimings_InitMachine ( ConfigureParams.System.nMachineType ); Resolution_Init(); SDLGui_Init(); Screen_Init(); Main_SetTitle(NULL); // HostScreen_Init(); DSP_Init(); // Floppy_Init(); M68000_Init(); /* Init CPU emulation */ // Audio_Init(); // DmaSnd_Init(); Keymap_Init(); /* call menu at startup */ if (!File_Exists(sConfigFileName) || ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup) Dialog_DoProperty(); else Dialog_CheckFiles(); if (bQuitProgram) { SDL_Quit(); exit(-2); } // const char *err_msg; // // while ((err_msg=Reset_Cold())!=NULL) // { // DlgMissing_Rom(); // if (bQuitProgram) { // Main_RequestQuit(); // break; // } // } Reset_Cold(); // if (bQuitProgram) { // SDL_Quit(); // exit(-2); // } IoMem_Init(); /* done as last, needs CPU & DSP running... */ DebugUI_Init(); }