# HG changeset patch # User mikael # Date 1115235183 0 # Node ID 0ed6099b5a54ae2d83635418244ec7c30266a6d9 # Parent 6ad156673b1943f1491ddb1cbbe512fcbbc339d6 [/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 diff -r 6ad156673b19 -r 0ed6099b5a54 mcabber/README --- 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. diff -r 6ad156673b19 -r 0ed6099b5a54 mcabber/mcabberrc.example --- 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. diff -r 6ad156673b19 -r 0ed6099b5a54 mcabber/src/TODO --- 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 ? diff -r 6ad156673b19 -r 0ed6099b5a54 mcabber/src/histolog.c --- 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); diff -r 6ad156673b19 -r 0ed6099b5a54 mcabber/src/main.c --- 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 #include #include +#include #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); diff -r 6ad156673b19 -r 0ed6099b5a54 mcabber/src/parsecfg.c --- 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 #include #include +#include #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; }