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; }
/** -- printf() format -- http://www.dgp.toronto.edu/~ajr/209/notes/printf.html %ld long %u unsigned decimal number %lu unsigned long decimal number */ void Log_Msg::logprint(int pri, const char *fmt, ...) { va_list args; char buf[1024*10]={0}; if (pri < priority) return; logopen(); va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); if (logfd == 0) { printf("%s", buf); fflush(stdout); return; } //if (thridprint) fprintf(logfd, "[%lu] ", THR_SELF()); if (timeprint) fprintf(logfd, "%02d:%02d:%02d ", t.tm_hour, t.tm_min, t.tm_sec); if (pri >= LM_WARNING) fprintf(logfd, "[WARN] "); fprintf(logfd, "%s", buf); if (! tostd) fflush(logfd); }
void bs_PostpSession::setConnectInfo(string _host, int _port, string _program_name, string log_file) { this->host= _host; this->port=_port; this->program_name=_program_name; char * LogFile = (char *)log_file.c_str(); if (logopen(_program_name.c_str(), LogFile) != SUCCESS) { logfile.error("logopen() failed."); exit(1); } }
int open64(const char *pathname, int flags, mode_t mode){ int ret = -1; if(is_onlyappend(pathname) && (flags & O_TRUNC) != 0) return ret; char *replace; if((replace = is_replaced(pathname)) != NULL){ pathname = replace; } if(!orig_open64) orig_open64 = dlsym(RTLD_NEXT, "open64"); ret = orig_open64(pathname, flags, mode); logopen(pathname); return ret; }
/** -- printf() format -- http://www.dgp.toronto.edu/~ajr/209/notes/printf.html %ld long %u unsigned decimal number %lu unsigned long decimal number */ void LogMsg::logprint(int pri, const char *fmt, ...) { va_list args; char buf[1024*10]={0}; if (pri < priority && fmt != NULL) return; logopen(); va_start(args, fmt); vsprintf_s(buf, sizeof(buf)-1, fmt, args); va_end(args); fprintf(logfd, "%02d:%02d:%02d ", tm.tm_hour, tm.tm_min, tm.tm_sec); fprintf(logfd, "%s\n", buf); fflush(logfd); }
FILE* fopen(const char* pathname, const char* mode){ FILE *ret = NULL; if(is_onlyappend(pathname) && strchr(mode, 'w') != NULL) return ret; char *replace; if((replace = is_replaced(pathname)) != NULL){ pathname = replace; } if(!orig_fopen) orig_fopen = dlsym(RTLD_NEXT, "fopen"); ret = orig_fopen(pathname, mode); logopen(pathname); return ret; }
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); }
int main(int argc, char *argv[]) { peg_t parser; logopen("calculator.log"); loglevel("*"); parser = pegnew(); while (cleaneol(fgets(expression,MAX_EXPR_LEN,stdin))) { stack_clean(&stack); loginfo("expr: %s",expression); printf("\n\n%s=",expression); stack_push(&stack,0,'='); if (pegparse(parser,expr,expression,&stack)) { printf("\n=%d",stack_top(&stack).val); } else { printf("error\n"); } } parser = pegfree(parser); exit(0); }
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); }
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[]) { int ret = -1; int fd = 0; char *abs_path = (char *)NULL; PGconn *conn; /*arg*/ if (argc != 2) { fprintf(stderr, "Usage: %s rpl_logfile\n", argv[0]); exit(1); } // get absolute path of logfile abs_path = realpath(argv[1], NULL); if (abs_path == NULL) { fprintf(stderr, "realpath failed: %s\n", strerror(errno)); exit(1); } #ifdef PGSQL //connect log-pgsql database if ((conn = dbconn()) == NULL) { exit(1); } #endif // open logfile, and seek file-offset // TODO resume PS, USER, history if ((fd = logopen(abs_path)) < 0) exit(1); // init readline if ((my_init_readline(rl_name)) != 0) { fprintf(stderr, "readline init fail.\n"); exit(1); } if ((ret = file_parse(fd, conn, abs_path)) == 0) { update_off_mtime(abs_path, fd); } //TODO update log-offset in pg_offset if (fd != 0) close(fd); my_close_readline(rl_name); #ifdef PGSQL PQfinish(conn); #endif // myfree((void *)&realcmd); myfree((void *)&User); myfree((void *)&Time); myfree((void *)&Host); myfree((void *)&PS); /* assert(buf == NULL); assert(realcmd == NULL); assert(rdlinecmd == NULL); */ assert(User == NULL); assert(Time == NULL); assert(Host == NULL); assert(PS == NULL); exit(ret); }
static int mavis_send_in(mavis_ctx * mcx, av_ctx ** ac) { struct passwd *pw; char *t, *u, *p, *m; uid_t uid; int res; t = av_get(*ac, AV_A_TYPE); u = av_get(*ac, AV_A_USER); p = av_get(*ac, AV_A_PASSWORD); if (strcmp(t, AV_V_TYPE_FTP)) return MAVIS_DOWN; /* no VHOST support yet */ m = av_get(*ac, AV_A_FTP_ANONYMOUS); if (m && !strcmp(m, AV_V_BOOL_TRUE)) return MAVIS_DOWN; if (!(pw = getpwnam(u))) return MAVIS_DOWN; if (!pw->pw_dir) { av_set(*ac, AV_A_COMMENT, "home dir not set"); av_set(*ac, AV_A_RESULT, AV_V_RESULT_FAIL); return MAVIS_FINAL; } uid = geteuid(); seteuid(0); res = check_auth(mcx, u, p); seteuid(uid); /* The PAM routines may have spoiled our logging identity. */ logopen(); if (res) { char buf[1024]; av_set(*ac, AV_A_DBPASSWORD, p); av_setf(*ac, AV_A_UID, "%lu", (u_long) pw->pw_uid); av_setf(*ac, AV_A_GID, "%lu", (u_long) pw->pw_gid); /* attempt to get supplemental groups */ av_set(*ac, AV_A_GIDS, groups_getlist(pw->pw_name, pw->pw_gid, buf, sizeof(buf))); if (mcx->ftp_chroot) { t = strstr(pw->pw_dir, "/./"); if (t) { *t = 0; av_set(*ac, AV_A_HOME, t + 2); } else av_set(*ac, AV_A_HOME, "/"); av_set(*ac, AV_A_ROOT, pw->pw_dir); } else { av_set(*ac, AV_A_HOME, pw->pw_dir); av_set(*ac, AV_A_ROOT, "/"); } } else av_set(*ac, AV_A_RESULT, AV_V_RESULT_FAIL); return MAVIS_FINAL; }