comparison 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
comparison
equal deleted inserted replaced
168:6ad156673b19 169:0ed6099b5a54
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
3 #include <unistd.h> 3 #include <unistd.h>
4 #include <ctype.h> 4 #include <ctype.h>
5 #include <string.h> 5 #include <string.h>
6 #include <glib.h>
6 7
7 #include "list.h" 8 #include "list.h"
8 9
9 #define MAX_LENGHT_INPUT 1024 10 #define MAX_LENGHT_INPUT 1024
10 #define cfg_entry(n) list_entry(n, cfg_entry_t, list) 11 #define cfg_entry(n) list_entry(n, cfg_entry_t, list)
18 static LIST_HEAD(cfg_list); 19 static LIST_HEAD(cfg_list);
19 20
20 21
21 void push_in_list(char *key, char *value) 22 void push_in_list(char *key, char *value)
22 { 23 {
23 cfg_entry_t *new_entry = calloc(1, sizeof(cfg_entry_t)); 24 cfg_entry_t *new_entry = g_new0(1, sizeof(cfg_entry_t));
24 25
25 new_entry->key = (char *) calloc(1, strlen(key) + 1); 26 new_entry->key = (char *) g_new0(1, strlen(key) + 1);
26 new_entry->value = (char *) calloc(1, strlen(value) + 1); 27 new_entry->value = (char *) g_new0(1, strlen(value) + 1);
27 28
28 strcpy(new_entry->key, key); 29 strcpy(new_entry->key, key);
29 strcpy(new_entry->value, value); 30 strcpy(new_entry->value, value);
30 31
31 list_add(&new_entry->list, &cfg_list); 32 list_add(&new_entry->list, &cfg_list);
36 FILE *fp; 37 FILE *fp;
37 char *buf; 38 char *buf;
38 char *line; 39 char *line;
39 char *value; 40 char *value;
40 41
41 buf = malloc(255); 42 if (!filename) {
42 43 // Use default config file locations
43 if ((fp = fopen(filename, "r")) == NULL) { 44 char *home = getenv("HOME");
45 if (!home) {
46 ut_WriteLog("Can't find home dir!\n");
47 exit(EXIT_FAILURE);
48 }
49 filename = g_new(char, strlen(home)+24);
50 sprintf(filename, "%s/.mcabber/mcabberrc", home);
51 if ((fp = fopen(filename, "r")) == NULL) {
52 // 2nd try...
53 sprintf(filename, "%s/.mcabberrc", home);
54 if ((fp = fopen(filename, "r")) == NULL) {
55 fprintf(stderr, "Cannot open config file!\n");
56 exit(EXIT_FAILURE);
57 }
58 }
59 g_free(filename);
60 }
61 else if ((fp = fopen(filename, "r")) == NULL) {
44 perror("fopen (parsecfg.c:46)"); 62 perror("fopen (parsecfg.c:46)");
45 exit(EXIT_FAILURE); 63 exit(EXIT_FAILURE);
46 } 64 }
65
66 buf = g_new(255);
47 67
48 while (fgets(buf, 255, fp) != NULL) { 68 while (fgets(buf, 255, fp) != NULL) {
49 line = buf; 69 line = buf;
50 70
51 while (isspace((int) *line)) 71 while (isspace((int) *line))
73 push_in_list(line, value); 93 push_in_list(line, value);
74 continue; 94 continue;
75 } 95 }
76 fprintf(stderr, "CFG: orphaned line \"%s\"\n", line); 96 fprintf(stderr, "CFG: orphaned line \"%s\"\n", line);
77 } 97 }
78 free(buf); 98 g_free(buf);
79 return 1; 99 return 1;
80 } 100 }
81 101
82 char *cfg_read(char *key) 102 char *cfg_read(char *key)
83 { 103 {