X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=libuci.c;h=d4ef8d86656884ed629fc4c454b8e3f837f916d0;hp=c0b4ab01571a18f2b4ed86d1bfeb38034e410e5e;hb=1188f6ac8a938d88fb8d40d9ca5e2564d5c02042;hpb=f0be94e4d8d2a0c8ab35b932e88170cc37cca4af diff --git a/libuci.c b/libuci.c index c0b4ab0..d4ef8d8 100644 --- a/libuci.c +++ b/libuci.c @@ -16,6 +16,7 @@ * This file contains some common code for the uci library */ +#define _GNU_SOURCE #include #include #include @@ -25,13 +26,14 @@ #include "err.h" static const char *uci_errstr[] = { - [UCI_OK] = "Success", - [UCI_ERR_MEM] = "Out of memory", - [UCI_ERR_INVAL] = "Invalid argument", - [UCI_ERR_NOTFOUND] = "Entry not found", - [UCI_ERR_IO] = "I/O error", - [UCI_ERR_PARSE] = "Parse error", - [UCI_ERR_UNKNOWN] = "Unknown error", + [UCI_OK] = "Success", + [UCI_ERR_MEM] = "Out of memory", + [UCI_ERR_INVAL] = "Invalid argument", + [UCI_ERR_NOTFOUND] = "Entry not found", + [UCI_ERR_IO] = "I/O error", + [UCI_ERR_PARSE] = "Parse error", + [UCI_ERR_DUPLICATE] = "Duplicate entry", + [UCI_ERR_UNKNOWN] = "Unknown error", }; #include "util.c" @@ -46,6 +48,7 @@ struct uci_context *uci_alloc_context(void) ctx = (struct uci_context *) malloc(sizeof(struct uci_context)); memset(ctx, 0, sizeof(struct uci_context)); uci_list_init(&ctx->root); + ctx->flags = UCI_FLAG_STRICT; return ctx; } @@ -57,7 +60,8 @@ void uci_free_context(struct uci_context *ctx) UCI_TRAP_SAVE(ctx, ignore); uci_cleanup(ctx); uci_foreach_element_safe(&ctx->root, tmp, e) { - uci_free_package(uci_to_package(e)); + struct uci_package *p = uci_to_package(e); + uci_free_package(&p); } free(ctx); UCI_TRAP_RESTORE(ctx);