[master] 7b5d416f4 Add from-to variant named vjsn_parse_end()
Poul-Henning Kamp
phk at FreeBSD.org
Wed May 22 08:50:14 UTC 2019
commit 7b5d416f4aec9f640428ba2e07775dab21b027dc
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Wed May 22 05:54:00 2019 +0000
Add from-to variant named vjsn_parse_end()
diff --git a/include/vjsn.h b/include/vjsn.h
index 3b2f16b30..ebd4cafc5 100644
--- a/include/vjsn.h
+++ b/include/vjsn.h
@@ -54,6 +54,7 @@ struct vjsn {
const char *err;
};
+struct vjsn *vjsn_parse_end(const char *, const char *, const char **);
struct vjsn *vjsn_parse(const char *, const char **);
void vjsn_delete(struct vjsn **);
void vjsn_dump(const struct vjsn *js, FILE *fo);
diff --git a/lib/libvarnish/vjsn.c b/lib/libvarnish/vjsn.c
index 6a265cbe0..653fb340d 100644
--- a/lib/libvarnish/vjsn.c
+++ b/lib/libvarnish/vjsn.c
@@ -395,20 +395,28 @@ vjsn_value(struct vjsn *js)
}
struct vjsn *
-vjsn_parse(const char *src, const char **err)
+vjsn_parse_end(const char *from, const char *to, const char **err)
{
struct vjsn *js;
char *p, *e;
+ size_t sz;
- AN(src);
+ AN(from);
AN(err);
*err = NULL;
- p = strdup(src);
+ if (to == NULL)
+ to = strchr(from, '\0');
+ AN(to);
+
+ sz = to - from;
+
+ p = malloc(sz + 1L);
AN(p);
- e = strchr(p, '\0');
- AN(e);
+ memcpy(p, from, sz);
+ p[sz] = '\0';
+ e = p + sz;
ALLOC_OBJ(js, VJSN_MAGIC);
AN(js);
@@ -431,6 +439,13 @@ vjsn_parse(const char *src, const char **err)
return (js);
}
+struct vjsn *
+vjsn_parse(const char *src, const char **err)
+{
+
+ return (vjsn_parse_end(src, NULL, err));
+}
+
struct vjsn_val *
vjsn_child(const struct vjsn_val *vv, const char *key)
{
More information about the varnish-commit
mailing list