shared: Remove no longer used parse_config_file()
This commit is contained in:
parent
b159560da2
commit
81c2c2eb5e
|
@ -41,134 +41,6 @@
|
|||
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
|
||||
(type *)( (char *)__mptr - offsetof(type,member) );})
|
||||
|
||||
static int
|
||||
handle_key(const struct config_key *key, const char *value)
|
||||
{
|
||||
char *end, *s;
|
||||
int i, len;
|
||||
unsigned int ui;
|
||||
|
||||
switch (key->type) {
|
||||
case CONFIG_KEY_INTEGER:
|
||||
i = strtol(value, &end, 0);
|
||||
if (*end != '\n') {
|
||||
fprintf(stderr, "invalid integer: %s\n", value);
|
||||
return -1;
|
||||
}
|
||||
*(int *)key->data = i;
|
||||
return 0;
|
||||
|
||||
case CONFIG_KEY_UNSIGNED_INTEGER:
|
||||
ui = strtoul(value, &end, 0);
|
||||
if (*end != '\n') {
|
||||
fprintf(stderr, "invalid integer: %s\n", value);
|
||||
return -1;
|
||||
}
|
||||
*(unsigned int *)key->data = ui;
|
||||
return 0;
|
||||
|
||||
case CONFIG_KEY_STRING:
|
||||
len = strlen(value);
|
||||
while (len > 0 && isspace(value[len - 1]))
|
||||
len--;
|
||||
s = malloc(len + 1);
|
||||
if (s == NULL)
|
||||
return -1;
|
||||
memcpy(s, value, len);
|
||||
s[len] = '\0';
|
||||
*(char **)key->data = s;
|
||||
return 0;
|
||||
|
||||
case CONFIG_KEY_BOOLEAN:
|
||||
if (strcmp(value, "false\n") == 0)
|
||||
*(int *)key->data = 0;
|
||||
else if (strcmp(value, "true\n") == 0)
|
||||
*(int *)key->data = 1;
|
||||
else {
|
||||
fprintf(stderr, "invalid bool: %s\n", value);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
parse_config_file(int fd,
|
||||
const struct config_section *sections, int num_sections,
|
||||
void *data)
|
||||
{
|
||||
FILE *fp;
|
||||
char line[512], *p;
|
||||
const struct config_section *current = NULL;
|
||||
int i;
|
||||
|
||||
if (fd == -1)
|
||||
return -1;
|
||||
|
||||
fp = fdopen(dup(fd), "r");
|
||||
if (fp == NULL) {
|
||||
perror("couldn't open config file");
|
||||
return -1;
|
||||
}
|
||||
|
||||
rewind(fp);
|
||||
|
||||
while (fgets(line, sizeof line, fp)) {
|
||||
if (line[0] == '#' || line[0] == '\n') {
|
||||
continue;
|
||||
} if (line[0] == '[') {
|
||||
p = strchr(&line[1], ']');
|
||||
if (!p || p[1] != '\n') {
|
||||
fprintf(stderr, "malformed "
|
||||
"section header: %s\n", line);
|
||||
fclose(fp);
|
||||
return -1;
|
||||
}
|
||||
if (current && current->done)
|
||||
current->done(data);
|
||||
p[0] = '\0';
|
||||
for (i = 0; i < num_sections; i++) {
|
||||
if (strcmp(sections[i].name, &line[1]) == 0) {
|
||||
current = §ions[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == num_sections)
|
||||
current = NULL;
|
||||
} else if (p = strchr(line, '='), p != NULL) {
|
||||
if (current == NULL)
|
||||
continue;
|
||||
p[0] = '\0';
|
||||
for (i = 0; i < current->num_keys; i++) {
|
||||
if (strcmp(current->keys[i].name, line) == 0) {
|
||||
if (handle_key(¤t->keys[i], &p[1]) < 0) {
|
||||
fclose(fp);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "malformed config line: %s\n", line);
|
||||
fclose(fp);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (current && current->done)
|
||||
current->done(data);
|
||||
|
||||
fclose(fp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
open_config_file(const char *name)
|
||||
{
|
||||
|
|
|
@ -47,11 +47,6 @@ struct config_section {
|
|||
void (*done)(void *data);
|
||||
};
|
||||
|
||||
int
|
||||
parse_config_file(int config_fd,
|
||||
const struct config_section *sections, int num_sections,
|
||||
void *data);
|
||||
|
||||
int
|
||||
open_config_file(const char *name);
|
||||
|
||||
|
|
Loading…
Reference in New Issue