* FileGetString() seems to be working now.
*/
-#define WIN32_LEAN_AND_MEAN
-
#include "config.h"
#include <windows.h>
#include <tchar.h>
#include <string.h>
#include <stdlib.h>
-
-#include <conio.h>
+#include <ctype.h>
#include "cmd.h"
*/
TCHAR cgetchar (VOID)
{
- TCHAR ch;
-#if 0
- DWORD dwRead;
- DWORD dwOldMode;
- HANDLE hIn;
-
- hIn = GetStdHandle (STD_INPUT_HANDLE);
- ConInSwallowInput (hIn);
-
- GetConsoleMode (hIn, &dwOldMode);
- SetConsoleMode (hIn, 0);
-
- ReadConsole (hIn, &ch, 1, &dwRead, NULL);
-
- DebugPrintf ("[cgetchar (0x%x) \'%c\']\n", ch, ch);
-
- SetConsoleMode (hIn, dwOldMode);
-#endif
-
- if ((ch = getch()) == 0)
- ch = getch() << 8;
+ HANDLE hInput = GetStdHandle (STD_INPUT_HANDLE);
+ INPUT_RECORD irBuffer;
+ DWORD dwRead;
- if (ch == 3)
- bCtrlBreak = TRUE;
+ do
+ {
+ WaitForSingleObject (hInput, INFINITE);
+ ReadConsoleInput (hInput, &irBuffer, 1, &dwRead);
+ if ((irBuffer.EventType == KEY_EVENT) &&
+ (irBuffer.Event.KeyEvent.bKeyDown == TRUE))
+ {
+ if ((irBuffer.Event.KeyEvent.dwControlKeyState &
+ (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED)) &
+ (irBuffer.Event.KeyEvent.wVirtualKeyCode == 'C'))
+ bCtrlBreak = TRUE;
- return ch;
+ break;
+ }
+ }
+ while (TRUE);
+
+#ifdef __REACTOS__
+ return irBuffer.Event.KeyEvent.AsciiChar;
+#else
+#ifndef _UNICODE
+ return irBuffer.Event.KeyEvent.uChar.AsciiChar;
+#else
+ return irBuffer.Event.KeyEvent.uChar.UnicodeChar;
+#endif /* _UNICODE */
+#endif /* __REACTOS__ */
}
}
+BOOL IsValidDirectory (LPCTSTR pszPath)
+{
+ return (GetFileAttributes (pszPath) & FILE_ATTRIBUTE_DIRECTORY);
+}
+
BOOL FileGetString (HANDLE hFile, LPTSTR lpBuffer, INT nBufferLength)
{