]> pilppa.org Git - uci.git/blobdiff - libuci.c
add reorder to lua api
[uci.git] / libuci.c
index 29dab12e585fb2741529c75c7c6e397870e1663f..947b029e970299fa99acabeb3f07ee6d9cc5ee6e 100644 (file)
--- a/libuci.c
+++ b/libuci.c
@@ -145,7 +145,7 @@ uci_get_errorstr(struct uci_context *ctx, char **dest, const char *prefix)
                "%s%s" /* prefix */
                "%s%s" /* function */
                "%s" /* error */
-               "%s\n"; /* details */
+               "%s"; /* details */
 
        error_info[0] = 0;
 
@@ -160,25 +160,29 @@ uci_get_errorstr(struct uci_context *ctx, char **dest, const char *prefix)
        switch (err) {
        case UCI_ERR_PARSE:
                if (ctx->pctx) {
-                       snprintf(error_info, sizeof(error_info), " (%s) at line %d, byte %d", (ctx->pctx->reason ? ctx->pctx->reason : "unknown"), ctx->pctx->line, ctx->pctx->byte);
+                       snprintf(error_info, sizeof(error_info) - 1, " (%s) at line %d, byte %d", (ctx->pctx->reason ? ctx->pctx->reason : "unknown"), ctx->pctx->line, ctx->pctx->byte);
                        break;
                }
                break;
        default:
                break;
        }
-       if (dest)
-               asprintf(dest, format,
+       if (dest) {
+               err = asprintf(dest, format,
                        (prefix ? prefix : ""), (prefix ? ": " : ""),
                        (ctx->func ? ctx->func : ""), (ctx->func ? ": " : ""),
                        uci_errstr[err],
                        error_info);
-       else
+               if (err < 0)
+                       *dest = NULL;
+       } else {
+               strcat(error_info, "\n");
                fprintf(stderr, format,
                        (prefix ? prefix : ""), (prefix ? ": " : ""),
                        (ctx->func ? ctx->func : ""), (ctx->func ? ": " : ""),
                        uci_errstr[err],
                        error_info);
+       }
 }
 
 int uci_list_configs(struct uci_context *ctx, char ***list)