#define _POSIX_C_SOURCE 200809L #include #include #include #include #include "zpm.h" void zpm_seterror(struct zpm *zpm, char *msgfmt, ...) { char msg[1024]; va_list ap; if (zpm->errmsg) { free(zpm->errmsg); zpm->errmsg = 0; } if (msgfmt != NULL) { va_start(ap, msgfmt); vsnprintf(msg, sizeof msg, msgfmt, ap); va_end(ap); msg[1023] = 0; if (zpm->errmsg) { free(zpm->errmsg); } zpm->errmsg = strdup(msg); } }