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 |