diff cinst/mozilla.c @ 197:5d380b662198

Search for thunderbird profiles, too.
author Sascha Wilde <wilde@intevation.de>
date Wed, 26 Mar 2014 12:37:19 +0100
parents 90cf655a4112
children d29997e09177
line wrap: on
line diff
--- a/cinst/mozilla.c	Wed Mar 26 12:18:12 2014 +0100
+++ b/cinst/mozilla.c	Wed Mar 26 12:37:19 2014 +0100
@@ -61,8 +61,10 @@
 #include <strhelp.h>
 
 #ifndef _WIN32
+#define CONFDIRS ".mozilla", ".thunderbird"
 #define LINUX 1
 #else
+#define CONFDIRS "Mozilla", "Thunderbird"
 #define LINUX 0
 #endif
 
@@ -198,53 +200,51 @@
   char **inis = NULL;
   char path[LINEBUFLEN];
   char *fqpath;
-  char *mozdirname;
   DIR *mozdir;
   struct dirent *mozdirent;
   char *confbase = get_conf_basedir();
+  const char *confdirs[] = { CONFDIRS, NULL };
 
-  if (LINUX)
-    {
-      mozdirname = ".mozilla";
-    }
-  else
+  for (int i=0; confdirs[i] != NULL; i++)
     {
-      mozdirname = "Mozilla";
-    }
-
-  snprintf(path, LINEBUFLEN, "%s/%s",
-           confbase,
-           mozdirname);
-  if ((mozdir = opendir(path)) != NULL)
-    {
-      while ((mozdirent = readdir(mozdir)) != NULL)
+      snprintf(path, LINEBUFLEN, "%s/%s",
+               confbase,
+               confdirs[i]);
+      if ((mozdir = opendir(path)) != NULL)
         {
-          snprintf(path, LINEBUFLEN, "%s/%s/%s",
-                   confbase,
-                   mozdirname,
-                   mozdirent->d_name);
-          if (port_isdir(path)
-              && (strcmp(mozdirent->d_name, "..") != 0))
+          while ((mozdirent = readdir(mozdir)) != NULL)
             {
-              snprintf(path, LINEBUFLEN, "%s/%s/%s/%s",
+              snprintf(path, LINEBUFLEN, "%s/%s/%s",
                        confbase,
-                       mozdirname,
-                       mozdirent->d_name,
-                       "profiles.ini");
-              DEBUGFPRINT("DEBUG: checking for %s...\n", path);
-              if ((fqpath = port_realpath(path)) != NULL)
+                       confdirs[i],
+                       mozdirent->d_name);
+              if (port_isdir(path)
+                  && (strcmp(mozdirent->d_name, "..") != 0))
                 {
-                  strv_append(&inis, fqpath, strlen(fqpath));
-                  DEBUGFPRINT("DEBUG: Found mozilla ini file: '%s'\n", fqpath);
-                  free(fqpath);
+                  snprintf(path, LINEBUFLEN, "%s/%s/%s/%s",
+                           confbase,
+                           confdirs[i],
+                           mozdirent->d_name,
+                           "profiles.ini");
+                  DEBUGFPRINT("DEBUG: checking for %s...\n", path);
+                  if ((fqpath = port_realpath(path)) != NULL)
+                    {
+                      strv_append(&inis, fqpath, strlen(fqpath));
+                      DEBUGFPRINT("DEBUG: Found mozilla ini file: '%s'\n", fqpath);
+                      free(fqpath);
+                    }
                 }
             }
+          closedir(mozdir);
         }
-      closedir(mozdir);
+      else
+        {
+          DEBUGFPRINT("DEBUG: Could not open %s/%s\n", confbase, confdirs[i]);
+        }
     }
-  else
+  if (inis == NULL)
     {
-      DEBUGFPRINT("DEBUG: Could not open %s/%s\n", confbase, mozdirname);
+      DEBUGFPRINT("DEBUG: No ini files found - will do nothing!\n");
       exit(WARN_MOZ_NO_PROFILES);
     }
   return inis;
@@ -264,6 +264,7 @@
           get_profile_dirs(mozinis[y++]);
         if (pdirs != NULL)
           {
+            x = 0;
             while (pdirs[x] != NULL)
               puts(pdirs[x++]);
             strv_free(pdirs);

http://wald.intevation.org/projects/trustbridge/