diff options
Diffstat (limited to 'lib/printfrr.h')
| -rw-r--r-- | lib/printfrr.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/printfrr.h b/lib/printfrr.h index f9584bcacc..7d9e288655 100644 --- a/lib/printfrr.h +++ b/lib/printfrr.h @@ -30,8 +30,7 @@ struct fbuf { size_t len; }; -#define at(a, b) \ - __attribute__((format(printf, a, b))) +#define at(a, b) PRINTFRR(a, b) #define atn(a, b) \ at(a, b) __attribute__((nonnull(1) _RET_NONNULL)) #define atm(a, b) \ @@ -73,8 +72,19 @@ char *vasnprintfrr(struct memtype *mt, char *out, size_t sz, char *asnprintfrr(struct memtype *mt, char *out, size_t sz, const char *fmt, ...) atn(4, 5); +#define printfrr(fmt, ...) \ + do { \ + char buf[256], *out; \ + out = asnprintfrr(MTYPE_TMP, buf, sizeof(buf), fmt, \ + ##__VA_ARGS__); \ + fputs(out, stdout); \ + if (out != buf) \ + XFREE(MTYPE_TMP, out); \ + } while (0) + #undef at #undef atm +#undef atn /* extension specs must start with a capital letter (this is a restriction * for both performance's and human understanding's sake.) |
