#include <string.h>
#include <stdlib.h>
#include <stdio.h>
-#include "libuci.h"
+#include "uci.h"
#define DEBUG
#include "err.h"
[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",
};
return ctx;
}
+void uci_free(struct uci_context *ctx)
+{
+ struct uci_config *cfg;
+
+ uci_cleanup(ctx);
+ uci_foreach_entry(config, &ctx->root, cfg) {
+ uci_drop_file(cfg);
+ }
+ free(ctx);
+ return;
+}
+
int uci_cleanup(struct uci_context *ctx)
{
UCI_HANDLE_ERR(ctx);
switch (err) {
case UCI_ERR_PARSE:
if (ctx->pctx) {
- fprintf(stderr, "%s: %s at line %d, byte %d\n", str, uci_errstr[err], ctx->pctx->line, ctx->pctx->byte);
+ fprintf(stderr, "%s: %s (%s) at line %d, byte %d\n", str, uci_errstr[err], (ctx->pctx->reason ? ctx->pctx->reason : "unknown"), ctx->pctx->line, ctx->pctx->byte);
break;
}
/* fall through */