[USETUP] Introduce some -V functions for CONSOLE_ConOutPrintf, CONSOLE_SetStatusText...
[reactos.git] / base / setup / usetup / consup.c
index 461cd7c..a919e07 100644 (file)
@@ -54,7 +54,7 @@ CONSOLE_Init(
     if (!GetConsoleScreenBufferInfo(StdOutput, &csbi))
         return FALSE;
     xScreen = csbi.dwSize.X;
-    yScreen = 50;//csbi.dwSize.Y;
+    yScreen = csbi.dwSize.Y;
     return TRUE;
 }
 
@@ -66,11 +66,39 @@ CONSOLE_ConInKey(
 
     while (TRUE)
     {
+        /* Wait for a key press */
         ReadConsoleInput(StdInput, Buffer, 1, &Read);
 
-        if ((Buffer->EventType == KEY_EVENT)
-         && (Buffer->Event.KeyEvent.bKeyDown != FALSE))
+        if ((Buffer->EventType == KEY_EVENT) &&
+            (Buffer->Event.KeyEvent.bKeyDown != FALSE))
+        {
             break;
+        }
+    }
+}
+
+BOOLEAN
+CONSOLE_ConInKeyPeek(
+    OUT PINPUT_RECORD Buffer)
+{
+    DWORD Read = 0;
+
+    while (TRUE)
+    {
+        /* Try to get a key press without blocking */
+        if (!PeekConsoleInput(StdInput, Buffer, 1, &Read))
+            return FALSE;
+        if (Read == 0)
+            return FALSE;
+
+        /* Consume it */
+        ReadConsoleInput(StdInput, Buffer, 1, &Read);
+
+        if ((Buffer->EventType == KEY_EVENT) &&
+            (Buffer->Event.KeyEvent.bKeyDown != FALSE))
+        {
+            return TRUE;
+        }
     }
 }
 
@@ -109,16 +137,14 @@ CONSOLE_ConOutPuts(
 }
 
 VOID
-CONSOLE_ConOutPrintf(
-    IN LPCSTR szFormat, ...)
+CONSOLE_ConOutPrintfV(
+    IN LPCSTR szFormat,
+    IN va_list args)
 {
     CHAR szOut[256];
     DWORD dwWritten;
-    va_list arg_ptr;
 
-    va_start(arg_ptr, szFormat);
-    vsprintf(szOut, szFormat, arg_ptr);
-    va_end(arg_ptr);
+    vsprintf(szOut, szFormat, args);
 
     WriteConsole(
         StdOutput,
@@ -128,6 +154,19 @@ CONSOLE_ConOutPrintf(
         NULL);
 }
 
+VOID
+__cdecl
+CONSOLE_ConOutPrintf(
+    IN LPCSTR szFormat,
+    ...)
+{
+    va_list arg_ptr;
+
+    va_start(arg_ptr, szFormat);
+    CONSOLE_ConOutPrintfV(szFormat, arg_ptr);
+    va_end(arg_ptr);
+}
+
 BOOL
 CONSOLE_Flush(VOID)
 {
@@ -377,17 +416,16 @@ CONSOLE_SetUnderlinedTextXY(
 }
 
 VOID
-CONSOLE_SetStatusText(
-    IN LPCSTR fmt, ...)
+CONSOLE_SetStatusTextXV(
+    IN SHORT x,
+    IN LPCSTR fmt,
+    IN va_list args)
 {
-    CHAR Buffer[128];
-    va_list ap;
     COORD coPos;
     DWORD Written;
+    CHAR Buffer[128];
 
-    va_start(ap, fmt);
-    vsprintf(Buffer, fmt, ap);
-    va_end(ap);
+    vsprintf(Buffer, fmt, args);
 
     coPos.X = 0;
     coPos.Y = yScreen - 1;
@@ -406,6 +444,8 @@ CONSOLE_SetStatusText(
         coPos,
         &Written);
 
+    coPos.X = x;
+
     WriteConsoleOutputCharacterA(
         StdOutput,
         Buffer,
@@ -415,44 +455,38 @@ CONSOLE_SetStatusText(
 }
 
 VOID
+__cdecl
 CONSOLE_SetStatusTextX(
     IN SHORT x,
-    IN LPCSTR fmt, ...)
+    IN LPCSTR fmt,
+    ...)
 {
-    CHAR Buffer[128];
     va_list ap;
-    COORD coPos;
-    DWORD Written;
 
     va_start(ap, fmt);
-    vsprintf(Buffer, fmt, ap);
+    CONSOLE_SetStatusTextXV(x, fmt, ap);
     va_end(ap);
+}
 
-    coPos.X = 0;
-    coPos.Y = yScreen - 1;
-
-    FillConsoleOutputAttribute(
-        StdOutput,
-        BACKGROUND_WHITE,
-        xScreen,
-        coPos,
-        &Written);
-
-    FillConsoleOutputCharacterA(
-        StdOutput,
-        ' ',
-        xScreen,
-        coPos,
-        &Written);
+VOID
+CONSOLE_SetStatusTextV(
+    IN LPCSTR fmt,
+    IN va_list args)
+{
+    CONSOLE_SetStatusTextXV(0, fmt, args);
+}
 
-    coPos.X = x;
+VOID
+__cdecl
+CONSOLE_SetStatusText(
+    IN LPCSTR fmt,
+    ...)
+{
+    va_list ap;
 
-    WriteConsoleOutputCharacterA(
-        StdOutput,
-        Buffer,
-        (ULONG)strlen(Buffer),
-        coPos,
-        &Written);
+    va_start(ap, fmt);
+    CONSOLE_SetStatusTextV(fmt, ap);
+    va_end(ap);
 }
 
 static
@@ -475,6 +509,7 @@ CONSOLE_ClearStatusTextX(IN SHORT x,
 
 
 VOID
+__cdecl
 CONSOLE_SetStatusTextAutoFitX(
     IN SHORT x,
     IN LPCSTR fmt, ...)
@@ -560,6 +595,7 @@ CONSOLE_SetHighlightedTextXY(
 }
 
 VOID
+__cdecl
 CONSOLE_PrintTextXY(
     IN SHORT x,
     IN SHORT y,
@@ -586,6 +622,7 @@ CONSOLE_PrintTextXY(
 }
 
 VOID
+__cdecl
 CONSOLE_PrintTextXYN(
     IN SHORT x,
     IN SHORT y,
@@ -657,11 +694,11 @@ CONSOLE_SetStyledText(
 
     if (Flags & TEXT_ALIGN_CENTER)
     {
-        coPos.X = (xScreen - Length) /2; 
+        coPos.X = (xScreen - Length) /2;
     }
     else if(Flags & TEXT_ALIGN_RIGHT)
     {
-        coPos.X = coPos.X - Length; 
+        coPos.X = coPos.X - Length;
 
         if (Flags & TEXT_PADDING_SMALL)
         {
@@ -669,7 +706,7 @@ CONSOLE_SetStyledText(
         }
         else if (Flags & TEXT_PADDING_MEDIUM)
         {
-            coPos.X -= 2; 
+            coPos.X -= 2;
         }
         else if (Flags & TEXT_PADDING_BIG)
         {
@@ -684,8 +721,8 @@ CONSOLE_SetStyledText(
         }
         else if (Flags & TEXT_PADDING_MEDIUM)
         {
-            coPos.X += 2; 
-        }       
+            coPos.X += 2;
+        }
         else if (Flags & TEXT_PADDING_BIG)
         {
             coPos.X += 3;