Write out a kde.conf in portable (full mode)
authorAndre Heinecke <aheinecke@intevation.de>
Mon, 12 Aug 2013 15:20:23 +0000 (15:20 +0000)
committerAndre Heinecke <aheinecke@intevation.de>
Tue, 13 Aug 2013 08:14:16 +0000 (08:14 +0000)
    Adds a new file to control kleopatras home directories.

    * src/mkportable.c (write_kde_conf): New. Configures kleopatra
    to use home/kleopatra as home directory.

src/mkportable.c

index d30d4d5..2bf11aa 100644 (file)
@@ -629,6 +629,51 @@ make_home_dir (void)
   return 0;
 }
 
+/* Write the kde.conf file which tells kleopatra where to put its data.  */
+static int
+write_kde_conf (void)
+{
+  char *name;
+  FILE *fp;
+
+  if (install_type != iFULL)
+    {
+      return 0;
+    }
+
+  name = make_targetname ("bin/kde.conf");
+  fp = fopen (name, "wb");
+  if (!fp)
+    {
+      err ("failed to create '%s': %s\n", name, strerror (errno));
+      free (name);
+      return 1;
+    }
+
+  fprintf (fp,
+           "[KDE]\n"
+           "KDEHOME=home/kleopatra\n"
+           "[XDG]\n"
+           "XDG_DATA_HOME=home/kleopatra\n"
+           "XDG_CONFIG_HOME=home/kleopatra\n");
+
+   if (fflush (fp) == EOF)
+    {
+      err ("error writing to '%s': %s\n", name, strerror (errno));
+      fclose (fp);
+      free (name);
+      return 1;
+    }
+  if (fclose (fp) == EOF)
+    {
+      err ("error closing '%s': %s\n", name, strerror (errno));
+      free (name);
+      return 1;
+    }
+
+  free (name);
+  return 0;
+}
 
 
 /* Write the gpgconf.ctl file which is used by GnuPG to put itself
@@ -794,6 +839,9 @@ main (int argc, char **argv)
   if (write_ctl_file ())
     return 1;
 
+  if (write_kde_conf ())
+    return 1;
+
   inf ("ready");
 
   return 0;