You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.6 KiB
74 lines
1.6 KiB
|
|
// #define _GNU_SOURCE /* See feature_test_macros(7) */
|
|
|
|
#include <stdarg.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <execinfo.h>
|
|
#include <unistd.h>
|
|
#include <time.h>
|
|
#include <sys/syscall.h>
|
|
#include <sys/types.h>
|
|
#include <sys/time.h>
|
|
#include "modelbahn.h"
|
|
|
|
#define DEBUG_FILE "/tmp/modelbahn-server.log"
|
|
#define LEN_TEXT 256
|
|
int _debuglevel = 0xff;
|
|
|
|
pid_t gettid();
|
|
|
|
|
|
void debug (int type, char *fmt,...) {
|
|
va_list args;
|
|
char texttime[LEN_TEXT];
|
|
char text1[DEBUG_TEXT1LEN];
|
|
char text2[DEBUG_TEXT2LEN];
|
|
pid_t pid = gettid();
|
|
int tms;
|
|
struct timeval tv;
|
|
struct tm tmp;
|
|
struct tm *tmptr = NULL;
|
|
|
|
|
|
va_start (args, fmt);
|
|
vsnprintf (text1, (DEBUG_TEXT1LEN-1), fmt, args);
|
|
va_end (args);
|
|
texttime[0] = 0;
|
|
text1[DEBUG_TEXT1LEN-1] = 0;
|
|
text2[DEBUG_TEXT2LEN-1] = 0;
|
|
|
|
gettimeofday (&tv, NULL);
|
|
tmptr = localtime_r(&tv.tv_sec, &tmp);
|
|
if (tmptr != NULL)
|
|
strftime(texttime, LEN_TEXT, "%H:%M:%S", &tmp);
|
|
|
|
if (type > 0) snprintf (text2, DEBUG_TEXT2LEN-1, "(%d, %s.%03d) %d : %s", pid, texttime, tv.tv_usec/1000, type, text1);
|
|
else snprintf (text2, DEBUG_TEXT2LEN-1, "(%d, %s.%03d) : %s", pid, texttime, tv.tv_usec/1000, text1);
|
|
|
|
if (type == 0 || (type & _debuglevel) != 0) {
|
|
FILE *f;
|
|
printf ("%s\n", text2);
|
|
f= fopen(DEBUG_FILE, "a");
|
|
if (f) {
|
|
fprintf (f, "%s\n", text2);
|
|
fclose (f);
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
/*******************************************************************************************
|
|
* helper stuff
|
|
*******************************************************************************************/
|
|
|
|
|
|
//
|
|
// return the current thread process id
|
|
//
|
|
pid_t gettid() {
|
|
pid_t tid = 0;
|
|
tid = syscall(SYS_gettid);
|
|
return tid;
|
|
};
|