void _msg(const char* type, const char* file, const char* func, int line, const char* fmt, ...){ _xprintf("%-10s %-10s %-3d %-8s ",file,func,line,type); { va_list arp; va_start(arp, fmt); xvprintf(fmt, arp); va_end(arp); } _xprintf("\n"); }
void xprintf(const char *s, ...) { va_list p; va_start(p, s); _xprintf(stdout, __FILE__, __LINE__, __FUNCTION__, s, p); va_end(p); }
void xerror(const char *s, ...) { va_list p; va_start(p, s); _xprintf(stderr, __FILE__, __LINE__, __FUNCTION__, s, p); va_end(p); fprintf(stderr, "Tracing: %s\n", errno ? strerror(errno) : NULL); }
int sprintf(char* buffer, const char* fmt, ...) { va_list ap; int ret; void *vbuffer = (void*)buffer; /* start reading arguments */ va_start(ap, fmt); ret = _xprintf(_pc, (void*)&vbuffer, fmt, &ap); buffer[ret] = '\0'; /* stop reading parameters */ va_end(ap); return ret; }
int vsprintf(char* buffer, const char* fmt, va_list arg) { void *vbuffer = (void*)buffer; return _xprintf(_pc, (void*)&vbuffer, fmt, &arg); }
len = f->buf_end - f->buf; } memcpy(f->buf, str, len); f->buf += len; return len; } int vsprintf(char * restrict buf, const char * restrict fmt, va_list args) { struct sprintf_putter putter = { .putstr = (putstr_t*) sprintf_putstr, .buf = buf, .buf_end = buf + INT32_MAX, }; int ret = _xprintf(&putter.putstr, fmt, args); *putter.buf = 0; return ret; } int sprintf(char * restrict buf, const char * restrict fmt, ...) { int r; va_list args; va_start(args, fmt); r = vsprintf(buf, fmt, args); va_end(args); return r; }