From b8e35b1d447cee3c38bc8177ea8609360a88872d Mon Sep 17 00:00:00 2001 From: Yann Dirson Date: Fri, 21 Feb 2014 21:54:01 +0100 Subject: [PATCH] Make ShowMessage stdarg-enabled. --- gnushogi/cursesdsp.c | 26 +++++++++++++++++--------- gnushogi/gnushogi.h | 4 ++-- gnushogi/makepattern.c | 7 +++++-- gnushogi/rawdsp.c | 11 ++++++++--- 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/gnushogi/cursesdsp.c b/gnushogi/cursesdsp.c index 2ee21ae..76650a6 100644 --- a/gnushogi/cursesdsp.c +++ b/gnushogi/cursesdsp.c @@ -158,34 +158,42 @@ Curses_ShowLine(unsigned short *bstline) static void -Curses_ShowMessage(char *s) +_vprintw(const char *format, va_list ap) { + static char buffer[60]; + vsnprintf(buffer, sizeof(buffer), format, ap); + printw("%s", buffer); +} + +static void +Curses_ShowMessage(char *format, ...) +{ + va_list ap; + va_start(ap, format); gotoXY(TAB, 6); - printw("%s", s); + _vprintw(format, ap); + va_end(ap); ClearEoln(); } - static void Curses_AlwaysShowMessage(const char *format, ...) { - static char buffer[60]; va_list ap; va_start(ap, format); - vsnprintf(buffer, sizeof(buffer), format, ap); - Curses_ShowMessage(buffer); + gotoXY(TAB, 6); + _vprintw(format, ap); va_end(ap); + ClearEoln(); } static void Curses_Printf(const char *format, ...) { - static char buffer[60]; va_list ap; va_start(ap, format); - vsnprintf(buffer, sizeof(buffer), format, ap); - printw("%s", buffer); + _vprintw(format, ap); va_end(ap); } diff --git a/gnushogi/gnushogi.h b/gnushogi/gnushogi.h index e5142f5..4e2b23e 100644 --- a/gnushogi/gnushogi.h +++ b/gnushogi/gnushogi.h @@ -1076,7 +1076,7 @@ extern void algbr(short f, short t, short flag); extern void OutputMove(void); extern void ShowCurrentMove(short pnt, short f, short t); extern void ListGame(void); -extern void ShowMessage(char *s); +extern void ShowMessage(char *s, ...); extern void ClearScreen(void); extern void DoDebug(void); extern void DoTable(short table[NO_SQUARES]); @@ -1142,7 +1142,7 @@ struct display void (*ShowDepth)(char ch); void (*ShowGameType)(void); void (*ShowLine)(unsigned short *bstline); - void (*ShowMessage)(char *s); + void (*ShowMessage)(char *s, ...); void (*AlwaysShowMessage)(const char *format, ...); void (*Printf)(const char *format, ...); void (*doRequestInputString)(const char* fmt, char* buffer); diff --git a/gnushogi/makepattern.c b/gnushogi/makepattern.c index b42a4d1..fa2ee14 100644 --- a/gnushogi/makepattern.c +++ b/gnushogi/makepattern.c @@ -43,9 +43,12 @@ small_short pattern_data[MAX_PATTERN_DATA]; /* minimal ShowMessage to avoid dependency on extraneous display code */ static void -Dummy_ShowMessage(char *s) +Dummy_ShowMessage(char *format, ...) { - printf("%s\n", s); + va_list ap; + va_start(ap, format); + vprintf(format, ap); + va_end(ap); } static struct display dummydsp = { .ShowMessage = Dummy_ShowMessage, diff --git a/gnushogi/rawdsp.c b/gnushogi/rawdsp.c index a856806..d9ebe36 100644 --- a/gnushogi/rawdsp.c +++ b/gnushogi/rawdsp.c @@ -111,10 +111,15 @@ Raw_ShowLine(unsigned short *bstline) static void -Raw_ShowMessage(char *s) +Raw_ShowMessage(char *format, ...) { - if (!XSHOGI) - printf("%s\n", s); + if (XSHOGI) + return; + va_list ap; + va_start(ap, format); + vprintf(format, ap); + printf("\n"); + va_end(ap); } -- 1.7.0.4