tests: use uci instead of uci-static
[project/uci.git] / util.c
diff --git a/util.c b/util.c
index 15f311b..09f1817 100644 (file)
--- a/util.c
+++ b/util.c
@@ -89,9 +89,12 @@ bool uci_validate_text(const char *str)
 {
        while (*str) {
                unsigned char c = *str;
-               if ((c == '\r') || (c == '\n') ||
-                       ((c < 32) && (c != '\t')))
+               if (((c < 32) &&
+                    (c != '\t') &&
+                    (c != '\n') &&
+                    (c != '\r'))) {
                        return false;
+               }
                str++;
        }
        return true;
@@ -161,12 +164,12 @@ error:
 }
 
 
-__private void uci_parse_error(struct uci_context *ctx, char *pos, char *reason)
+__private void uci_parse_error(struct uci_context *ctx, char *reason)
 {
        struct uci_parse_context *pctx = ctx->pctx;
 
        pctx->reason = reason;
-       pctx->byte = pos - pctx->buf;
+       pctx->byte = pctx_pos(pctx);
        UCI_THROW(ctx, UCI_ERR_PARSE);
 }
 
@@ -178,7 +181,7 @@ __private void uci_parse_error(struct uci_context *ctx, char *pos, char *reason)
  * note: when opening for write and seeking to the beginning of
  * the stream, truncate the file
  */
-__private FILE *uci_open_stream(struct uci_context *ctx, const char *filename, int pos, bool write, bool create)
+__private FILE *uci_open_stream(struct uci_context *ctx, const char *filename, const char *origfilename, int pos, bool write, bool create)
 {
        struct stat statbuf;
        FILE *file = NULL;
@@ -190,7 +193,11 @@ __private FILE *uci_open_stream(struct uci_context *ctx, const char *filename, i
 
        if (create) {
                flags |= O_CREAT;
-               name = basename((char *) filename);
+               if (origfilename) {
+                       name = basename((char *) origfilename);
+               } else {
+                       name = basename((char *) filename);
+               }
                if ((asprintf(&filename2, "%s/%s", ctx->confdir, name) < 0) || !filename2) {
                        UCI_THROW(ctx, UCI_ERR_MEM);
                } else {