/* See LICENSE file for copyright and license details. */ #include #include #include #include "util.h" const char * bprintf(const char *fmt, ...) { va_list ap; size_t len; va_start(ap, fmt); len = vsnprintf(buf, sizeof(buf) - 1, fmt, ap); va_end(ap); if (len >= sizeof(buf)) buf[sizeof(buf)-1] = '\0'; return buf; } int pscanf(const char *path, const char *fmt, ...) { FILE *fp; va_list ap; int n; if (!(fp = fopen(path, "r"))) { fprintf(stderr, "fopen for %s failed", path); return -1; } va_start(ap, fmt); n = vfscanf(fp, fmt, ap); va_end(ap); fclose(fp); return (n == EOF) ? -1 : n; }