[/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
--- 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;
}