/* report (R_STATUS, fmt, ...) */ static int textStatus (va_list ap) { char *str = vstrmake (NULL, ap); fputs (str, stderr); fputc ('\n', stderr); heap_free (str); return 0; }
static int guiStatus (va_list ap) { size_t len; char *str = vstrmake (&len, ap); if (len > 128) str[129] = 0; SetDlgItemText (dialog, IDC_SB, str); heap_free (str); return 0; }
char *strmake (size_t *lenp, ...) { va_list ap; char *p; va_start (ap, lenp); p = vstrmake (lenp, ap); if (!p) report (R_FATAL, "Out of memory."); va_end (ap); return p; }
static int send_str (SOCKET s, ...) { va_list ap; char *p; int ret; size_t len; va_start (ap, s); p = vstrmake (&len, ap); va_end (ap); if (!p) return 1; ret = send_buf (s, p, len); heap_free (p); return ret; }