mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
Imported evoke
This commit is contained in:
73
evoke/Log.cpp
Normal file
73
evoke/Log.cpp
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Evoke, head honcho of everything
|
||||
* Part of Equinox Desktop Environment (EDE).
|
||||
* Copyright (c) 2000-2007 EDE Authors.
|
||||
*
|
||||
* This program is licensed under terms of the
|
||||
* GNU General Public License version 2 or newer.
|
||||
* See COPYING for details.
|
||||
*/
|
||||
|
||||
#include "Log.h"
|
||||
#include <edelib/Debug.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
RealLog::RealLog() : f(NULL), buff(NULL), tbuff(NULL), bufflen(256), tbufflen(20),
|
||||
to_stdout(false), to_stderr(false) {
|
||||
}
|
||||
|
||||
RealLog::~RealLog() {
|
||||
if(f) {
|
||||
puts("RealLog::~RealLog()\n");
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
if(buff)
|
||||
delete [] buff;
|
||||
if(tbuff)
|
||||
delete [] tbuff;
|
||||
}
|
||||
|
||||
bool RealLog::open(const char* file) {
|
||||
EASSERT(file != NULL);
|
||||
|
||||
if(strcmp(file, "stdout") == 0)
|
||||
to_stdout = true;
|
||||
else if(strcmp(file, "stderr") == 0)
|
||||
to_stderr = true;
|
||||
else {
|
||||
f = fopen(file, "a");
|
||||
if(!f)
|
||||
return false;
|
||||
}
|
||||
|
||||
buff = new char[bufflen];
|
||||
tbuff = new char[tbufflen];
|
||||
return true;
|
||||
}
|
||||
|
||||
void RealLog::printf(const char* fmt, ...) {
|
||||
EASSERT(buff != NULL);
|
||||
EASSERT(tbuff != NULL);
|
||||
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(buff, bufflen, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
time_t t = time(NULL);
|
||||
strftime(tbuff, tbufflen, "%F %T", localtime(&t));
|
||||
|
||||
if(to_stdout)
|
||||
fprintf(stdout, "[%s] %s", tbuff, buff);
|
||||
else if(to_stderr)
|
||||
fprintf(stderr, "[%s] %s", tbuff, buff);
|
||||
else {
|
||||
fprintf(f, "[%s] %s", tbuff, buff);
|
||||
fflush(f);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user