---
 bin/varnishd/cache/cache.h          |   12 +++++---
 bin/varnishd/cache/cache_center.c   |    6 ++--
 bin/varnishd/cache/cache_shmlog.c   |    4 +++
 bin/varnishd/cache/cache_vrt_vmod.c |    2 +-
 bin/varnishd/mgt/mgt.h              |    4 ++-
 bin/varnishd/mgt/mgt_param.c        |    2 +-
 bin/varnishreplay/varnishreplay.c   |    5 +++
 bin/varnishtest/vtc.c               |    8 +++---
 bin/varnishtest/vtc.h               |    9 ++++--
 bin/varnishtest/vtc_http.c          |    6 ++--
 bin/varnishtest/vtc_sema.c          |    2 +-
 include/printflike.h                |   51 +++++++++++++++++++++++++++++++++++
 include/vcli_priv.h                 |    5 +++-
 include/vsb.h                       |    6 +---
 lib/libvarnishapi/vsm_api.h         |    5 +++-
 lib/libvcl/vcc_acl.c                |    9 +++---
 lib/libvcl/vcc_backend.c            |    2 +-
 lib/libvcl/vcc_compile.c            |    2 +-
 lib/libvcl/vcc_compile.h            |   15 +++++++---
 lib/libvcl/vcc_dir_dns.c            |    4 +-
 lib/libvcl/vcc_expr.c               |    6 +++-
 lib/libvcl/vcc_parse.c              |    4 +-
 22 files changed, 125 insertions(+), 44 deletions(-)
 create mode 100644 include/printflike.h

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 6b0d0a9..356d138 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -809,7 +809,8 @@ void http_PutStatus(struct http *to, uint16_t status);
 void http_PutResponse(struct worker *w, unsigned vsl_id, const struct http *to,
     const char *response);
 void http_PrintfHeader(struct worker *w, unsigned vsl_id, struct http *to,
-    const char *fmt, ...);
+    const char *fmt, ...)
+    __printflike(4, 5);
 void http_SetHeader(struct worker *w, unsigned vsl_id, struct http *to,
     const char *hdr);
 void http_SetH(const struct http *to, unsigned n, const char *fm);
@@ -928,10 +929,13 @@ void *VSM_Alloc(unsigned size, const char *class, const 
char *type,
     const char *ident);
 void VSM_Free(void *ptr);
 #ifdef VSL_ENDMARKER
-void VSL(enum VSL_tag_e tag, int id, const char *fmt, ...);
+void VSL(enum VSL_tag_e tag, int id, const char *fmt, ...)
+    __printflike(3, 4);
 void WSLR(struct worker *w, enum VSL_tag_e tag, int id, txt t);
-void WSL(struct worker *w, enum VSL_tag_e tag, int id, const char *fmt, ...);
-void WSLB(struct worker *w, enum VSL_tag_e tag, const char *fmt, ...);
+void WSL(struct worker *w, enum VSL_tag_e tag, int id, const char *fmt, ...)
+    __printflike(4, 5);
+void WSLB(struct worker *w, enum VSL_tag_e tag, const char *fmt, ...)
+    __printflike(3, 4);
 
 void WSL_Flush(struct worker *w, int overflow);
 
diff --git a/bin/varnishd/cache/cache_center.c 
b/bin/varnishd/cache/cache_center.c
index 4967c82..1b62937 100644
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@ -1655,12 +1655,12 @@ cnt_diag(struct sess *sp, const char *state)
        }
 
        if (sp->wrk != NULL) {
-               WSP(sp, SLT_Debug, "thr %p STP_%s sp %p obj %p vcl %p",
+               WSP(sp, SLT_Debug, "thr %lx STP_%s sp %p obj %p vcl %p",
                    pthread_self(), state, sp, obj, vcl);
                WSL_Flush(sp->wrk, 0);
        } else {
                VSL(SLT_Debug, sp->vsl_id,
-                   "thr %p STP_%s sp %p obj %p vcl %p",
+                   "thr %lx STP_%s sp %p obj %p vcl %p",
                    pthread_self(), state, sp, obj, vcl);
        }
 }
@@ -1776,7 +1776,7 @@ cli_debug_srandom(struct cli *cli, const char * const 
*av, void *priv)
                seed = strtoul(av[2], NULL, 0);
        srandom(seed);
        srand48(random());
