* the value.
*/
}
- printf("%s = %s\n", *key, *value);
+ /* printf("%s = %s\n", *key, *value); */
return 0;
}
{ NULL, NULL }
};
-void process_line(struct session *session, char *key, char *value)
+static void process_line(struct session *session, char *key, char *value)
{
struct config_function *item;
int result;
break;
if (strncasecmp(item->key, key, strlen(item->key)) == 0) {
- printf("calling %p, for key = '%s' and value = '%s'\n", item->callback, key, value);
+ /*
+ * printf("calling %p, for key = '%s' and value = * '%s'\n",
+ * item->callback, key, value);
+ */
result = item->callback(session, value);
if (!result)
return;
char *line = NULL;
char *key = NULL;
char *value = NULL;
+ char *hashmarker;
size_t len = 0;
- size_t n;
+ ssize_t n;
char *c;
config_file = fopen(session->configfile, "r");
if (line[n - 1] == '\n')
line[n - 1] = '\0';
- /* '#' is comment markers, like bash style */
- *strchrnul(line, '#') = '\0';
+ /*
+ * '#' is comment markers, like bash style but it is a valid
+ * character in some fields, so only treat it as a comment
+ * marker if it occurs at the beginning of the line, or after
+ * whitespace
+ */
+ hashmarker = strchrnul(line, '#');
+ if (line == hashmarker)
+ line[0] = '\0';
+ else {
+ --hashmarker;
+ if (isblank(hashmarker[0]))
+ hashmarker[0] = '\0';
+ }
c = line;
while (isspace(*c))
c++;