24
|
1 #include <stdio.h>
|
|
2 #include <stdlib.h>
|
77
|
3 #include <string.h>
|
24
|
4 #include <stdarg.h>
|
|
5 #include <time.h>
|
|
6
|
76
|
7 static int DebugEnabled;
|
77
|
8 static char *FName;
|
24
|
9
|
138
|
10 void ut_InitDebug(unsigned int level, char *filename)
|
24
|
11 {
|
77
|
12 FILE *fp;
|
|
13
|
138
|
14 if (!level) {
|
|
15 DebugEnabled = 0;
|
|
16 FName = NULL;
|
|
17 return;
|
|
18 }
|
|
19
|
|
20 if (filename)
|
|
21 FName = strdup(filename);
|
77
|
22 else {
|
138
|
23 FName = getenv("HOME");
|
|
24 if (!FName)
|
|
25 FName = "/tmp/mcabberlog";
|
|
26 else {
|
|
27 char *tmpname = malloc(strlen(FName) + 12);
|
|
28 strcpy(tmpname, FName);
|
|
29 strcat(tmpname, "/mcabberlog");
|
|
30 FName = tmpname;
|
|
31 }
|
77
|
32 }
|
24
|
33
|
|
34 DebugEnabled = level;
|
76
|
35
|
77
|
36 fp = fopen(FName, "w");
|
76
|
37 if (!fp) return;
|
24
|
38 fprintf(fp, "Debugging mode started...\n"
|
|
39 "-----------------------------------\n");
|
|
40 fclose(fp);
|
|
41 }
|
|
42
|
|
43 void ut_WriteLog(const char *fmt, ...)
|
|
44 {
|
|
45 FILE *fp = NULL;
|
|
46 time_t ahora;
|
|
47 va_list ap;
|
|
48 char *buffer = NULL;
|
|
49
|
138
|
50 if (DebugEnabled && FName) {
|
77
|
51 fp = fopen(FName, "a+");
|
76
|
52 if (!fp) return;
|
24
|
53 buffer = (char *) calloc(1, 64);
|
|
54
|
|
55 ahora = time(NULL);
|
|
56 strftime(buffer, 64, "[%H:%M:%S] ", localtime(&ahora));
|
|
57 fprintf(fp, "%s", buffer);
|
|
58
|
|
59 va_start(ap, fmt);
|
|
60 vfprintf(fp, fmt, ap);
|
|
61 va_end(ap);
|
|
62
|
|
63 free(buffer);
|
|
64 fclose(fp);
|
|
65 }
|
|
66 }
|
|
67
|