diff options
Diffstat (limited to 'src/util/configuration.c')
-rw-r--r-- | src/util/configuration.c | 768 |
1 files changed, 376 insertions, 392 deletions
diff --git a/src/util/configuration.c b/src/util/configuration.c index 9a131fb503..41a4e1975a 100644 --- a/src/util/configuration.c +++ b/src/util/configuration.c @@ -150,7 +150,7 @@ GNUNET_CONFIGURATION_destroy (struct GNUNET_CONFIGURATION_Handle *cfg) */ int GNUNET_CONFIGURATION_parse (struct GNUNET_CONFIGURATION_Handle *cfg, - const char *filename) + const char *filename) { int dirty; char line[256]; @@ -167,89 +167,87 @@ GNUNET_CONFIGURATION_parse (struct GNUNET_CONFIGURATION_Handle *cfg, fn = GNUNET_STRINGS_filename_expand (filename); if (fn == NULL) return GNUNET_SYSERR; - dirty = cfg->dirty; /* back up value! */ + dirty = cfg->dirty; /* back up value! */ if (NULL == (fp = FOPEN (fn, "r"))) - { - LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING, "fopen", fn); - GNUNET_free (fn); - return GNUNET_SYSERR; - } + { + LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING, "fopen", fn); + GNUNET_free (fn); + return GNUNET_SYSERR; + } GNUNET_free (fn); ret = GNUNET_OK; section = GNUNET_strdup (""); memset (line, 0, 256); nr = 0; while (NULL != fgets (line, 255, fp)) + { + nr++; + for (i = 0; i < 255; i++) + if (line[i] == '\t') + line[i] = ' '; + if (line[0] == '\n' || line[0] == '#' || line[0] == '%' || line[0] == '\r') + continue; + emptyline = 1; + for (i = 0; (i < 255 && line[i] != 0); i++) + if (line[i] != ' ' && line[i] != '\n' && line[i] != '\r') + emptyline = 0; + if (emptyline == 1) + continue; + /* remove tailing whitespace */ + for (i = strlen (line) - 1; (i >= 0) && (isspace ((unsigned char) line[i])); + i--) + line[i] = '\0'; + if (1 == sscanf (line, "@INLINE@ %191[^\n]", value)) { - nr++; - for (i = 0; i < 255; i++) - if (line[i] == '\t') - line[i] = ' '; - if (line[0] == '\n' || line[0] == '#' || line[0] == '%' - || line[0] == '\r') - continue; - emptyline = 1; - for (i = 0; (i < 255 && line[i] != 0); i++) - if (line[i] != ' ' && line[i] != '\n' && line[i] != '\r') - emptyline = 0; - if (emptyline == 1) - continue; - /* remove tailing whitespace */ - for (i = strlen (line) - 1; - (i >= 0) && (isspace ((unsigned char) line[i])); i--) - line[i] = '\0'; - if (1 == sscanf (line, "@INLINE@ %191[^\n]", value)) - { - /* @INLINE@ value */ - if (GNUNET_OK != GNUNET_CONFIGURATION_parse (cfg, value)) - ret = GNUNET_SYSERR; /* failed to parse included config */ - } - else if (1 == sscanf (line, "[%99[^]]]", value)) - { - /* [value] */ - GNUNET_free (section); - section = GNUNET_strdup (value); - } - else if (2 == sscanf (line, " %63[^= ] = %191[^\n]", tag, value)) - { - /* tag = value */ - /* Strip LF */ - i = strlen (value) - 1; - while ((i >= 0) && (isspace ((unsigned char) value[i]))) - value[i--] = '\0'; - /* remove quotes */ - i = 0; - if (value[0] == '"') - { - i = 1; - while ((value[i] != '\0') && (value[i] != '"')) - i++; - if (value[i] == '"') - { - value[i] = '\0'; - i = 1; - } - else - i = 0; - } - GNUNET_CONFIGURATION_set_value_string (cfg, section, tag, - &value[i]); - } - else if (1 == sscanf (line, " %63[^= ] =[^\n]", tag)) - { - /* tag = */ - GNUNET_CONFIGURATION_set_value_string (cfg, section, tag, ""); - } - else - { - /* parse error */ - LOG (GNUNET_ERROR_TYPE_WARNING, - _("Syntax error in configuration file `%s' at line %u.\n"), - filename, nr); - ret = GNUNET_SYSERR; - break; - } + /* @INLINE@ value */ + if (GNUNET_OK != GNUNET_CONFIGURATION_parse (cfg, value)) + ret = GNUNET_SYSERR; /* failed to parse included config */ + } + else if (1 == sscanf (line, "[%99[^]]]", value)) + { + /* [value] */ + GNUNET_free (section); + section = GNUNET_strdup (value); + } + else if (2 == sscanf (line, " %63[^= ] = %191[^\n]", tag, value)) + { + /* tag = value */ + /* Strip LF */ + i = strlen (value) - 1; + while ((i >= 0) && (isspace ((unsigned char) value[i]))) + value[i--] = '\0'; + /* remove quotes */ + i = 0; + if (value[0] == '"') + { + i = 1; + while ((value[i] != '\0') && (value[i] != '"')) + i++; + if (value[i] == '"') + { + value[i] = '\0'; + i = 1; + } + else + i = 0; + } + GNUNET_CONFIGURATION_set_value_string (cfg, section, tag, &value[i]); + } + else if (1 == sscanf (line, " %63[^= ] =[^\n]", tag)) + { + /* tag = */ + GNUNET_CONFIGURATION_set_value_string (cfg, section, tag, ""); + } + else + { + /* parse error */ + LOG (GNUNET_ERROR_TYPE_WARNING, + _("Syntax error in configuration file `%s' at line %u.\n"), filename, + nr); + ret = GNUNET_SYSERR; + break; } + } GNUNET_assert (0 == fclose (fp)); /* restore dirty flag - anything we set in the meantime * came from disk */ @@ -282,7 +280,7 @@ GNUNET_CONFIGURATION_is_dirty (const struct GNUNET_CONFIGURATION_Handle *cfg) */ int GNUNET_CONFIGURATION_write (struct GNUNET_CONFIGURATION_Handle *cfg, - const char *filename) + const char *filename) { struct ConfigSection *sec; struct ConfigEntry *ent; @@ -296,67 +294,67 @@ GNUNET_CONFIGURATION_write (struct GNUNET_CONFIGURATION_Handle *cfg, if (fn == NULL) return GNUNET_SYSERR; if (GNUNET_OK != GNUNET_DISK_directory_create_for_file (fn)) - { - GNUNET_free (fn); - return GNUNET_SYSERR; - } + { + GNUNET_free (fn); + return GNUNET_SYSERR; + } if (NULL == (fp = FOPEN (fn, "w"))) - { - LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING, "fopen", fn); - GNUNET_free (fn); - return GNUNET_SYSERR; - } + { + LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING, "fopen", fn); + GNUNET_free (fn); + return GNUNET_SYSERR; + } GNUNET_free (fn); error = 0; sec = cfg->sections; while (sec != NULL) + { + if (0 > fprintf (fp, "[%s]\n", sec->name)) { - if (0 > fprintf (fp, "[%s]\n", sec->name)) - { - error = 1; - break; - } - ent = sec->entries; - while (ent != NULL) - { - if (ent->val != NULL) - { - val = GNUNET_malloc (strlen (ent->val) * 2 + 1); - strcpy (val, ent->val); - while (NULL != (pos = strstr (val, "\n"))) - { - memmove (&pos[2], &pos[1], strlen (&pos[1])); - pos[0] = '\\'; - pos[1] = 'n'; - } - if (0 > fprintf (fp, "%s = %s\n", ent->key, val)) - { - error = 1; - GNUNET_free (val); - break; - } - GNUNET_free (val); - } - ent = ent->next; - } - if (error != 0) - break; - if (0 > fprintf (fp, "\n")) - { - error = 1; - break; - } - sec = sec->next; + error = 1; + break; } + ent = sec->entries; + while (ent != NULL) + { + if (ent->val != NULL) + { + val = GNUNET_malloc (strlen (ent->val) * 2 + 1); + strcpy (val, ent->val); + while (NULL != (pos = strstr (val, "\n"))) + { + memmove (&pos[2], &pos[1], strlen (&pos[1])); + pos[0] = '\\'; + pos[1] = 'n'; + } + if (0 > fprintf (fp, "%s = %s\n", ent->key, val)) + { + error = 1; + GNUNET_free (val); + break; + } + GNUNET_free (val); + } + ent = ent->next; + } + if (error != 0) + break; + if (0 > fprintf (fp, "\n")) + { + error = 1; + break; + } + sec = sec->next; + } if (error != 0) LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING, "fprintf", filename); GNUNET_assert (0 == fclose (fp)); if (error != 0) - { - cfg->dirty = GNUNET_SYSERR; /* last write failed */ - return GNUNET_SYSERR; - } - cfg->dirty = GNUNET_NO; /* last write succeeded */ + { + cfg->dirty = GNUNET_SYSERR; /* last write failed */ + return GNUNET_SYSERR; + } + cfg->dirty = GNUNET_NO; /* last write succeeded */ return GNUNET_OK; } @@ -370,23 +368,23 @@ GNUNET_CONFIGURATION_write (struct GNUNET_CONFIGURATION_Handle *cfg, */ void GNUNET_CONFIGURATION_iterate (const struct GNUNET_CONFIGURATION_Handle *cfg, - GNUNET_CONFIGURATION_Iterator iter, - void *iter_cls) + GNUNET_CONFIGURATION_Iterator iter, + void *iter_cls) { struct ConfigSection *spos; struct ConfigEntry *epos; spos = cfg->sections; while (spos != NULL) + { + epos = spos->entries; + while (epos != NULL) { - epos = spos->entries; - while (epos != NULL) - { - iter (iter_cls, spos->name, epos->key, epos->val); - epos = epos->next; - } - spos = spos->next; + iter (iter_cls, spos->name, epos->key, epos->val); + epos = epos->next; } + spos = spos->next; + } } @@ -400,10 +398,10 @@ GNUNET_CONFIGURATION_iterate (const struct GNUNET_CONFIGURATION_Handle *cfg, */ void GNUNET_CONFIGURATION_iterate_section_values (const struct - GNUNET_CONFIGURATION_Handle *cfg, - const char *section, - GNUNET_CONFIGURATION_Iterator - iter, void *iter_cls) + GNUNET_CONFIGURATION_Handle *cfg, + const char *section, + GNUNET_CONFIGURATION_Iterator iter, + void *iter_cls) { struct ConfigSection *spos; struct ConfigEntry *epos; @@ -417,10 +415,10 @@ GNUNET_CONFIGURATION_iterate_section_values (const struct epos = spos->entries; while (epos != NULL) - { - iter (iter_cls, spos->name, epos->key, epos->val); - epos = epos->next; - } + { + iter (iter_cls, spos->name, epos->key, epos->val); + epos = epos->next; + } } @@ -432,21 +430,21 @@ GNUNET_CONFIGURATION_iterate_section_values (const struct * @param iter_cls closure for iter */ void -GNUNET_CONFIGURATION_iterate_sections (const struct - GNUNET_CONFIGURATION_Handle *cfg, - GNUNET_CONFIGURATION_Section_Iterator - iter, void *iter_cls) +GNUNET_CONFIGURATION_iterate_sections (const struct GNUNET_CONFIGURATION_Handle + *cfg, + GNUNET_CONFIGURATION_Section_Iterator + iter, void *iter_cls) { struct ConfigSection *spos; struct ConfigSection *next; next = cfg->sections; while (next != NULL) - { - spos = next; - next = spos->next; - iter (iter_cls, spos->name); - } + { + spos = next; + next = spos->next; + iter (iter_cls, spos->name); + } } /** @@ -457,7 +455,7 @@ GNUNET_CONFIGURATION_iterate_sections (const struct */ void GNUNET_CONFIGURATION_remove_section (struct GNUNET_CONFIGURATION_Handle *cfg, - const char *section) + const char *section) { struct ConfigSection *spos; struct ConfigSection *prev; @@ -466,28 +464,28 @@ GNUNET_CONFIGURATION_remove_section (struct GNUNET_CONFIGURATION_Handle *cfg, prev = NULL; spos = cfg->sections; while (spos != NULL) + { + if (0 == strcmp (section, spos->name)) { - if (0 == strcmp (section, spos->name)) - { - if (prev == NULL) - cfg->sections = spos->next; - else - prev->next = spos->next; - while (NULL != (ent = spos->entries)) - { - spos->entries = ent->next; - GNUNET_free (ent->key); - GNUNET_free_non_null (ent->val); - GNUNET_free (ent); - cfg->dirty = GNUNET_YES; - } - GNUNET_free (spos->name); - GNUNET_free (spos); - return; - } - prev = spos; - spos = spos->next; + if (prev == NULL) + cfg->sections = spos->next; + else + prev->next = spos->next; + while (NULL != (ent = spos->entries)) + { + spos->entries = ent->next; + GNUNET_free (ent->key); + GNUNET_free_non_null (ent->val); + GNUNET_free (ent); + cfg->dirty = GNUNET_YES; + } + GNUNET_free (spos->name); + GNUNET_free (spos); + return; } + prev = spos; + spos = spos->next; + } } @@ -502,7 +500,7 @@ GNUNET_CONFIGURATION_remove_section (struct GNUNET_CONFIGURATION_Handle *cfg, */ static void copy_entry (void *cls, const char *section, const char *option, - const char *value) + const char *value) { struct GNUNET_CONFIGURATION_Handle *dst = cls; @@ -535,8 +533,7 @@ GNUNET_CONFIGURATION_dup (const struct GNUNET_CONFIGURATION_Handle *cfg) * @return matching entry, NULL if not found */ static struct ConfigSection * -findSection (const struct GNUNET_CONFIGURATION_Handle *cfg, - const char *section) +findSection (const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section) { struct ConfigSection *pos; @@ -557,7 +554,7 @@ findSection (const struct GNUNET_CONFIGURATION_Handle *cfg, */ static struct ConfigEntry * findEntry (const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, - const char *key) + const char *key) { struct ConfigSection *sec; struct ConfigEntry *pos; @@ -584,7 +581,7 @@ findEntry (const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, */ static void compareEntries (void *cls, const char *section, const char *option, - const char *value) + const char *value) { struct DiffHandle *dh = cls; struct ConfigEntry *entNew; @@ -605,9 +602,9 @@ compareEntries (void *cls, const char *section, const char *option, */ int GNUNET_CONFIGURATION_write_diffs (const struct GNUNET_CONFIGURATION_Handle - *cfgDefault, - const struct GNUNET_CONFIGURATION_Handle - *cfgNew, const char *filename) + *cfgDefault, + const struct GNUNET_CONFIGURATION_Handle + *cfgNew, const char *filename) { int ret; struct DiffHandle diffHandle; @@ -630,28 +627,28 @@ GNUNET_CONFIGURATION_write_diffs (const struct GNUNET_CONFIGURATION_Handle * @param value value to set */ void -GNUNET_CONFIGURATION_set_value_string (struct GNUNET_CONFIGURATION_Handle - *cfg, const char *section, - const char *option, const char *value) +GNUNET_CONFIGURATION_set_value_string (struct GNUNET_CONFIGURATION_Handle *cfg, + const char *section, const char *option, + const char *value) { struct ConfigSection *sec; struct ConfigEntry *e; e = findEntry (cfg, section, option); if (e != NULL) - { - GNUNET_free_non_null (e->val); - e->val = GNUNET_strdup (value); - return; - } + { + GNUNET_free_non_null (e->val); + e->val = GNUNET_strdup (value); + return; + } sec = findSection (cfg, section); if (sec == NULL) - { - sec = GNUNET_malloc (sizeof (struct ConfigSection)); - sec->name = GNUNET_strdup (section); - sec->next = cfg->sections; - cfg->sections = sec; - } + { + sec = GNUNET_malloc (sizeof (struct ConfigSection)); + sec->name = GNUNET_strdup (section); + sec->next = cfg->sections; + cfg->sections = sec; + } e = GNUNET_malloc (sizeof (struct ConfigEntry)); e->key = GNUNET_strdup (option); e->val = GNUNET_strdup (value); @@ -669,10 +666,9 @@ GNUNET_CONFIGURATION_set_value_string (struct GNUNET_CONFIGURATION_Handle * @param number value to set */ void -GNUNET_CONFIGURATION_set_value_number (struct GNUNET_CONFIGURATION_Handle - *cfg, const char *section, - const char *option, - unsigned long long number) +GNUNET_CONFIGURATION_set_value_number (struct GNUNET_CONFIGURATION_Handle *cfg, + const char *section, const char *option, + unsigned long long number) { char s[64]; @@ -691,11 +687,10 @@ GNUNET_CONFIGURATION_set_value_number (struct GNUNET_CONFIGURATION_Handle * @return GNUNET_OK on success, GNUNET_SYSERR on error */ int -GNUNET_CONFIGURATION_get_value_number (const struct - GNUNET_CONFIGURATION_Handle *cfg, - const char *section, - const char *option, - unsigned long long *number) +GNUNET_CONFIGURATION_get_value_number (const struct GNUNET_CONFIGURATION_Handle + *cfg, const char *section, + const char *option, + unsigned long long *number) { struct ConfigEntry *e; @@ -719,9 +714,9 @@ GNUNET_CONFIGURATION_get_value_number (const struct */ int GNUNET_CONFIGURATION_get_value_time (const struct GNUNET_CONFIGURATION_Handle - *cfg, const char *section, - const char *option, - struct GNUNET_TIME_Relative *time) + *cfg, const char *section, + const char *option, + struct GNUNET_TIME_Relative *time) { struct ConfigEntry *e; @@ -729,8 +724,7 @@ GNUNET_CONFIGURATION_get_value_time (const struct GNUNET_CONFIGURATION_Handle if (e == NULL) return GNUNET_SYSERR; - return GNUNET_STRINGS_fancy_time_to_relative (e->val, - time); + return GNUNET_STRINGS_fancy_time_to_relative (e->val, time); } @@ -754,8 +748,7 @@ GNUNET_CONFIGURATION_get_value_size (const struct GNUNET_CONFIGURATION_Handle e = findEntry (cfg, section, option); if (e == NULL) return GNUNET_SYSERR; - return GNUNET_STRINGS_fancy_size_to_bytes (e->val, - size); + return GNUNET_STRINGS_fancy_size_to_bytes (e->val, size); } @@ -770,19 +763,18 @@ GNUNET_CONFIGURATION_get_value_size (const struct GNUNET_CONFIGURATION_Handle * @return GNUNET_OK on success, GNUNET_SYSERR on error */ int -GNUNET_CONFIGURATION_get_value_string (const struct - GNUNET_CONFIGURATION_Handle *cfg, - const char *section, - const char *option, char **value) +GNUNET_CONFIGURATION_get_value_string (const struct GNUNET_CONFIGURATION_Handle + *cfg, const char *section, + const char *option, char **value) { struct ConfigEntry *e; e = findEntry (cfg, section, option); if ((e == NULL) || (e->val == NULL)) - { - *value = NULL; - return GNUNET_SYSERR; - } + { + *value = NULL; + return GNUNET_SYSERR; + } *value = GNUNET_strdup (e->val); return GNUNET_OK; } @@ -801,12 +793,10 @@ GNUNET_CONFIGURATION_get_value_string (const struct * @return GNUNET_OK on success, GNUNET_SYSERR on error */ int -GNUNET_CONFIGURATION_get_value_choice (const struct - GNUNET_CONFIGURATION_Handle *cfg, - const char *section, - const char *option, - const char **choices, - const char **value) +GNUNET_CONFIGURATION_get_value_choice (const struct GNUNET_CONFIGURATION_Handle + *cfg, const char *section, + const char *option, const char **choices, + const char **value) { struct ConfigEntry *e; int i; @@ -816,19 +806,19 @@ GNUNET_CONFIGURATION_get_value_choice (const struct return GNUNET_SYSERR; i = 0; while (choices[i] != NULL) - { - if (0 == strcasecmp (choices[i], e->val)) - break; - i++; - } + { + if (0 == strcasecmp (choices[i], e->val)) + break; + i++; + } if (choices[i] == NULL) - { - LOG (GNUNET_ERROR_TYPE_ERROR, - _("Configuration value '%s' for '%s'" - " in section '%s' is not in set of legal choices\n"), e->val, - option, section); - return GNUNET_SYSERR; - } + { + LOG (GNUNET_ERROR_TYPE_ERROR, + _("Configuration value '%s' for '%s'" + " in section '%s' is not in set of legal choices\n"), e->val, option, + section); + return GNUNET_SYSERR; + } *value = choices[i]; return GNUNET_OK; } @@ -842,9 +832,8 @@ GNUNET_CONFIGURATION_get_value_choice (const struct * @return GNUNET_YES if so, GNUNET_NO if not. */ int -GNUNET_CONFIGURATION_have_value (const struct GNUNET_CONFIGURATION_Handle - *cfg, const char *section, - const char *option) +GNUNET_CONFIGURATION_have_value (const struct GNUNET_CONFIGURATION_Handle *cfg, + const char *section, const char *option) { struct ConfigEntry *e; @@ -865,7 +854,7 @@ GNUNET_CONFIGURATION_have_value (const struct GNUNET_CONFIGURATION_Handle */ char * GNUNET_CONFIGURATION_expand_dollar (const struct GNUNET_CONFIGURATION_Handle - *cfg, char *orig) + *cfg, char *orig) { int i; char *prefix; @@ -879,25 +868,24 @@ GNUNET_CONFIGURATION_expand_dollar (const struct GNUNET_CONFIGURATION_Handle while ((orig[i] != '/') && (orig[i] != '\\') && (orig[i] != '\0')) i++; if (orig[i] == '\0') - { - post = ""; - } + { + post = ""; + } else - { - orig[i] = '\0'; - post = &orig[i + 1]; - } + { + orig[i] = '\0'; + post = &orig[i + 1]; + } if (GNUNET_OK != - GNUNET_CONFIGURATION_get_value_filename (cfg, "PATHS", &orig[1], - &prefix)) + GNUNET_CONFIGURATION_get_value_filename (cfg, "PATHS", &orig[1], &prefix)) + { + if (NULL == (env = getenv (&orig[1]))) { - if (NULL == (env = getenv (&orig[1]))) - { - orig[i] = DIR_SEPARATOR; - return orig; - } - prefix = GNUNET_strdup (env); + orig[i] = DIR_SEPARATOR; + return orig; } + prefix = GNUNET_strdup (env); + } result = GNUNET_malloc (strlen (prefix) + strlen (post) + 2); strcpy (result, prefix); if ((strlen (prefix) == 0) || @@ -922,18 +910,18 @@ GNUNET_CONFIGURATION_expand_dollar (const struct GNUNET_CONFIGURATION_Handle */ int GNUNET_CONFIGURATION_get_value_filename (const struct - GNUNET_CONFIGURATION_Handle *cfg, - const char *section, - const char *option, char **value) + GNUNET_CONFIGURATION_Handle *cfg, + const char *section, + const char *option, char **value) { char *tmp; if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg, section, option, &tmp)) - { - *value = NULL; - return GNUNET_SYSERR; - } + { + *value = NULL; + return GNUNET_SYSERR; + } tmp = GNUNET_CONFIGURATION_expand_dollar (cfg, tmp); *value = GNUNET_STRINGS_filename_expand (tmp); GNUNET_free (tmp); @@ -954,15 +942,15 @@ GNUNET_CONFIGURATION_get_value_filename (const struct */ int GNUNET_CONFIGURATION_get_value_yesno (const struct GNUNET_CONFIGURATION_Handle - *cfg, const char *section, - const char *option) + *cfg, const char *section, + const char *option) { static const char *yesno[] = { "YES", "NO", NULL }; const char *val; int ret; ret = - GNUNET_CONFIGURATION_get_value_choice (cfg, section, option, yesno, &val); + GNUNET_CONFIGURATION_get_value_choice (cfg, section, option, yesno, &val); if (ret == GNUNET_SYSERR) return ret; if (val == yesno[0]) @@ -983,11 +971,11 @@ GNUNET_CONFIGURATION_get_value_yesno (const struct GNUNET_CONFIGURATION_Handle */ int GNUNET_CONFIGURATION_iterate_value_filenames (const struct - GNUNET_CONFIGURATION_Handle - *cfg, const char *section, - const char *option, - GNUNET_FileNameCallback cb, - void *cb_cls) + GNUNET_CONFIGURATION_Handle *cfg, + const char *section, + const char *option, + GNUNET_FileNameCallback cb, + void *cb_cls) { char *list; char *pos; @@ -1002,46 +990,46 @@ GNUNET_CONFIGURATION_iterate_value_filenames (const struct ret = 0; pos = list; while (1) + { + while (pos[0] == ' ') + pos++; + if (strlen (pos) == 0) + break; + end = pos + 1; + while ((end[0] != ' ') && (end[0] != '\0')) { - while (pos[0] == ' ') - pos++; - if (strlen (pos) == 0) - break; - end = pos + 1; - while ((end[0] != ' ') && (end[0] != '\0')) - { - if (end[0] == '\\') - { - switch (end[1]) - { - case '\\': - case ' ': - memmove (end, &end[1], strlen (&end[1]) + 1); - case '\0': - /* illegal, but just keep it */ - break; - default: - /* illegal, but just ignore that there was a '/' */ - break; - } - } - end++; - } - old = end[0]; - end[0] = '\0'; - if (strlen (pos) > 0) - { - ret++; - if ((cb != NULL) && (GNUNET_OK != cb (cb_cls, pos))) - { - ret = GNUNET_SYSERR; - break; - } - } - if (old == '\0') - break; - pos = end + 1; + if (end[0] == '\\') + { + switch (end[1]) + { + case '\\': + case ' ': + memmove (end, &end[1], strlen (&end[1]) + 1); + case '\0': + /* illegal, but just keep it */ + break; + default: + /* illegal, but just ignore that there was a '/' */ + break; + } + } + end++; } + old = end[0]; + end[0] = '\0'; + if (strlen (pos) > 0) + { + ret++; + if ((cb != NULL) && (GNUNET_OK != cb (cb_cls, pos))) + { + ret = GNUNET_SYSERR; + break; + } + } + if (old == '\0') + break; + pos = end + 1; + } GNUNET_free (list); return ret; } @@ -1065,21 +1053,21 @@ escape_name (const char *value) rpos = value; wpos = escaped; while (rpos[0] != '\0') + { + switch (rpos[0]) { - switch (rpos[0]) - { - case '\\': - case ' ': - wpos[0] = '\\'; - wpos[1] = rpos[0]; - wpos += 2; - break; - default: - wpos[0] = rpos[0]; - wpos++; - } - rpos++; + case '\\': + case ' ': + wpos[0] = '\\'; + wpos[1] = rpos[0]; + wpos += 2; + break; + default: + wpos[0] = rpos[0]; + wpos++; } + rpos++; + } return escaped; } @@ -1114,9 +1102,9 @@ test_match (void *cls, const char *fn) */ int GNUNET_CONFIGURATION_append_value_filename (struct GNUNET_CONFIGURATION_Handle - *cfg, const char *section, - const char *option, - const char *value) + *cfg, const char *section, + const char *option, + const char *value) { char *escaped; char *old; @@ -1124,9 +1112,9 @@ GNUNET_CONFIGURATION_append_value_filename (struct GNUNET_CONFIGURATION_Handle if (GNUNET_SYSERR == GNUNET_CONFIGURATION_iterate_value_filenames (cfg, section, option, - &test_match, - (void *) value)) - return GNUNET_NO; /* already exists */ + &test_match, + (void *) value)) + return GNUNET_NO; /* already exists */ if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg, section, option, &old)) old = GNUNET_strdup (""); @@ -1158,9 +1146,9 @@ GNUNET_CONFIGURATION_append_value_filename (struct GNUNET_CONFIGURATION_Handle */ int GNUNET_CONFIGURATION_remove_value_filename (struct GNUNET_CONFIGURATION_Handle - *cfg, const char *section, - const char *option, - const char *value) + *cfg, const char *section, + const char *option, + const char *value) { char *list; char *pos; @@ -1174,55 +1162,55 @@ GNUNET_CONFIGURATION_remove_value_filename (struct GNUNET_CONFIGURATION_Handle match = escape_name (value); pos = list; while (1) + { + while (pos[0] == ' ') + pos++; + if (strlen (pos) == 0) + break; + end = pos + 1; + while ((end[0] != ' ') && (end[0] != '\0')) + { + if (end[0] == '\\') + { + switch (end[1]) + { + case '\\': + case ' ': + end++; + break; + case '\0': + /* illegal, but just keep it */ + break; + default: + /* illegal, but just ignore that there was a '/' */ + break; + } + } + end++; + } + old = end[0]; + end[0] = '\0'; + if (0 == strcmp (pos, match)) { - while (pos[0] == ' ') - pos++; - if (strlen (pos) == 0) - break; - end = pos + 1; - while ((end[0] != ' ') && (end[0] != '\0')) - { - if (end[0] == '\\') - { - switch (end[1]) - { - case '\\': - case ' ': - end++; - break; - case '\0': - /* illegal, but just keep it */ - break; - default: - /* illegal, but just ignore that there was a '/' */ - break; - } - } - end++; - } - old = end[0]; - end[0] = '\0'; - if (0 == strcmp (pos, match)) - { - if (old != '\0') - memmove (pos, &end[1], strlen (&end[1]) + 1); - else - { - if (pos != list) - pos[-1] = '\0'; - else - pos[0] = '\0'; - } - GNUNET_CONFIGURATION_set_value_string (cfg, section, option, list); - GNUNET_free (list); - GNUNET_free (match); - return GNUNET_OK; - } - if (old == '\0') - break; - end[0] = old; - pos = end + 1; + if (old != '\0') + memmove (pos, &end[1], strlen (&end[1]) + 1); + else + { + if (pos != list) + pos[-1] = '\0'; + else + pos[0] = '\0'; + } + GNUNET_CONFIGURATION_set_value_string (cfg, section, option, list); + GNUNET_free (list); + GNUNET_free (match); + return GNUNET_OK; } + if (old == '\0') + break; + end[0] = old; + pos = end + 1; + } GNUNET_free (list); GNUNET_free (match); return GNUNET_NO; @@ -1237,8 +1225,7 @@ GNUNET_CONFIGURATION_remove_value_filename (struct GNUNET_CONFIGURATION_Handle * @return GNUNET_OK on success */ static int -parse_configuration_file (void *cls, - const char *filename) +parse_configuration_file (void *cls, const char *filename) { struct GNUNET_CONFIGURATION_Handle *cfg = cls; int ret; @@ -1258,7 +1245,7 @@ parse_configuration_file (void *cls, */ int GNUNET_CONFIGURATION_load (struct GNUNET_CONFIGURATION_Handle *cfg, - const char *filename) + const char *filename) { char *baseconfig; char *ipath; @@ -1267,29 +1254,26 @@ GNUNET_CONFIGURATION_load (struct GNUNET_CONFIGURATION_Handle *cfg, if (ipath == NULL) return GNUNET_SYSERR; baseconfig = NULL; - GNUNET_asprintf (&baseconfig, "%s%s", ipath, - "config.d"); + GNUNET_asprintf (&baseconfig, "%s%s", ipath, "config.d"); GNUNET_free (ipath); if (GNUNET_SYSERR == - GNUNET_DISK_directory_scan (baseconfig, - &parse_configuration_file, - cfg)) + GNUNET_DISK_directory_scan (baseconfig, &parse_configuration_file, cfg)) { GNUNET_free (baseconfig); - return GNUNET_SYSERR; /* no configuration at all found */ + return GNUNET_SYSERR; /* no configuration at all found */ } - GNUNET_free (baseconfig); - if ( (filename != NULL) && - (GNUNET_OK != GNUNET_CONFIGURATION_parse (cfg, filename)) ) + GNUNET_free (baseconfig); + if ((filename != NULL) && + (GNUNET_OK != GNUNET_CONFIGURATION_parse (cfg, filename))) { /* specified configuration not found */ return GNUNET_SYSERR; } if (((GNUNET_YES != - GNUNET_CONFIGURATION_have_value (cfg, "PATHS", "DEFAULTCONFIG"))) && + GNUNET_CONFIGURATION_have_value (cfg, "PATHS", "DEFAULTCONFIG"))) && (filename != NULL)) GNUNET_CONFIGURATION_set_value_string (cfg, "PATHS", "DEFAULTCONFIG", - filename); + filename); if ((GNUNET_YES == GNUNET_CONFIGURATION_have_value (cfg, "TESTING", "WEAKRANDOM")) && (GNUNET_YES == |