mcabber/mcabber/histolog.c
changeset 2252 2c7cca6dec6a
parent 2232 c06488852cdc
child 2253 5a107c907e71
equal deleted inserted replaced
2251:f3bd1564fa70 2252:2c7cca6dec6a
   370 void hlog_enable(guint enable, const char *root_dir, guint loadfiles)
   370 void hlog_enable(guint enable, const char *root_dir, guint loadfiles)
   371 {
   371 {
   372   UseFileLogging = enable;
   372   UseFileLogging = enable;
   373   FileLoadLogs = loadfiles;
   373   FileLoadLogs = loadfiles;
   374 
   374 
   375   if (enable || loadfiles) {
   375   g_free(RootDir);
   376     if (root_dir) {
   376   RootDir = NULL;
   377       char *xp_root_dir;
   377 
   378       int l = strlen(root_dir);
   378   if (!enable && !loadfiles)
   379       if (l < 1) {
   379     return;
   380         scr_LogPrint(LPRINT_LOGNORM, "Error: logging dir name too short");
   380 
   381         UseFileLogging = FileLoadLogs = FALSE;
   381   if (root_dir) {
   382         return;
   382     char *xp_root_dir;
   383       }
   383     int l = strlen(root_dir);
   384       xp_root_dir = expand_filename(root_dir);
   384     if (l < 1) {
   385       // RootDir must be slash-terminated
   385       scr_LogPrint(LPRINT_LOGNORM, "Error: logging dir name too short");
   386       if (root_dir[l-1] == '/') {
   386       UseFileLogging = FileLoadLogs = FALSE;
   387         RootDir = xp_root_dir;
   387       return;
   388       } else {
   388     }
   389         RootDir = g_strdup_printf("%s/", xp_root_dir);
   389     xp_root_dir = expand_filename(root_dir);
   390         g_free(xp_root_dir);
   390     // RootDir must be slash-terminated
   391       }
   391     if (root_dir[l-1] == '/') {
       
   392       RootDir = xp_root_dir;
   392     } else {
   393     } else {
   393       const char *cfgdir = settings_get_mcabber_config_dir();
   394       RootDir = g_strdup_printf("%s/", xp_root_dir);
   394       const char *hdir = "/histo/";
   395       g_free(xp_root_dir);
   395       RootDir = g_strdup_printf("%s%s", cfgdir, hdir);
   396     }
   396     }
   397   } else {
   397     // Check directory permissions (should not be readable by group/others)
   398     const char *cfgdir = settings_get_mcabber_config_dir();
   398     if (checkset_perm(RootDir, TRUE) == -1) {
   399     const char *hdir = "/histo/";
   399       // The directory does not actually exists
   400     RootDir = g_strdup_printf("%s%s", cfgdir, hdir);
   400       g_free(RootDir);
   401   }
   401       RootDir = NULL;
   402 
   402       scr_LogPrint(LPRINT_LOGNORM, "ERROR: Cannot access "
   403   // Check directory permissions (should not be readable by group/others)
   403                    "history log directory, logging DISABLED");
   404   if (checkset_perm(RootDir, TRUE) == -1) {
   404       UseFileLogging = FileLoadLogs = FALSE;
   405     // The directory does not actually exists
   405     }
       
   406   } else {  // Disable history logging
       
   407     g_free(RootDir);
   406     g_free(RootDir);
   408     RootDir = NULL;
   407     RootDir = NULL;
       
   408     scr_LogPrint(LPRINT_LOGNORM, "ERROR: Cannot access "
       
   409                  "history log directory, logging DISABLED");
       
   410     UseFileLogging = FileLoadLogs = FALSE;
   409   }
   411   }
   410 }
   412 }
   411 
   413 
   412 guint hlog_is_enabled(void)
   414 guint hlog_is_enabled(void)
   413 {
   415 {