28 #include <sys/types.h>
36 using std::stringstream;
42 static const bool bDebug =
true;
44 static const bool bDebug =
false;
50 static const size_t string_vformat_init_size = 1024;
51 static const size_t string_vformat_max_size = string_vformat_init_size * 8;
54 static std::string string_vformat(
const char* fmt, va_list ap)
58 size_t size = string_vformat_init_size;
59 char stackbuf[string_vformat_init_size];
60 std::vector<char> dynamicbuf;
61 char* buf = &stackbuf[0];
63 while (size <= string_vformat_max_size)
66 int needed = vsnprintf(buf, size, fmt, ap);
72 if (needed <= (
int)size && needed >= 0)
75 return std::string(buf, (
size_t)needed);
81 size = (needed > 0) ? (needed + 1) : (size * 2);
82 dynamicbuf.resize(size);
87 dynamicbuf.back() =
'\0';
89 return std::string(buf);
121 va_list args =
nullptr;
122 va_start(args, message);
129 va_list args =
nullptr;
130 va_start(args, message);
137 va_list args =
nullptr;
138 va_start(args, message);
145 va_list args =
nullptr;
146 va_start(args, message);
155 va_list args =
nullptr;
156 va_start(args, message);
164 error(
"Fichier %s introuvable", nomFic);
169 printf(
"%s non implemente.\n", message);
174 va_list args =
nullptr;
175 va_start(args, message);
190 va_list args =
nullptr;
194 QByteArray mess_tmp = message.toUtf8();
195 char* mymessage = (
char*)mess_tmp.data();
196 args = (va_list)(&message + 1);
198 char* mymessage = message.toUtf8().data();
199 va_start(args, message);
208 va_list args =
nullptr;
212 QByteArray mess_tmp = message.toUtf8();
213 char* mymessage = (
char*)mess_tmp.data();
214 args = (va_list)(&message + 1);
216 char* mymessage = message.toUtf8().data();
217 va_start(args, message);
226 va_list args =
nullptr;
230 QByteArray mess_tmp = message.toUtf8();
231 char* mymessage = (
char*)mess_tmp.data();
232 args = (va_list)(&message + 1);
234 char* mymessage = message.toUtf8().data();
235 va_start(args, message);
244 va_list args =
nullptr;
248 QByteArray mess_tmp = message.toUtf8();
249 char* mymessage = (
char*)mess_tmp.data();
250 args = (va_list)(&message + 1);
252 char* mymessage = message.toUtf8().data();
253 va_start(args, message);
262 va_list args =
nullptr;
266 QByteArray mess_tmp = message.toUtf8();
267 char* mymessage = (
char*)mess_tmp.data();
268 args = (va_list)(&message + 1);
270 char* mymessage = message.toUtf8().data();
271 va_start(args, message);
279 error(
"Fichier %s introuvable", nomFic.toUtf8().data());
284 printf(
"%s non implemente.\n", message.toUtf8().data());
289 va_list args =
nullptr;
293 QByteArray mess_tmp = message.toUtf8();
294 char* mymessage = (
char*)mess_tmp.data();
295 args = (va_list)(&message + 1);
297 char* mymessage = message.toUtf8().data();
298 va_start(args, message);
301 trace(mymessage, args);
307 va_list args =
nullptr;
308 va_start(args, message);
343 msg <<
"Erreur Fatale";
349 msg << string_vformat(message, args);
353 output(msg.str().c_str(), level);
363 FILE* outputStream = 0;
370 outputStream = stderr;
376 outputStream = stdout;
380 fprintf(outputStream,
"%s", message);
391 struct _finddata_t c_file;
392 if ((hFile = _findfirst(
"c:\\Trace*.*", &c_file)) !=
397 while (_findnext(hFile, &c_file) == 0)
405 if (0 == glob(
"/Trace*.*", 0, NULL, &globbuf))
407 for (
int i = 0; i < globbuf.gl_pathc; i++)
416 gmtime_s(&buf, &thetime);
418 sprintf_s(fileName,
"c:\\Trace%.3d.txt",
422 sprintf_s(fileName,
"/Trace%.3d.txt",
428 FILE* filepoint =
nullptr;
429 if ((fopen_s(&filepoint, fileName,
"at")) != 0)
431 fprintf_s(
_ficTrace,
"ERROR : cannot open file '%s'\n", fileName);
436 "-------------------------------------------------------------------------\n");
445 static char sDate[100];
450 localtime_s(&buf, &Date);
451 strftime(sDate,
sizeof(sDate),
"%d/%m/%Y - %H:%M:%S", &buf);
459 if (difftime(theTime, c_file->time_create) > 604800)
461 remove(c_file->name);
470 if (difftime(theTime, buf.st_ctime) > 604800)
virtual void debug(const char *message,...)
virtual void output(const char *message, int level)
virtual void missingFile(const char *nomFic)
static char * getStrDate()
void vformat(int level, const char *message, va_list args)
Variable argument list version of format.
virtual void warning(const char *message,...)
virtual void error(const char *message,...)
virtual ~OMessageManager()
static LPOMessageManager _pInstance
Instance unique du singleton.
FILE * _ficTrace
Le fichier de trace.
virtual void trace(const char *message,...)
virtual void fatal(const char *message,...)
static OMessageManager * get()
virtual void format(int level, const char *message,...)
static void checkFile(const char *c_file, time_t theTime)
virtual void toDo(const char *message)
virtual void info(const char *message,...)