#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;
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,
else
return -1;
}
- printf("%s", line->key);
/* no need to parse blank lines and comments */
if (!regexec(&re_ignore, line->key, 0, NULL, 0))
/* 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);
/* done parsing the line */
line->parsed = 1;
- printf("%s: '%s'\n", line->key, line->value);
finish:
if (!line->parsed) {