[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