Make ShowMessage stdarg-enabled.
authorYann Dirson <ydirson@free.fr>
Fri, 21 Feb 2014 20:54:01 +0000 (21:54 +0100)
committerYann Dirson <ydirson@free.fr>
Sat, 22 Feb 2014 09:44:45 +0000 (10:44 +0100)
gnushogi/cursesdsp.c
gnushogi/gnushogi.h
gnushogi/makepattern.c
gnushogi/rawdsp.c

index 2ee21ae..76650a6 100644 (file)
@@ -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);
 }
 
index e5142f5..4e2b23e 100644 (file)
@@ -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);
index b42a4d1..fa2ee14 100644 (file)
@@ -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,
index a856806..d9ebe36 100644 (file)
@@ -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);
 }