diff options
author | tomsmeding <tom.smeding@gmail.com> | 2017-03-02 21:50:34 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2017-03-02 21:50:34 +0100 |
commit | a74644d1d00cf1229c11cc7c1956867c4eb4cb7f (patch) | |
tree | 8b03d56ba8e4394b818c4e6419b562e0973b0310 /screenbuffer.cpp | |
parent | c2bea7ec74b8f957e56a14a55aa7aa07e7dd3118 (diff) |
Factor out vprintf from ScreenBuffer::(mv)printf
Diffstat (limited to 'screenbuffer.cpp')
-rw-r--r-- | screenbuffer.cpp | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/screenbuffer.cpp b/screenbuffer.cpp index a382e82..d224181 100644 --- a/screenbuffer.cpp +++ b/screenbuffer.cpp @@ -74,35 +74,32 @@ void ScreenBuffer::printstr(const char *buf){ } } -__attribute__((format (printf, 2, 3))) -int ScreenBuffer::printf(const char *format,...){ - va_list ap; - va_start(ap,format); +int ScreenBuffer::printf_varargs(const char *format,va_list ap){ char *buf; int ret=vasprintf(&buf,format,ap); - va_end(ap); assert(buf); - printstr(buf); - free(buf); return ret; } +__attribute__((format (printf, 2, 3))) +int ScreenBuffer::printf(const char *format,...){ + va_list ap; + va_start(ap,format); + int ret=printf_varargs(format,ap); + va_end(ap); + return ret; +} + __attribute__((format (printf, 4, 5))) int ScreenBuffer::mvprintf(int x,int y,const char *format,...){ moveto(x,y); va_list ap; va_start(ap,format); - char *buf; - int ret=vasprintf(&buf,format,ap); + int ret=printf_varargs(format,ap); va_end(ap); - assert(buf); - - printstr(buf); - - free(buf); return ret; } |