[master] 380e3a4c6 vcc_utils: New vcc_BoolVal() for boolean literals
Dridi Boukelmoune
dridi.boukelmoune at gmail.com
Wed Feb 8 13:40:09 UTC 2023
commit 380e3a4c667d72e6e1130caef0698cd5d8238983
Author: Walid Boudebouda <walid.boudebouda at gmail.com>
Date: Fri Jan 13 12:08:19 2023 +0100
vcc_utils: New vcc_BoolVal() for boolean literals
diff --git a/lib/libvcc/vcc_compile.h b/lib/libvcc/vcc_compile.h
index a3e5d51e0..b99e40fdf 100644
--- a/lib/libvcc/vcc_compile.h
+++ b/lib/libvcc/vcc_compile.h
@@ -448,6 +448,7 @@ double vcc_DurationUnit(struct vcc *);
void vcc_ByteVal(struct vcc *, VCL_INT *);
void vcc_Duration(struct vcc *tl, double *);
uint64_t vcc_UintVal(struct vcc *tl);
+uint8_t vcc_BoolVal(struct vcc *tl);
int vcc_IsFlag(struct vcc *tl);
int vcc_IsFlagRaw(struct vcc *, const struct token *, const struct token *);
char *vcc_Dup_be(const char *b, const char *e);
diff --git a/lib/libvcc/vcc_utils.c b/lib/libvcc/vcc_utils.c
index 50abffe75..b5103c040 100644
--- a/lib/libvcc/vcc_utils.c
+++ b/lib/libvcc/vcc_utils.c
@@ -285,6 +285,29 @@ Resolve_Sockaddr(struct vcc *tl,
ZERO_OBJ(rss, sizeof rss);
}
+/*--------------------------------------------------------------------
+* Recognize boolean const "true" or "false"
+*/
+
+uint8_t
+vcc_BoolVal(struct vcc *tl)
+{
+ struct symbol* sym;
+
+ if (tl->t->tok != ID) {
+ VSB_cat(tl->sb, "Expected \"true\" or \"false\"\n");
+ vcc_ErrWhere(tl, tl->t);
+ return (0);
+ }
+ sym = VCC_SymbolGet(tl, SYM_MAIN, SYM_NONE, SYMTAB_NOERR, XREF_NONE);
+ if (sym == NULL || sym->type != BOOL) {
+ VSB_cat(tl->sb, "Expected \"true\" or \"false\"\n");
+ vcc_ErrWhere(tl, tl->t);
+ return (0);
+ }
+ return (sym->eval_priv != NULL);
+}
+
/*--------------------------------------------------------------------
* Recognize and convert units of duration, return seconds.
*/
More information about the varnish-commit
mailing list