예제 #1
0
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;

}
예제 #2
0
파일: Log_Msg.cpp 프로젝트: eox03y/OldWorks
/**
-- 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);
        }
}
예제 #4
0
파일: mylibc.c 프로젝트: digcon9/sandbox
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;
}
예제 #5
0
파일: LogMsg.cpp 프로젝트: handol/server
/**
-- 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);
}
예제 #6
0
파일: mylibc.c 프로젝트: digcon9/sandbox
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;
}
예제 #7
0
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);
}
예제 #8
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);
}
예제 #9
0
파일: ut_dpq.c 프로젝트: rdentato/clibutl
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);
}
예제 #10
0
파일: ucs.c 프로젝트: braincat/uwin
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);
}
예제 #11
0
파일: ucs.c 프로젝트: braincat/uwin
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;
}
예제 #12
0
파일: ut_pmx3.c 프로젝트: rdentato/clibutl
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);
}
예제 #13
0
파일: main.c 프로젝트: tingle2008/rplddump
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);
}
예제 #14
0
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;
}