diff options
author | Laslo Hunhold <dev@frign.de> | 2018-05-19 19:33:04 +0200 |
---|---|---|
committer | Aaron Marcher <me@drkhsh.at> | 2018-05-19 19:44:02 +0200 |
commit | 422cadfd5ffd78ae1b8fdf15734e03bd0333b26e (patch) | |
tree | cf243529272e96e3d65b44afecd08cbb9f4e3005 /util.c | |
parent | f31b113e7e85bf7057cb88a70d88c5ce9325e208 (diff) |
Implement esnprintf() and make formatted calls more efficient
Within the components, snprintf() was unchecked and had inefficient
calls in some places.
We implement esnprintf() that does all the dirty laundry for us
and use it exclusively now.
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -48,6 +48,27 @@ die(const char *fmt, ...) exit(1); } +int +esnprintf(char *str, size_t size, const char *fmt, ...) +{ + va_list ap; + int ret; + + va_start(ap, fmt); + ret = vsnprintf(str, size, fmt, ap); + va_end(ap); + + if (ret < 0) { + warn("snprintf:"); + return -1; + } else if ((size_t)ret >= size) { + warn("snprintf: Output truncated"); + return -1; + } + + return ret; +} + const char * bprintf(const char *fmt, ...) { |