[PATCH] Add __printflike to all printflike functions and fix all that uncovers

Poul-Henning Kamp phk at phk.freebsd.dk
Sat Jan 14 19:48:18 CET 2012

In message <1326563395-8543-1-git-send-email-github at bsdchicks.com>, Rogier 'Doc
Wilco' Mulhuijzen writes:

>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);

Neither %p nor %lx are correct, in fact there is by standard no correct
way to print a pthread_t (thanks POSIX, next time think, OK ?)

We probably need to tag all our threads some way to solve this, or simply
remove printing the pthread_self().  Since we have the sp->vsl_id I think
that's the best compromise.

>@@ -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);

This is the wrong fix, both srandom and srand48 takes a (unsigned) long arg.

> 		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);

Please split elongated lines lines properly at 80char boundary.

>+#include "printflike.h"

I've been thinking of introducing a "vdefs.h" for stuff like this,
to contain compiler and C-dialect dependencies to a single file,
we should use this chance to found that file.

The #include hierarchy would be something like:


	included from:

So as to minimize the number of #include lines, given that we want
total exposure for this file.

We may want to move AZ(), AN() etc. over there subsequently.

Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.

More information about the varnish-dev mailing list