X-Git-Url: http://git.droids-corp.org/?p=protos%2Flibecoli.git;a=blobdiff_plain;f=lib%2Fecoli_config.c;h=0698f07cb0caa5199fc5d756c3725ef01f58f0e0;hp=5a9a5fb7815a9e2a7de4f3fc66e5cc3b89c52c95;hb=15718f19cbf3868bf6fba79f4e26b5254c57873e;hpb=777e130e7281f2427bc77f8c96acc23b5ddd15f0 diff --git a/lib/ecoli_config.c b/lib/ecoli_config.c index 5a9a5fb..0698f07 100644 --- a/lib/ecoli_config.c +++ b/lib/ecoli_config.c @@ -778,12 +778,15 @@ ec_config_dup(const struct ec_config *config) } static int -ec_config_list_dump(FILE *out, const struct ec_config_list *list, - size_t indent) +ec_config_list_dump(FILE *out, const char *key, + const struct ec_config_list *list, size_t indent) { const struct ec_config *v; - fprintf(out, "%*s" "type=list:\n", (int)indent * 4, ""); + fprintf(out, "%*s" "%s%s%stype=list\n", (int)indent * 4, "", + key ? "key=": "", + key ? key: "", + key ? " ": ""); TAILQ_FOREACH(v, list, next) { if (__ec_config_dump(out, NULL, v, indent + 1) < 0) @@ -794,20 +797,24 @@ ec_config_list_dump(FILE *out, const struct ec_config_list *list, } static int -ec_config_dict_dump(FILE *out, const struct ec_keyval *dict, +ec_config_dict_dump(FILE *out, const char *key, const struct ec_keyval *dict, size_t indent) { const struct ec_config *value; struct ec_keyval_iter *iter; - const char *key; + const char *k; + + fprintf(out, "%*s" "%s%s%stype=dict\n", (int)indent * 4, "", + key ? "key=": "", + key ? key: "", + key ? " ": ""); - fprintf(out, "%*s" "type=dict:\n", (int)indent * 4, ""); for (iter = ec_keyval_iter(dict); ec_keyval_iter_valid(iter); ec_keyval_iter_next(iter)) { - key = ec_keyval_iter_get_key(iter); + k = ec_keyval_iter_get_key(iter); value = ec_keyval_iter_get_val(iter); - if (__ec_config_dump(out, key, value, indent + 1) < 0) + if (__ec_config_dump(out, k, value, indent + 1) < 0) goto fail; } ec_keyval_iter_free(iter); @@ -844,9 +851,9 @@ __ec_config_dump(FILE *out, const char *key, const struct ec_config *value, ec_asprintf(&val_str, "%p", value->node); break; case EC_CONFIG_TYPE_LIST: - return ec_config_list_dump(out, &value->list, indent); + return ec_config_list_dump(out, key, &value->list, indent); case EC_CONFIG_TYPE_DICT: - return ec_config_dict_dump(out, value->dict, indent); + return ec_config_dict_dump(out, key, value->dict, indent); default: errno = EINVAL; break;