X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=file.c;h=d320ba6c3cd66d49bd708d0756826c80511f3548;hb=8dd3eb50025224bd2aa286c0e5c27d230efb7bde;hp=9f59637d06ff33471227effe86ea9cbf4af64d64;hpb=80e2e58f4e4c0d8ff492281fa998d550a85b4d92;p=project%2Fuci.git diff --git a/file.c b/file.c index 9f59637..d320ba6 100644 --- a/file.c +++ b/file.c @@ -69,7 +69,7 @@ static void uci_switch_config(struct uci_context *ctx) * if an older config under the same name exists, unload it * ignore errors here, e.g. if the config was not found */ - e = uci_lookup_list(ctx, &ctx->root, name); + e = uci_lookup_list(&ctx->root, name); if (e) UCI_THROW(ctx, UCI_ERR_DUPLICATE); pctx->package = uci_alloc_package(ctx, name); @@ -122,7 +122,8 @@ static void uci_parse_config(struct uci_context *ctx, char **str) if (pctx->merge) { UCI_TRAP_SAVE(ctx, error); - uci_set(ctx, pctx->package, name, NULL, type, NULL); + if (uci_set(ctx, pctx->package, name, NULL, type, NULL) != UCI_OK) + goto error; UCI_TRAP_RESTORE(ctx); return; error: @@ -293,7 +294,6 @@ int uci_import(struct uci_context *ctx, FILE *stream, const char *name, struct u UCI_HANDLE_ERR(ctx); /* make sure no memory from previous parse attempts is leaked */ - ctx->internal = true; uci_cleanup(ctx); uci_alloc_parse_context(ctx); @@ -375,7 +375,7 @@ void uci_file_commit(struct uci_context *ctx, struct uci_package **package, bool /* flush unsaved changes and reload from history file */ UCI_TRAP_SAVE(ctx, done); - if (p->confdir) { + if (p->has_history) { if (!overwrite) { name = uci_strdup(ctx, p->e.name); path = uci_strdup(ctx, p->path); @@ -392,7 +392,7 @@ void uci_file_commit(struct uci_context *ctx, struct uci_package **package, bool UCI_INTERNAL(uci_import, ctx, f, name, &p, true); p->path = path; - p->confdir = true; + p->has_history = true; *package = p; /* freed together with the uci_package */ @@ -517,7 +517,7 @@ static struct uci_package *uci_file_load(struct uci_context *ctx, const char *na if (package) { package->path = filename; - package->confdir = confdir; + package->has_history = confdir; uci_load_history(ctx, package, false); } @@ -528,9 +528,8 @@ done: return package; } -static struct uci_backend uci_file_backend = { - .name = "file", +static UCI_BACKEND(uci_file_backend, "file", .load = uci_file_load, .commit = uci_file_commit, .list_configs = uci_list_config_files, -}; +);