PCS_API char *pcs_utils_sprintf(const char *fmt, ...) { char *res; va_list args; va_start(args, fmt); res = pcs_utils_vsprintf(fmt, args); va_end(args); return res; }
void pcs_set_errmsg(Pcs handle, const char *fmt, ...) { struct pcs *pcs = (struct pcs *)handle; va_list args; if (pcs->errmsg) { pcs_free(pcs->errmsg); pcs->errmsg = NULL; } va_start(args, fmt); pcs->errmsg = pcs_utils_vsprintf(fmt, args); va_end(args); }
void pcs_cat_errmsg(Pcs handle, const char *fmt, ...) { struct pcs *pcs = (struct pcs *)handle; char *p, *errmsg; size_t sz = 0; va_list args; va_start(args, fmt); errmsg = pcs_utils_vsprintf(fmt, args); va_end(args); if (pcs->errmsg) { sz = strlen(pcs->errmsg) + strlen(errmsg); p = (char *)pcs_malloc(sz + 1); strcpy(p, pcs->errmsg); pcs_free(pcs->errmsg); pcs->errmsg = p; strcat(p, errmsg); } else { pcs->errmsg = errmsg; } }