diff --git a/include/tradstdc.h b/include/tradstdc.h index d77348f85..3681861aa 100644 --- a/include/tradstdc.h +++ b/include/tradstdc.h @@ -401,6 +401,9 @@ typedef genericptr genericptr_t; /* (void *) or (char *) */ #if (__GNUC__ >= 2) && !defined(USE_OLDARGS) #define PRINTF_F(f, v) __attribute__((format(printf, f, v))) #endif +#if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) +#define PRINTF_F_PTR(f, v) PRINTF_F(f, v) +#endif #if __GNUC__ >= 3 #define UNUSED __attribute__((unused)) #define NORETURN __attribute__((noreturn)) @@ -419,6 +422,9 @@ typedef genericptr genericptr_t; /* (void *) or (char *) */ #ifndef PRINTF_F #define PRINTF_F(f, v) #endif +#ifndef PRINTF_F_PTR +#define PRINTF_F_PTR(f, v) +#endif #ifndef UNUSED #define UNUSED #endif diff --git a/src/mkobj.c b/src/mkobj.c index 53f5cf64f..8f3893c89 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -761,7 +761,7 @@ static const char dknowns[] = { WAND_CLASS, RING_CLASS, POTION_CLASS, void clear_dknown(struct obj *obj) { - obj->dknown = strchr(dknowns, obj->oclass) ? 0 : 1; + obj->dknown = index(dknowns, obj->oclass) ? 0 : 1; if ((obj->otyp >= ELVEN_SHIELD && obj->otyp <= ORCISH_SHIELD) || obj->otyp == SHIELD_OF_REFLECTION || objects[obj->otyp].oc_merge) @@ -2107,7 +2107,7 @@ place_object(struct obj *otmp, coordxy x, coordxy y) register struct obj *otmp2; if (!isok(x, y)) { /* validate location */ - void (*func)(const char *, ...) PRINTF_F(1, 2); + void (*func)(const char *, ...) PRINTF_F_PTR(1, 2); func = (x < 0 || y < 0 || x > COLNO - 1 || y > ROWNO - 1) ? panic : impossible; diff --git a/src/vault.c b/src/vault.c index f86a4b5e2..18db9adc0 100644 --- a/src/vault.c +++ b/src/vault.c @@ -413,7 +413,7 @@ invault(void) otherwise the hero wouldn't be able to push one to follow the guard out of the vault because that guard would be in its way */ if ((otmp = sobj_at(BOULDER, guard->mx, guard->my)) != 0) { - void (*func)(const char *, ...) PRINTF_F(1, 2); + void (*func)(const char *, ...) PRINTF_F_PTR(1, 2); const char *bname = simpleonames(otmp); int bcnt = 0;