changeset 201:5f66eb0ae1f8

- Added creation of ~/.dillo directory in main().
author jcid
date Wed, 30 Apr 2008 22:41:54 +0200
parents a53374d75277
children 099caf07106b
files src/dillo.cc
diffstat 1 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/dillo.cc	Wed Apr 30 21:05:36 2008 +0200
+++ b/src/dillo.cc	Wed Apr 30 22:41:54 2008 +0200
@@ -21,12 +21,15 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <errno.h>
 #include <time.h>
 #include <signal.h>
+#include <sys/stat.h>
 
 #include <fltk/Window.h>
 #include <fltk/run.h>
 
+#include "msg.h"
 #include "dir.h"
 #include "uicmd.hh"
 
@@ -43,6 +46,24 @@
 #include "dicache.h"
 #include "cookies.h"
 
+/*
+ * Check if '~/.dillo' directory exists.
+ * If not, try to create it.
+ */
+static void Dillo_check_dillorc_dir(void)
+{
+   char *dir;
+   struct stat st;
+
+   dir = dStrconcat(dGethomedir(), "/.dillo", NULL);
+   if (stat(dir, &st) == -1) {
+      if (errno == ENOENT && mkdir(dir, 0700) < 0)
+         MSG("Dillo: error creating directory %s: %s\n",dir,dStrerror(errno));
+      else
+         MSG("Dillo: error reading %s: %s\n", dir, dStrerror(errno));
+   }
+   dFree(dir);
+}
 
 /*
  * Given a command line argument, build a DilloUrl for it.
@@ -86,6 +107,9 @@
    // Some OSes exit dillo without this (not GNU/Linux).
    signal(SIGPIPE, SIG_IGN);
 
+   // Check that ~/.dillo exists, create it if it doesn't.
+   Dillo_check_dillorc_dir();
+
    // Initialize internal modules
    a_Dir_init();
    a_Prefs_init();