static inline int nsock_vprintf(int sd, const char *fmt, va_list ap, int plus) { char buf[4096]; int len; /* -2 to accommodate vsnprintf()'s which don't include nul on overflow */ len = vsnprintf(buf, sizeof(buf) - 2, fmt, ap); if (len < 0) { return len; } buf[len] = 0; return len; } int nsock_printf_nul(int sd, const char *fmt, ...) { va_list ap; int ret; va_start(ap, fmt); ret = nsock_vprintf(sd, fmt, ap, 1); va_end(ap); return ret; } int nsock_printf(int sd, const char *fmt, ...) { va_list ap; int ret; va_start(ap, fmt); ret = nsock_vprintf(sd, fmt, ap, 0); va_end(ap); return ret; }