equal
deleted
inserted
replaced
41 // Returns history filename for the given jid |
41 // Returns history filename for the given jid |
42 // Note: the caller *must* free the filename after use (if not null). |
42 // Note: the caller *must* free the filename after use (if not null). |
43 static char *user_histo_file(const char *jid) |
43 static char *user_histo_file(const char *jid) |
44 { |
44 { |
45 char *filename; |
45 char *filename; |
|
46 char *lowerid, *p; |
46 if (!UseFileLogging && !FileLoadLogs) return NULL; |
47 if (!UseFileLogging && !FileLoadLogs) return NULL; |
|
48 |
|
49 lowerid = g_strdup(jid); |
|
50 for (p=lowerid; *p ; p++) |
|
51 *p = tolower(*p); |
47 |
52 |
48 filename = g_new(char, strlen(RootDir) + strlen(jid) + 1); |
53 filename = g_new(char, strlen(RootDir) + strlen(jid) + 1); |
49 strcpy(filename, RootDir); |
54 strcpy(filename, RootDir); |
50 strcat(filename, jid); |
55 strcat(filename, lowerid); |
|
56 g_free(lowerid); |
51 return filename; |
57 return filename; |
52 } |
58 } |
53 |
59 |
54 // write_histo_line() |
60 // write_histo_line() |
55 // Adds a history (multi-)line to the jid's history logfile |
61 // Adds a history (multi-)line to the jid's history logfile |
131 type = data[0]; |
137 type = data[0]; |
132 info = data[1]; |
138 info = data[1]; |
133 if ((type != 'M' && type != 'S') || |
139 if ((type != 'M' && type != 'S') || |
134 (data[13] != ' ') || (data[17] != ' ')) { |
140 (data[13] != ' ') || (data[17] != ' ')) { |
135 scr_LogPrint("Error in history file format"); |
141 scr_LogPrint("Error in history file format"); |
136 break; |
142 //break; |
|
143 continue; |
137 } |
144 } |
138 data[13] = data[17] = 0; |
145 data[13] = data[17] = 0; |
139 timestamp = (unsigned long) atol(&data[3]); |
146 timestamp = (unsigned long) atol(&data[3]); |
140 len = (unsigned long) atol(&data[14]); |
147 len = (unsigned long) atol(&data[14]); |
141 |
148 |
142 // Some checks |
149 // Some checks |
143 if (((type == 'M') && (info != 'S' && info != 'R')) || |
150 if (((type == 'M') && (info != 'S' && info != 'R')) || |
144 ((type == 'I') && (!strchr("OAIFDCN", info)))) { |
151 ((type == 'I') && (!strchr("OAIFDCN", info)))) { |
145 scr_LogPrint("Error in history file format"); |
152 scr_LogPrint("Error in history file format"); |
146 break; |
153 //break; |
147 } |
154 continue; |
148 |
155 } |
|
156 |
|
157 // FIXME This will fail when a message is too big |
149 while (len--) { |
158 while (len--) { |
150 if (fgets(tail, HBB_BLOCKSIZE+24 - (tail-data), fp) == NULL) break; |
159 if (fgets(tail, HBB_BLOCKSIZE+24 - (tail-data), fp) == NULL) break; |
151 |
160 |
152 while (*tail) tail++; |
161 while (*tail) tail++; |
153 } |
162 } |