diff mcabber/src/parsecfg.c @ 169:0ed6099b5a54

[/trunk] Changeset 181 by mikael * Default logging directory is now "$HOME/.mcabber/histo/" * Default configuration file is now "$HOME/.mcabber/mcabberrc" (~/.mcabberrc should still work) * Switch parsecfg.c to glib
author mikael
date Wed, 04 May 2005 19:33:03 +0000
parents 8a54d46e889a
children ea5e101fd29e
line wrap: on
line diff
--- a/mcabber/src/parsecfg.c	Wed May 04 18:50:35 2005 +0000
+++ b/mcabber/src/parsecfg.c	Wed May 04 19:33:03 2005 +0000
@@ -3,6 +3,7 @@
 #include <unistd.h>
 #include <ctype.h>
 #include <string.h>
+#include <glib.h>
 
 #include "list.h"
 
@@ -20,10 +21,10 @@
 
 void push_in_list(char *key, char *value)
 {
-  cfg_entry_t *new_entry = calloc(1, sizeof(cfg_entry_t));
+  cfg_entry_t *new_entry = g_new0(1, sizeof(cfg_entry_t));
 
-  new_entry->key = (char *) calloc(1, strlen(key) + 1);
-  new_entry->value = (char *) calloc(1, strlen(value) + 1);
+  new_entry->key = (char *) g_new0(1, strlen(key) + 1);
+  new_entry->value = (char *) g_new0(1, strlen(value) + 1);
 
   strcpy(new_entry->key, key);
   strcpy(new_entry->value, value);
@@ -38,13 +39,32 @@
   char *line;
   char *value;
 
-  buf = malloc(255);
-
-  if ((fp = fopen(filename, "r")) == NULL) {
+  if (!filename) {
+    // Use default config file locations
+    char *home = getenv("HOME");
+    if (!home) {
+      ut_WriteLog("Can't find home dir!\n");
+      exit(EXIT_FAILURE);
+    }
+    filename = g_new(char, strlen(home)+24);
+    sprintf(filename, "%s/.mcabber/mcabberrc", home);
+    if ((fp = fopen(filename, "r")) == NULL) {
+      // 2nd try...
+      sprintf(filename, "%s/.mcabberrc", home);
+      if ((fp = fopen(filename, "r")) == NULL) {
+        fprintf(stderr, "Cannot open config file!\n");
+        exit(EXIT_FAILURE);
+      }
+    }
+    g_free(filename);
+  }
+  else if ((fp = fopen(filename, "r")) == NULL) {
     perror("fopen (parsecfg.c:46)");
     exit(EXIT_FAILURE);
   }
 
+  buf = g_new(255);
+
   while (fgets(buf, 255, fp) != NULL) {
     line = buf;
 
@@ -75,7 +95,7 @@
     }
     fprintf(stderr, "CFG: orphaned line \"%s\"\n", line);
   }
-  free(buf);
+  g_free(buf);
   return 1;
 }