-       VCLI_Out(cli, "Random(3) seeded with %lu", seed);
+       VCLI_Out(cli, "Random(3) seeded with %u", seed);
 }
 
 static struct cli_proto debug_cmds[] = {
diff --git a/bin/varnishd/cache/cache_shmlog.c 
b/bin/varnishd/cache/cache_shmlog.c
index c29f5a1..a839f5a 100644
--- a/bin/varnishd/cache/cache_shmlog.c
+++ b/bin/varnishd/cache/cache_shmlog.c
@@ -236,6 +236,10 @@ WSLR(struct worker *wrk, enum VSL_tag_e tag, int id, txt t)
 
 static void
 wsl(struct worker *wrk, enum VSL_tag_e tag, int id, const char *fmt, va_list 
ap)
+    __printflike(4, 0);
+
+static void
+wsl(struct worker *wrk, enum VSL_tag_e tag, int id, const char *fmt, va_list 
ap)
 {
        char *p;
        unsigned n, mlen;
diff --git a/bin/varnishd/cache/cache_vrt_vmod.c 
b/bin/varnishd/cache/cache_vrt_vmod.c
index 6b3b846..c67e85d 100644
--- a/bin/varnishd/cache/cache_vrt_vmod.c
+++ b/bin/varnishd/cache/cache_vrt_vmod.c
@@ -104,7 +104,7 @@ VRT_Vmod_Init(void **hdl, void *ptr, int len, const char 
*nm,
                AN(w);
                if (strcmp(x, nm)) {
                        VCLI_Out(cli, "Loading VMOD %s from %s:\n", nm, path);
-                       VCLI_Out(cli, "File contain wrong VMOD (\"%s\")\n", x);
+                       VCLI_Out(cli, "File contain wrong VMOD (\"%s\")\n", 
(char *) x);
                        VCLI_Out(cli, "Check relative pathnames ?.\n");
                        (void)dlclose(v->hdl);
                        FREE_OBJ(v);
diff --git a/bin/varnishd/mgt/mgt.h b/bin/varnishd/mgt/mgt.h
index 0e3eb9e..15666ca 100644
--- a/bin/varnishd/mgt/mgt.h
+++ b/bin/varnishd/mgt/mgt.h
@@ -31,6 +31,7 @@
 #include <stdint.h>
 
 #include "common/common.h"
+#include "printflike.h"
 
 struct cli;
 
@@ -50,7 +51,8 @@ void MGT_Child_Cli_Fail(void);
 typedef void mgt_cli_close_f(void *priv);
 void mgt_cli_setup(int fdi, int fdo, int verbose, const char *ident,
     mgt_cli_close_f *close_func, void *priv);
-int mgt_cli_askchild(unsigned *status, char **resp, const char *fmt, ...);
+int mgt_cli_askchild(unsigned *status, char **resp, const char *fmt, ...)
+    __printflike(3, 4);
 void mgt_cli_start_child(int fdi, int fdo);
 void mgt_cli_stop_child(void);
 void mgt_cli_telnet(const char *T_arg);
diff --git a/bin/varnishd/mgt/mgt_param.c b/bin/varnishd/mgt/mgt_param.c
index c488f23..8123bfc 100644
--- a/bin/varnishd/mgt/mgt_param.c
+++ b/bin/varnishd/mgt/mgt_param.c
@@ -261,7 +261,7 @@ tweak_generic_uint(struct cli *cli, volatile unsigned 
*dest, const char *arg,
                }
                *dest = u;
        } else if (*dest == UINT_MAX) {
-               VCLI_Out(cli, "unlimited", *dest);
+               VCLI_Out(cli, "unlimited");
        } else {
                VCLI_Out(cli, "%u", *dest);
        }
diff --git a/bin/varnishreplay/varnishreplay.c 
b/bin/varnishreplay/varnishreplay.c
index 8e694da..cdc9cf7 100644
--- a/bin/varnishreplay/varnishreplay.c
+++ b/bin/varnishreplay/varnishreplay.c
@@ -44,6 +44,7 @@
 #include <string.h>
 #include <unistd.h>
 
+#include "printflike.h"
 #include "vapi/vsl.h"
 #include "vapi/vsm.h"
 #include "vas.h"
@@ -171,6 +172,10 @@ static pthread_mutex_t log_mutex = 
PTHREAD_MUTEX_INITIALIZER;
 
 static void
 thread_log(int lvl, int errcode, const char *fmt, ...)
+    __printflike(3, 4);
+
+static void
+thread_log(int lvl, int errcode, const char *fmt, ...)
 {
        va_list ap;
 
diff --git a/bin/varnishtest/vtc.c b/bin/varnishtest/vtc.c
index 9581b3c..b8556ce 100644
--- a/bin/varnishtest/vtc.c
+++ b/bin/varnishtest/vtc.c
@@ -449,7 +449,7 @@ cmd_random(CMD_ARGS)
                l = random();
                if (l == random_expect[i])
                        continue;
-               vtc_log(vl, 4, "random[%d] = 0x%x (expect 0x%x)",
+               vtc_log(vl, 4, "random[%d] = 0x%x (expect 0x%lx)",
                    i, l, random_expect[i]);
                vtc_log(vl, 1, "SKIPPING test: unknown srandom(1) sequence.");
                vtc_stop = 1;
@@ -538,17 +538,17 @@ exec_file(const char *fn, const char *script, const char 
*tmpdir,
 
        /* Apply extmacro definitions */
        VTAILQ_FOREACH(m, &extmacro_list, list)
-               macro_def(vltop, NULL, m->name, m->val);
+               macro_def(vltop, NULL, m->name, "%s", m->val);
 
        /* Other macro definitions */
        cwd = getcwd(NULL, PATH_MAX);
-       macro_def(vltop, NULL, "pwd", cwd);
+       macro_def(vltop, NULL, "pwd", "%s", cwd);
        macro_def(vltop, NULL, "topbuild", "%s/%s", cwd, TOP_BUILDDIR);
        macro_def(vltop, NULL, "bad_ip", "10.255.255.255");
 
        /* Move into our tmpdir */
        AZ(chdir(tmpdir));
-       macro_def(vltop, NULL, "tmpdir", tmpdir);
+       macro_def(vltop, NULL, "tmpdir", "%s", tmpdir);
 
        /* Drop file to tell what was going on here */
        f = fopen("INFO", "w");
diff --git a/bin/varnishtest/vtc.h b/bin/varnishtest/vtc.h
index ee5308a..be20cb9 100644
--- a/bin/varnishtest/vtc.h
+++ b/bin/varnishtest/vtc.h
@@ -77,7 +77,8 @@ void cmd_server_genvcl(struct vsb *vsb);
 void vtc_loginit(char *buf, unsigned buflen);
 struct vtclog *vtc_logopen(const char *id);
 void vtc_logclose(struct vtclog *vl);
-void vtc_log(struct vtclog *vl, int lvl, const char *fmt, ...);
+void vtc_log(struct vtclog *vl, int lvl, const char *fmt, ...)
+    __printflike(3, 4);
 void vtc_dump(struct vtclog *vl, int lvl, const char *pfx,
     const char *str, int len);
 void vtc_hexdump(struct vtclog *vl, int lvl, const char *pfx,
@@ -87,7 +88,9 @@ int exec_file(const char *fn, const char *script, const char 
*tmpdir,
     char *logbuf, unsigned loglen);
 
 void macro_def(struct vtclog *vl, const char *instance, const char *name,
-    const char *fmt, ...);
+    const char *fmt, ...)
+    __printflike(4, 5);
 struct vsb *macro_expand(struct vtclog *vl, const char *text);
 
-void extmacro_def(const char *name, const char *fmt, ...);
+void extmacro_def(const char *name, const char *fmt, ...)
+    __printflike(2, 3);
diff --git a/bin/varnishtest/vtc_http.c b/bin/varnishtest/vtc_http.c
index d3753a5..00be0be 100644
--- a/bin/varnishtest/vtc_http.c
+++ b/bin/varnishtest/vtc_http.c
@@ -133,13 +133,13 @@ synth_body(const char *len, int rnd)
 static void
 http_write(const struct http *hp, int lvl, const char *pfx)
 {
-       int l;
+       ssize_t l;
 
        AZ(VSB_finish(hp->vsb));
        vtc_dump(hp->vl, lvl, pfx, VSB_data(hp->vsb), VSB_len(hp->vsb));
        l = write(hp->fd, VSB_data(hp->vsb), VSB_len(hp->vsb));
        if (l != VSB_len(hp->vsb))
-               vtc_log(hp->vl, hp->fatal, "Write failed: (%d vs %d) %s",
+               vtc_log(hp->vl, hp->fatal, "Write failed: (%zd vs %zd) %s",
                    l, VSB_len(hp->vsb), strerror(errno));
 }
 
@@ -387,7 +387,7 @@ http_rxchunk(struct http *hp)
        bprintf(hp->chunklen, "%d", i);
        if ((q == hp->rxbuf + l) ||
                (*q != '\0' && !vct_islws(*q))) {
-               vtc_log(hp->vl, hp->fatal, "chunked fail %02x @ %d",
+               vtc_log(hp->vl, hp->fatal, "chunked fail %02x @ %td",
                    *q, q - (hp->rxbuf + l));
        }
        assert(q != hp->rxbuf + l);
diff --git a/bin/varnishtest/vtc_sema.c b/bin/varnishtest/vtc_sema.c
index 48d4c68..fd4c561 100644
--- a/bin/varnishtest/vtc_sema.c
+++ b/bin/varnishtest/vtc_sema.c
@@ -63,7 +63,7 @@ sema_new(char *name, struct vtclog *vl)
        AN(r);
        r->name = name;
        if (*name != 'r')
-               vtc_log(vl, 0, "Sema name must start with 'r' (%s)", *name);
+               vtc_log(vl, 0, "Sema name must start with 'r' (%s)", name);
 
        AZ(pthread_mutex_init(&r->mtx, NULL));
        AZ(pthread_cond_init(&r->cond, NULL));
diff --git a/include/printflike.h b/include/printflike.h
new file mode 100644
index 0000000..ab76204
--- /dev/null
+++ b/include/printflike.h
@@ -0,0 +1,51 @@
+/*-
+ * Copyright (c) 2012 Fastly Inc
+ * All rights reserved.
+ *
+ * Author: Rogier 'DocWilco' Mulhuijzen <[email protected]>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#ifndef PRINTFLIKE_H_INCLUDED
+#define PRINTFLIKE_H_INCLUDED
+
+#ifndef __GNUC_PREREQ
+# if defined __GNUC__ && defined __GNUC_MINOR__
+#  define __GNUC_PREREQ(maj, min) \
+       (__GNUC__ > (maj) || (__GNUC__ == (maj) && __GNUC_MINOR__ >= (min)))
+# else
+#  define __GNUC_PREREQ(maj, min) 0
+# endif
+#endif
+
+#ifndef __printflike
+# if __GNUC_PREREQ(2, 95) || defined(__INTEL_COMPILER)
+#  define __printflike(f,a) __attribute__((format(printf, f, a)))
+# else
+#  define __printflike(f,a)
+# endif
+#endif
+
+#endif /* PRINTFLIKE_H_INCLUDED */
diff --git a/include/vcli_priv.h b/include/vcli_priv.h
index a265d2e..ad4d343 100644
--- a/include/vcli_priv.h
+++ b/include/vcli_priv.h
@@ -31,6 +31,8 @@
  * XXX: at a latter date we may want to move some to cli.h/libvarnishapi
  */
 
+#include "printflike.h"
+
 #define CLI_PRIV_H
 
 struct cli;    /* NB: struct cli is opaque at this level.  */
@@ -53,6 +55,7 @@ struct cli_proto {
 
 /* The implementation must provide these functions */
 int VCLI_Overflow(struct cli *cli);
-void VCLI_Out(struct cli *cli, const char *fmt, ...);
+void VCLI_Out(struct cli *cli, const char *fmt, ...)
+    __printflike(2, 3);
 void VCLI_Quote(struct cli *cli, const char *str);
 void VCLI_SetResult(struct cli *cli, unsigned r);
diff --git a/include/vsb.h b/include/vsb.h
index 0a8e2bf..af70def 100644
--- a/include/vsb.h
+++ b/include/vsb.h
@@ -31,6 +31,8 @@
 #ifndef VSB_H_INCLUDED
 #define VSB_H_INCLUDED
 
+#include "printflike.h"
+
 /*
  * Structure definition
  */
@@ -49,10 +51,6 @@ struct vsb {
        int              s_flags;       /* flags */
 };
 
-#ifndef __printflike
-#define __printflike(a,b)
-#endif
-
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/lib/libvarnishapi/vsm_api.h b/lib/libvarnishapi/vsm_api.h
index 79be982..5698311 100644
--- a/lib/libvarnishapi/vsm_api.h
+++ b/lib/libvarnishapi/vsm_api.h
@@ -28,6 +28,8 @@
  *
  */
 
+#include "printflike.h"
+
 struct vsc;
 struct vsb;
 
@@ -51,6 +53,7 @@ struct VSM_data {
        struct vsl              *vsl;
 };
 
-int vsm_diag(struct VSM_data *vd, const char *fmt, ...);
+int vsm_diag(struct VSM_data *vd, const char *fmt, ...)
+    __printflike(2, 3);
 void VSC_Delete(struct VSM_data *vd);
 void VSL_Delete(struct VSM_data *vd);
diff --git a/lib/libvcl/vcc_acl.c b/lib/libvcl/vcc_acl.c
index c962044..e6a1065 100644
--- a/lib/libvcl/vcc_acl.c
+++ b/lib/libvcl/vcc_acl.c
@@ -362,12 +362,12 @@ vcc_acl_emit(const struct vcc *tl, const char *acln, int 
anon)
 
        Fh(tl, 0, "\n");
        Fh(tl, 0, "\ta = p;\n");
-       Fh(tl, 0, "\tVRT_memmove(&fam, a + %d, sizeof fam);\n",
+       Fh(tl, 0, "\tVRT_memmove(&fam, a + %zd, sizeof fam);\n",
            offsetof(struct sockaddr, sa_family));
        Fh(tl, 0, "\tif (fam == %d)\n", PF_INET);
-       Fh(tl, 0, "\t\ta += %d;\n", offsetof(struct sockaddr_in, sin_addr));
+       Fh(tl, 0, "\t\ta += %zd;\n", offsetof(struct sockaddr_in, sin_addr));
        Fh(tl, 0, "\telse if (fam == %d)\n", PF_INET6);
-       Fh(tl, 0, "\t\ta += %d;\n", offsetof(struct sockaddr_in6, sin6_addr));
+       Fh(tl, 0, "\t\ta += %zd;\n", offsetof(struct sockaddr_in6, sin6_addr));
        Fh(tl, 0, "\telse {\n");
        Fh(tl, 0, "\t\tVRT_acl_log(sp, \"NO_FAM %s\");\n", acln);
        Fh(tl, 0, "\t\treturn(0);\n");
@@ -422,8 +422,7 @@ vcc_acl_emit(const struct vcc *tl, const char *acln, int 
anon)
 
                if (!anon) {
                        Fh(tl, 0, "\t%*sVRT_acl_log(sp, \"%sMATCH %s \" ",
-                           -i, "", ae->not ? "NEG_" : "", acln,
-                           PF(ae->t_addr));
+                           -i, "", ae->not ? "NEG_" : "", acln);
                        EncToken(tl->fh, ae->t_addr);
                        if (ae->t_mask != NULL)
                                Fh(tl, 0, " \"/%.*s\" ", PF(ae->t_mask));
diff --git a/lib/libvcl/vcc_backend.c b/lib/libvcl/vcc_backend.c
index 03482c4..fb160e7 100644
--- a/lib/libvcl/vcc_backend.c
+++ b/lib/libvcl/vcc_backend.c
@@ -353,7 +353,7 @@ vcc_ParseProbeSpec(struct vcc *tl)
        if (t_initial != NULL)
                Fh(tl, 0, "\t.initial = %u,\n", initial);
        else
-               Fh(tl, 0, "\t.initial = ~0U,\n", initial);
+               Fh(tl, 0, "\t.initial = ~0U,\n");
        if (status > 0)
                Fh(tl, 0, "\t.exp_status = %u,\n", status);
        Fh(tl, 0, "};\n");
diff --git a/lib/libvcl/vcc_compile.c b/lib/libvcl/vcc_compile.c
index 27447fe..66d89f5 100644
--- a/lib/libvcl/vcc_compile.c
+++ b/lib/libvcl/vcc_compile.c
@@ -286,7 +286,7 @@ LocTable(const struct vcc *tl)
                                pos++;
 
                }
-               Fc(tl, 0, "  [%3u] = { %d, %8u, %4u, %3u, 0, ",
+               Fc(tl, 0, "  [%3u] = { %d, %8tu, %4u, %3u, 0, ",
                    t->cnt, sp->idx, t->b - sp->b, lin, pos + 1);
                if (t->tok == CSRC)
                        Fc(tl, 0, " \"C{\"},\n");
diff --git a/lib/libvcl/vcc_compile.h b/lib/libvcl/vcc_compile.h
index caacd73..b64564e 100644
--- a/lib/libvcl/vcc_compile.h
+++ b/lib/libvcl/vcc_compile.h
@@ -247,11 +247,16 @@ extern struct method method_tab[];
  * I -> Initializer function
  * F -> Finish function
  */
-void Fh(const struct vcc *tl, int indent, const char *fmt, ...);
-void Fc(const struct vcc *tl, int indent, const char *fmt, ...);
-void Fb(const struct vcc *tl, int indent, const char *fmt, ...);
-void Fi(const struct vcc *tl, int indent, const char *fmt, ...);
-void Ff(const struct vcc *tl, int indent, const char *fmt, ...);
+void Fh(const struct vcc *tl, int indent, const char *fmt, ...)
+    __printflike(3, 4);
+void Fc(const struct vcc *tl, int indent, const char *fmt, ...)
+    __printflike(3, 4);
+void Fb(const struct vcc *tl, int indent, const char *fmt, ...)
+    __printflike(3, 4);
+void Fi(const struct vcc *tl, int indent, const char *fmt, ...)
+    __printflike(3, 4);
+void Ff(const struct vcc *tl, int indent, const char *fmt, ...)
+    __printflike(3, 4);
 void EncToken(struct vsb *sb, const struct token *t);
 int IsMethod(const struct token *t);
 void *TlAlloc(struct vcc *tl, unsigned len);
diff --git a/lib/libvcl/vcc_dir_dns.c b/lib/libvcl/vcc_dir_dns.c
index 174d1ab..55ed921 100644
--- a/lib/libvcl/vcc_dir_dns.c
+++ b/lib/libvcl/vcc_dir_dns.c
@@ -92,9 +92,9 @@ print_backend(struct vcc *tl,
 
        Fb(tl, 0, "\t.hosthdr = \"");
        if (b_defaults.hostheader != NULL)
-               Fb(tl,0, b_defaults.hostheader);
+               Fb(tl, 0, "%s", b_defaults.hostheader);
        else
-               Fb(tl,0, strip);
+               Fb(tl, 0, "%s", strip);
        Fb(tl, 0, "\",\n");
 
        Fb(tl, 0, "\t.saintmode_threshold = %d,\n",b_defaults.saint);
diff --git a/lib/libvcl/vcc_expr.c b/lib/libvcl/vcc_expr.c
index 3dfeeaa..82e53ef 100644
--- a/lib/libvcl/vcc_expr.c
+++ b/lib/libvcl/vcc_expr.c
@@ -253,6 +253,10 @@ vcc_new_expr(void)
 
 static struct expr *
 vcc_mk_expr(enum var_type fmt, const char *str, ...)
+    __printflike(2, 3);
+
+static struct expr *
+vcc_mk_expr(enum var_type fmt, const char *str, ...)
 {
        va_list ap;
        struct expr *e;
@@ -537,7 +541,7 @@ vcc_Eval_Func(struct vcc *tl, struct expr **e, const struct 
symbol *sym)
                        r = strchr(sym->name, '.');
                        AN(r);
                        e1 = vcc_mk_expr(VOID, "&vmod_priv_%.*s",
-                           r - sym->name, sym->name);
+                           (int) (r - sym->name), sym->name);
                        p += strlen(p) + 1;
                } else if (fmt == VOID && !strcmp(p, "PRIV_CALL")) {
                        bprintf(buf, "vmod_priv_%u", tl->nvmodpriv++);
diff --git a/lib/libvcl/vcc_parse.c b/lib/libvcl/vcc_parse.c
index 4023287..d8e74a4 100644
--- a/lib/libvcl/vcc_parse.c
+++ b/lib/libvcl/vcc_parse.c
@@ -154,7 +154,7 @@ vcc_Compound(struct vcc *tl)
                        return;
                case CSRC:
                        Fb(tl, 1, "%.*s\n",
-                           tl->t->e - (tl->t->b + 2),
+                           (int) (tl->t->e - (tl->t->b + 2)),
                            tl->t->b + 1);
                        vcc_NextToken(tl);
                        break;
@@ -274,7 +274,7 @@ vcc_Parse(struct vcc *tl)
                switch (tl->t->tok) {
                case CSRC:
                        Fc(tl, 0, "%.*s\n",
-                           tl->t->e - (tl->t->b + 4), tl->t->b + 2);
+                           (int) (tl->t->e - (tl->t->b + 4)), tl->t->b + 2);
                        vcc_NextToken(tl);
                        break;
                case EOI:
-- 
1.7.5.4


_______________________________________________
varnish-dev mailing list
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev

Reply via email to