mcabber/src/histolog.c
changeset 186 888ad9f15346
parent 184 b5aa2b9c425a
child 193 5cbdcccfab29
equal deleted inserted replaced
185:e8e447a07641 186:888ad9f15346
    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     }