changeset 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 6ad156673b19
children ea5e101fd29e
files mcabber/README mcabber/mcabberrc.example mcabber/src/TODO mcabber/src/histolog.c mcabber/src/main.c mcabber/src/parsecfg.c
diffstat 6 files changed, 40 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/README	Wed May 04 18:50:35 2005 +0000
+++ b/mcabber/README	Wed May 04 19:33:03 2005 +0000
@@ -3,7 +3,7 @@
 !!!!!! SEE mcabberrc.example !!!!!!
 
 A configuration file is necessary.
-Its name is $HOME/.mcabberrc
+Its name is $HOME/.mcabber/mcabberrc (or $HOME/.mcabberrc).
 Please see the sample config file!
 
 You can use the -f option to specify another configuration file.
--- a/mcabber/mcabberrc.example	Wed May 04 18:50:35 2005 +0000
+++ b/mcabber/mcabberrc.example	Wed May 04 19:33:03 2005 +0000
@@ -1,4 +1,4 @@
-# Sample ~/.mcabberrc file
+# Sample ~/.mcabber/mcabberrc file
 
 # The jid will be the following: username@server/resource
 # If password is not given, it will be interactively asked for.
@@ -25,9 +25,9 @@
 
 # History logging
 # You can save the messages history: set logging = 1
-# Default logging directory (logging_dir) is $HOME/.mcabber/
+# Default logging directory (logging_dir) is $HOME/.mcabber/histo/
 logging = 1
-#logging_dir = /home/mikael/.mcabber/
+#logging_dir = /home/mikael/.mcabber/histo/
 
 # External command for events
 # You can specify a script or process to be launched when an event occurs.
--- a/mcabber/src/TODO	Wed May 04 18:50:35 2005 +0000
+++ b/mcabber/src/TODO	Wed May 04 19:33:03 2005 +0000
@@ -9,8 +9,6 @@
 * Presence notification is always accepted.  We should ask...
 * Command line history (^P/^N)
 * Read history
-* Try $HOME/.mcabber/mcabberrc before $HOME/.mcabberrc
-* Use $HOME/.mcabber/histo for default buddies logdir
 * Display status
 * Get timestamp for offline messages
 * /connect /disconnect ?
--- a/mcabber/src/histolog.c	Wed May 04 18:50:35 2005 +0000
+++ b/mcabber/src/histolog.c	Wed May 04 19:33:03 2005 +0000
@@ -118,7 +118,7 @@
       }
     } else {
       char *home = getenv("HOME");
-      char *dir = "/.mcabber/";
+      char *dir = "/.mcabber/histo/";
       RootDir = g_new(char, strlen(home) + strlen(dir) + 1);
       strcpy(RootDir, home);
       strcat(RootDir, dir);
--- a/mcabber/src/main.c	Wed May 04 18:50:35 2005 +0000
+++ b/mcabber/src/main.c	Wed May 04 19:33:03 2005 +0000
@@ -8,6 +8,7 @@
 #include <getopt.h>
 #include <sys/types.h>
 #include <sys/wait.h>
+#include <glib.h>
 
 #include "jabglue.h"
 #include "screen.h"
@@ -67,7 +68,7 @@
 char *compose_jid(const char *username, const char *servername,
         const char *resource)
 {
-  char *jid = malloc(strlen(username)+strlen(servername)+strlen(resource)+3);
+  char *jid = g_new(strlen(username)+strlen(servername)+strlen(resource)+3);
   strcpy(jid, username);
   strcat(jid, "@");
   strcat(jid, servername);
@@ -84,7 +85,7 @@
 
 int main(int argc, char **argv)
 {
-  char configFile[4096];
+  char *configFile = NULL;
   char *username, *password, *resource;
   char *servername, *portstring;
   char *jid;
@@ -105,8 +106,6 @@
   signal(SIGTERM, sig_handler);
   signal(SIGCHLD, sig_handler);
 
-  sprintf(configFile, "%s/.mcabberrc", getenv("HOME"));
-
   /* Parse command line options */
   while (1) {
     int c = getopt(argc, argv, "hf:");
@@ -119,17 +118,18 @@
         printf("Thanks to AjMacias for cabber!\n\n");
 	return 0;
       case 'f':
-	strncpy(configFile, optarg, 1024);
+	configFile = g_strdup(optarg);
 	break;
       }
   }
 
-  ut_WriteLog("Setting config file: %s\n", configFile);
-
+  if (configFile)
+    ut_WriteLog("Setting config file: %s\n", configFile);
 
   /* Parsing config file... */
   ut_WriteLog("Parsing config file...\n");
   cfg_file(configFile);
+  if (configFile) g_free(configFile);
 
   optstring = cfg_read("debug");
   if (optstring)
@@ -186,7 +186,7 @@
 
   jid = compose_jid(username, servername, resource);
   jc = jb_connect(jid, port, ssl, password);
-  free(jid);
+  g_free(jid);
   if (!jc) {
     ut_WriteLog("\terror!!!\n");
     fprintf(stderr, "Error connecting to (%s)\n", servername);
--- 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;
 }