Mercurial > ~mikael > mcabber > hg
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; }