Merge commit 'v3.3b2' into diablo-package
[browser-switch] / configfile.c
index 5200159..0a522aa 100644 (file)
 
 #include "configfile.h"
 
+#define MAXLINE 1024
+
+/* regex matching blank lines or comments */
+#define REGEX_IGNORE "^[[:space:]]*(#|$)"
+#define REGEX_IGNORE_FLAGS REG_EXTENDED|REG_NOSUB
+
+/* regex matching foo = "bar", with arbitrary whitespace at beginning and end
+   of line and surrounding the = */
+#define REGEX_CONFIG1 "^[[:space:]]*([^=[:space:]]+)[[:space:]]*=[[:space:]]*\"(.*)\"[[:space:]]*$"
+#define REGEX_CONFIG1_FLAGS REG_EXTENDED
+
+/* regex matching foo = bar, with arbitrary whitespace at beginning of line and
+   surrounding the = */
+#define REGEX_CONFIG2 "^[[:space:]]*([^=[:space:]]+)[[:space:]]*=[[:space:]]*(.*)$"
+#define REGEX_CONFIG2_FLAGS REG_EXTENDED|REG_NEWLINE
+
 static regex_t re_ignore, re_config1, re_config2;
 static int re_init = 0;
 
@@ -95,6 +111,7 @@ void parse_config_file_end(void) {
        regfree(&re_ignore);
        regfree(&re_config1);
        regfree(&re_config2);
+       re_init = 0;
 }
 
 /* Read the next line from a config file and store it into a swb_config_line,
@@ -127,7 +144,6 @@ int parse_config_file_line(FILE *fp, struct swb_config_line *line) {
                else
                        return -1;
        }
-       printf("%s", line->key);
 
        /* no need to parse blank lines and comments */
        if (!regexec(&re_ignore, line->key, 0, NULL, 0))
@@ -153,7 +169,7 @@ int parse_config_file_line(FILE *fp, struct swb_config_line *line) {
        /* calloc() zeroes the memory, so string is automatically
           null terminated */
 
-       /* make key point to a null-terminated string holding the 
+       /* make key point to a null-terminated string holding the
           config key */
        len = substrs[1].rm_eo - substrs[1].rm_so;
        memmove(line->key, line->key+substrs[1].rm_so, len);
@@ -161,7 +177,6 @@ int parse_config_file_line(FILE *fp, struct swb_config_line *line) {
 
        /* done parsing the line */
        line->parsed = 1;
-       printf("%s: '%s'\n", line->key, line->value);
 
 finish:
        if (!line->parsed) {