static void __main_clean(int keeppid) { if (g_c == NULL) return; job_cleanup(); ly_db_close(); ly_clc_ip_clean(); ly_entity_store_destroy(); ly_epoll_close(); if (keeppid == 0) lyutil_remove_pid_file(g_c->pid_path, PROGRAM_NAME); if (g_c->conf_path) free(g_c->conf_path); if (g_c->log_path) free(g_c->log_path); if (g_c->db_name) free(g_c->db_name); if (g_c->db_user) free(g_c->db_user); if (g_c->db_pass) free(g_c->db_pass); if (g_c->clc_ip) free(g_c->clc_ip); if (g_c->clc_mcast_ip) free(g_c->clc_mcast_ip); if (g_c->clc_data_dir) free(g_c->clc_data_dir); lyxml_cleanup(); logclose(); free(g_c); return; }
int main(){ printf("Hello, base!"); daemoninit(NOCHDIR, CLOSEFD); if (logopen("daemon.log") < 0) perror("main: logopen failed!"); sleep(3); logtrace("%s: enter!", timestamp()); timepoint start; timepin(&start); sleep(3); timepoint currt; timepin(&currt); timerange interval = timeint(start, currt); logtrace("time elapse: %.4f seconds!", timeint(start, currt)); logtrace("time elapse: %.4f seconds!", interval); logtrace("%s: leave!", timestamp()); logclose(); return 0; }
bool Log_Writer::_write(char *_pbuffer, int len) { if(0 != access(m_filelocation, W_OK)) { pthread_mutex_lock(&m_mutex); //锁内校验 access 看是否在等待锁过程中被其他线程loginit了 避免多线程多次close 和init if(0 != access(m_filelocation, W_OK)) { logclose(); loginit(m_system_level, m_filelocation, m_isappend, m_issync); } pthread_mutex_unlock(&m_mutex); } if(1 == fwrite(_pbuffer, len, 1, fp)) //only write 1 item { if(m_issync) fflush(fp); *_pbuffer='\0'; } else { int x = errno; fprintf(stderr, "Failed to write to logfile. errno:%s message:%s", strerror(x), _pbuffer); return false; } return true; }
/* (re-)initialise logging */ void loginit(const char *ident, int to_stderr, int debug_flag) { if (logstarted) logclose(); logstarted = 1; logdebug = (debug_flag != 0); if (to_stderr) logstderr = 1; else openlog(ident, LOG_PID, LOG_DAEMON); }
int main(){ //logopen("loggertest.log"); logdup(1); logtrace("%s", "Hello, LOG!!!!Hello, LOG!!!!Hello, LOG!!!!Hello, LOG!!!!Hello, LOG!!!!Hello, LOG!!!!Hello, LOG!!!!Hello, LOG!!!!Hello, LOG!!!!"); logerror("%s", "Hello, LOG!!!!"); logstats("%s", "Hello, LOG!!!!"); LOG("%s", "How about this macro?"); logclose(); return 0; }
static void __main_clean(int keeppid) { if (g_c == NULL) return; NodeConfig *c = &g_c->config; NodeSysConfig *s = &g_c->config_sys; ly_epoll_close(); libvirt_close(); if (keeppid == 0) lyutil_remove_pid_file(c->pid_path, PROGRAM_NAME); lyauth_free(&g_c->auth); if (c->clc_ip) free(c->clc_ip); if (c->clc_mcast_ip) free(c->clc_mcast_ip); if (c->conf_path) free(c->conf_path); if (c->sysconf_path) free(c->sysconf_path); if (c->node_data_dir) free(c->node_data_dir); if (c->ins_data_dir) free(c->ins_data_dir); if (c->app_data_dir) free(c->app_data_dir); if (c->log_path) free(c->log_path); if (s->clc_ip) free(s->clc_ip); if (s->node_secret) free(s->node_secret); if (g_c->clc_ip) free(g_c->clc_ip); if (g_c->node_ip) free(g_c->node_ip); if (g_c->node) { luoyun_node_info_cleanup(g_c->node); free(g_c->node); } free(g_c); logclose(); lyxml_cleanup(); return; }
int main(int argc, char *argv[]) { const char *s; logopen("l_pmx.log","w"); s=pmxsearch("田","電田説"); logcheck(s); s=pmxsearch("(田|","電田説"); logcheck(s); s=pmxsearch("<utf>えxもa","電田説モ"); logcheck(!s); s=pmxsearch("<utf>田(もa|)","電田説モ"); logcheck(s); s=pmxsearch("<iso>(<.>)a","電a"); logcheck(s && pmxlen(1) == 1); s=pmxsearch("<utf>(<.>)a","電a"); logcheck(s && pmxlen(1) == 3); s=pmxsearch("<+.>","レモ デンタト"); logcheck(s); s=pmxsearch("<utf><+.>","レモ デンタト"); logcheck(s); s=pmxsearch("<+.>","z電"); logcheck(s); s=pmxsearch("<utf>電田説モ","電田説モ"); logcheck(s); s=pmxsearch("<+.>","z電"); logcheck(s); logclose(); exit(0); }
static void __main_clean(int keeppid) { OSMConfig *c = &g_c->config; loginfo("%s exit normally\n", PROGRAM_NAME); ly_epoll_close(); lyauth_free(&g_c->auth); LY_SAFE_FREE(c->clc_ip) LY_SAFE_FREE(c->clc_mcast_ip) LY_SAFE_FREE(c->osm_secret) LY_SAFE_FREE(c->log_path) LY_SAFE_FREE(c->conf_path) LY_SAFE_FREE(c->storage_ip) LY_SAFE_FREE(c->storage_parm) LY_SAFE_FREE(g_c->clc_ip) LY_SAFE_FREE(g_c->osm_ip) free(g_c); logclose(); return; }
bool LogWriter::write(char *pbuffer, int len) { if(0 != access(m_filelocation, W_OK)) { pthread_mutex_lock(&m_mutex); if(0 != access(m_filelocation, W_OK)) { logclose(); loginit(m_system_level, m_filelocation, m_isappend, m_issync); } pthread_mutex_unlock(&m_mutex); } if(1 == fwrite(pbuffer, len, 1, fp)) { if(m_issync) fflush(fp); *pbuffer='\0'; } else { int x = errno; fprintf(stderr, "Failed to write to logfile. errno:%s message:%s", strerror(x), pbuffer); return false; } return true; }
bool LogWriter::log(ELogLevel l, const char* format, ...) { if (l > level_) { return false; } char* bPtr; va_list ap; va_start(ap, format); int blen = ::vasprintf(&bPtr, format, ap); if (blen < 0) { va_end(ap); return false; } va_end(ap); char header[100] = { 0 }; int hlen = 0; logHeader(header, hlen, l); INIT_IOV(2); SET_IOV_LEN(header, hlen); SET_IOV_LEN(bPtr, blen); if (inode_ != fileNode() || !inode_) { rwlock_.WLock(); if (inode_ != fileNode() || !inode_) { logclose(); loginit(level_, logFile_); } rwlock_.UnLock(); } bool ret = true; rwlock_.RLock(); if (::writev(fd_, iovs, 2) <= 0) { ret = false; } rwlock_.UnLock(); free(bPtr); return ret; }
int main(int argc, char *argv[]) { vec_t v; //int *pk; int k; logopen("l_dpq.log","w"); v=vecnew(int); logcheck(veccount(v) == 0); vecset(int,v,0,37); vecset(int,v,1,5); vecset(int,v,2,79); //logtable(v); vecsort(v,intcmp); logcheck(vecsorted(v)); //logtable(v); vecset(int,v,0,3); vecset(int,v,1,57); vecset(int,v,2,79); //logtable(v); vecsort(v,intcmp); logcheck(vecsorted(v)); //logtable(v); logtrace("random vector (small)"); srand(time(0)); for (k=0;k<=18;k++) { vecset(int,v,k,((rand() & 0xF) <<2)+k); } logtable(v); logclock { vecsort(v); } logcheck(vecsorted(v)); logtable(v); logtrace("random vector (large)"); #define N 1000 for (k=0;k<=N;k++) { vecset(int,v,k,((rand() & 0xF) <<24)+k); } logtrace("done (%d on %d)",veccount(v), vecmax(v)); //logtable(v); logclock { vecsort(v); } //logtable(v); logtrace("sorted vector"); for (k=0;k<=N;k++) { vecset(int,v,k,10000000+k); } //logtable(v); logtrace("done"); logclock { vecsort(v); } //logtable(v); vecfree(v); logclose(); exit(0); }
LogWriter::~LogWriter(){ logclose(); }
void WINAPI csmain(DWORD argc, LPTSTR *argv) { HANDLE pipehandle, atok; DWORD len; UMS_slave_data_t sr; SECURITY_ATTRIBUTES sa; BOOL (PASCAL *duptok)(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE); char c; HMODULE hp = NULL; log_command = "ucs"; log_level = 1; logopen(log_command, 0); getservname(); logmsg(1, "startup %s %s", servname, &ucs_version_id[9]); sa.nLength = sizeof(sa); sa.lpSecurityDescriptor = 0; sa.bInheritHandle = FALSE; statushandle = RegisterServiceCtrlHandler(TEXT(servname), csctrl); if (statushandle == (SERVICE_STATUS_HANDLE)0) { eventlog("RegisterServiceCtrlHandler failed"); return; } status.dwServiceType = SERVICE_WIN32_OWN_PROCESS; status.dwServiceSpecificExitCode = 0; scmstatus(SERVICE_RUNNING, NO_ERROR, 0); if (Check_UMS_Running()) { if (WaitNamedPipe(UWIN_PIPE_TOKEN, MAX_WAIT_TIME)) { pipehandle = CreateFile(UWIN_PIPE_TOKEN, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (pipehandle != INVALID_HANDLE_VALUE) { sr.pid = GetCurrentProcessId(); if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_DEFAULT|TOKEN_ADJUST_GROUPS|TOKEN_ADJUST_PRIVILEGES|TOKEN_EXECUTE|TOKEN_QUERY|TOKEN_IMPERSONATE|TOKEN_DUPLICATE|TOKEN_READ|TOKEN_WRITE|TOKEN_QUERY_SOURCE, &atok)) { if(!(duptok = (BOOL (PASCAL*)(HANDLE,DWORD,SECURITY_ATTRIBUTES*,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,HANDLE*))getapi_addr("advapi32.dll","DuplicateTokenEx",&hp))) error(1, "DuplicateTokenEx function not found"); else { if(duptok && (*duptok)(atok, MAXIMUM_ALLOWED, &sa, SecurityAnonymous, TokenPrimary, &sr.atok)) { if (WriteFile(pipehandle, &sr, sizeof(sr), &len, NULL)) { FlushFileBuffers(pipehandle); ReadFile(pipehandle,&c,sizeof(char),&len,NULL); Sleep(10); } else error(1, "WriteFile failed on TOKEN PIPE"); } else error(1, "DuplicateTokenEx failed"); CloseHandle(atok); } } else { GetUserName(buffer,&siz); error(1, "Unable to open my own process token"); } CloseHandle(pipehandle); } else error(1, "Unable to connect to token pipe"); } else error(1, "WaitNamedPipe failed"); } else error(1, "UWIN Master service is not running"); if (hp) FreeLibrary(hp); logclose(); scmstatus(SERVICE_STOPPED, NO_ERROR, 0); }
int main(int argc, char** argv) { char* op; char* s; int n; char name[80]; char passwd[PATH_MAX]; SERVICE_TABLE_ENTRY table[] = { {NULL, (LPSERVICE_MAIN_FUNCTION)csmain}, {NULL, NULL} }; OSVERSIONINFO osinfo; log_command = "ucs"; log_level = 1; osinfo.dwOSVersionInfoSize = sizeof(osinfo); if (!GetVersionEx(&osinfo) || osinfo.dwPlatformId != VER_PLATFORM_WIN32_NT) { logmsg(LOG_STDERR+0, "not supported for this windows release"); return 1; } logopen(log_command, 0); if ((s = *++argv) && (!_stricmp(s, "--quiet") || !_stricmp(s, "-q") || !_stricmp(s, "quiet"))) { quiet = 1; s = *++argv; } if ((op = s) && _stricmp(op, "start")) { if (s = *++argv) { strncpy(name, s, sizeof(name)); s = *++argv; } else { sfprintf(sfstderr, "Enter Account Name: "); sfscanf(sfstdin, "%s", name); } if (!_stricmp(op, "install")) { if (s && !strcmp(s, "-")) { passwd[0] = 0; if ((n = read(0, passwd, sizeof(passwd))) < 0) { logerr(LOG_STDERR+0, "read error"); return 1; } passwd[n] = 0; s = passwd; } if (!installservice(name, s)) { logerr(LOG_ALL+0, "install %s failed", name); return 1; } logmsg(1, "installed %s", name); } else if (!_stricmp(op, "delete")) { if (!deleteservice(name)) { logerr(LOG_ALL+0, "delete %s failed", name); return 1; } logmsg(1, "deleted %s", name); } else { logmsg(LOG_STDERR+LOG_USAGE+0, "[ --quiet ] [ start | [ delete | install [ name [ password ] ] ] ]"); return 2; } } else { getservname(); table[0].lpServiceName = servname; if (!StartServiceCtrlDispatcher(table)) eventlog("StartServiceCtrlDispatcher failed"); } logclose(); return 0; }
int main(int argc, char *argv[]) { const char *s; const char *p; /* char *q; */ logopen("l_pmx3.log","w"); s = pmxsearch("a|b","xa"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s = pmxsearch("a|b","xb"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s = pmxsearch("x(|a|b)<l>","xcd"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s = pmxsearch("x(|a|b)<l>","xad"); if (logcheck(!s)) {logprintf("NOMATCH: %d",pmxlen(1));} s = pmxsearch("x(|a|b)<l>","xbd"); if (logcheck(!s)) {logprintf("NOMATCH: %d",pmxlen(1));} s = pmxsearch("<d>(|in|cm)<2l>","--4px--"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s = pmxsearch("<d>(|in|cm)<2l>","--4in--"); if (logcheck(!s)) {logprintf("NOMATCH: %d",pmxlen(1));} s = pmxsearch("<d>(|in|cm)<2l>","--4cm--"); if (logcheck(!s)) {logprintf("NOMATCH: %d",pmxlen(1));} s = pmxsearch("<d><!>(in|cm)<2l>","--4px--"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s = pmxsearch("<d><!>(in|cm)<2l>","--4in--"); if (logcheck(!s)) {logprintf("NOMATCH: %d",pmxlen(1));} s = pmxsearch("<d><!>(in|cm)<2l>","--4cm--"); if (logcheck(!s)) {logprintf("NOMATCH: %d",pmxlen(1));} s = pmxsearch("<d>(|)<2l>","--4cm--"); if (logcheck(!s)) {logprintf("NOMATCH: %d",pmxlen(1));} s = pmxsearch("<d>()<2l>","--4cm--"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s = pmxsearch("<d>)<2l>","--4cm--"); logcheck(s); logprintf("*************************"); s= pmxsearch("<2>(a)","abcaad"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s= pmxsearch("<d><?>(cm|in)<l>","a3p"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s= pmxsearch("<d><?>(cm|in)<l>","a3cmp"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s= pmxsearch("<d><?>(cm|in)<l>","a3inp"); if (logcheck(s)) {logprintf("MATCH: %.*s",pmxlen(0),pmxstart(0));} s= pmxsearch("<d><?>(cm|in|<2l>)<l>","a3pxp"); if (logcheck(s)) {logprintf("MATCH: %.*s (%.*s)",pmxlen(0),pmxstart(0),pmxlen(1),pmxstart(1));} s= pmxsearch("<utf>«<*>(\\»|<!=»>)»","a«ABC»x"); if (logcheck(s)) {logprintf("MATCH: %.*s (%.*s)",pmxlen(0),pmxstart(0),pmxlen(1),pmxstart(1));} s= pmxsearch("<utf>«<*>(\\»|<!=»>)»","a«A\\»BC»x"); if (logcheck(s)) {logprintf("MATCH: %.*s (%.*s)",pmxlen(0),pmxstart(0),pmxlen(1),pmxstart(1));} s= pmxsearch("<utf>«<*>(\\»|<!=»>)»","a«»x"); if (logcheck(s)) {logprintf("MATCH: %.*s (%.*s)",pmxlen(0),pmxstart(0),pmxlen(1),pmxstart(1));} s= pmxsearch("(<l>)x<^1>","axa"); if (logcheck(s)) {logprintf("MATCH: %.*s (%.*s)",pmxlen(0),pmxstart(0),pmxlen(1),pmxstart(1));} s= pmxsearch("(<l>)x<^1>","axb"); logcheck(!s); s= pmxsearch("(<l><d>)x<2^1>","a3xa3a3"); if (logcheck(s)) {logprintf("MATCH: %.*s (%.*s)",pmxlen(0),pmxstart(0),pmxlen(1),pmxstart(1));} s= pmxsearch("(<l><d>)x<2^1>","a3xa3"); logcheck(!s); s= pmxsearch("(<l><d>)x<2^1>","a3xa3b3xb3b3"); if (logcheck(s)) {logprintf("MATCH: %.*s (%.*s)",pmxlen(0),pmxstart(0),pmxlen(1),pmxstart(1));} s= pmxsearch("(<l>)x<^2>","a3xa3"); logcheck(!s); p = "a<!>(bc|de)<2l>"; s = pmxsearch(p,"abcbc"); logcheck(!s); s = pmxsearch(p,"axybc"); if (logcheck(s)) {logprintf("MATCH: %.*s (%.*s)",pmxlen(0),pmxstart(0),pmxlen(1),pmxstart(1));} logclose(); exit(0); }
int main(int argc, char **argv) { if (argc > 1) { if (strcasecmp(argv[1], "-v") == 0) { fprintf(stdout, "compile time [%s %s]\n", __DATE__, __TIME__); return -1; } } if (myconfig_init(argc, argv)) { fprintf(stderr, "myconfig_init error [%s]\n", strerror(errno)); return -1; } EnterDaemonMode(); t_path_info path; memset(&path, 0, sizeof(path)); if (init_para(&path)) return -1; int ret = init_shm(&path); if (ret < 0) { LOG(fplog, LOG_ERROR, "init_shm err %m\n"); report_2_nm(CDC_SHM_INIT_ERR, ID, LN); return -1; } LOG(fplog, LOG_NORMAL, "cdc start ok!\n"); if (ret == 0 ) { if (cdc_sub(&path, CDC_PLUS)) { LOG(fplog, LOG_ERROR, "init_plus err %m\n"); report_2_nm(CDC_NORMAL_ERR, ID, LN); return -1; } } LOG(fplog, LOG_NORMAL, "plus dir process ok!\n"); time_t cur = time(NULL); time_t last = 0; int shm_sync_time = myconfig_get_intval("shm_synctime", 3600); while (1) { cdc_sub(&path, CDC_REALTIME); cur = time(NULL); if (cur - last >= shm_sync_time) { last = cur; do_sync_2_disk(&path); } sleep(10); } logclose(fplog); return 0; }