56#define FLAG_HELP (1 << 0)
57#define FLAG_E (1 << 1)
58#define FLAG_C (1 << 2)
59#define FLAG_P (1 << 3)
60#define FLAG_S (1 << 4)
61#define FLAG_Tn (1 << 5)
62#define FLAG_PLUSn (1 << 6)
65#define PROMPT_PERCENT (1 << 0)
66#define PROMPT_LINE_AT (1 << 1)
67#define PROMPT_OPTIONS (1 << 2)
68#define PROMPT_LINES (1 << 3)
81 for (ich = 0; ich <
cch; ++ich)
87 if (
line[ich] ==
L'\f')
136 if (Pager->PageColumns > 0)
165 COORD orgCursorPosition;
171 WCHAR chSubCommand = 0;
175 static WCHAR StrPercent[80] =
L"";
176 static WCHAR StrLineAt[80] =
L"";
177 static WCHAR StrOptions[80] =
L"";
178 static WCHAR StrLines[80] =
L"";
250 dwMode &= ~ENABLE_PROCESSED_INPUT;
296 if (
L'0' <= ch && ch <=
L'9')
374 switch (chSubCommand)
519 if ((
BufferSize >= 2) && (pBytes[0] == 0xFF) && (pBytes[1] == 0xFE))
524 else if ((
BufferSize >= 2) && (pBytes[0] == 0xFE) && (pBytes[1] == 0xFF))
529 else if ((
BufferSize >= 3) && (pBytes[0] == 0xEF) && (pBytes[1] == 0xBB) && (pBytes[2] == 0xBF))
548#define IS_TEXT_UNKNOWN_FLAGS_MASK ((7 << 13) | (1 << 11))
673 if (pdwReadBytes) *pdwReadBytes = 0;
674 if (pdwReadChars) *pdwReadChars = 0;
677 if (!
Success || dwReadBytes == 0)
680 if (pdwReadBytes) *pdwReadBytes = dwReadBytes;
703 *pnBufferLength =
len;
715 else if (
len > *pnBufferLength)
719 *pnBufferLength =
len;
745 PWCHAR pWChars = pCacheBuffer;
748 dwReadBytes /=
sizeof(
WCHAR);
752 for (
i = 0;
i < dwReadBytes;
i++)
762 if (pdwReadChars) *pdwReadChars = dwReadBytes;
781 L"Software\\Microsoft\\Command Processor",
800 else if (dwType ==
REG_SZ)
822 return (*endptr == 0);
884 else if (
arg[0] ==
L'+')
949 BOOL bRet, bContinue;
955#define FileCacheBufferSize 4096
958 DWORD StringBufferLength = 0;
959 DWORD dwReadBytes = 0, dwReadChars = 0;
995 if (!FileCacheBuffer)
1054 &dwReadBytes, &dwReadChars);
1055 if (!bRet || dwReadBytes == 0 || dwReadChars == 0)
1071 while (bRet && dwReadBytes > 0);
1147 &dwReadBytes, &dwReadChars);
1148 if (!bRet || dwReadBytes == 0 || dwReadChars == 0)
1164 FileCacheBuffer, dwReadChars);
1177 while (bRet && dwReadBytes > 0);
void ConPuts(FILE *fp, LPCWSTR psz)
void ConResPrintf(FILE *fp, UINT nID,...)
void ConResPuts(FILE *fp, UINT nID)
#define IDS_CONTINUE_OPTIONS
#define IDS_CONTINUE_LINES
#define IDS_CONTINUE_LINE_AT
#define IDS_CONTINUE_PROMPT
#define IDS_CONTINUE_PERCENT
BOOL WINAPI FlushConsoleInputBuffer(IN HANDLE hConsoleInput)
BOOL WINAPI SetConsoleCursorPosition(IN HANDLE hConsoleOutput, IN COORD dwCursorPosition)
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
#define RegCloseKey(hKey)
BOOL WINAPI IsTextUnicode(IN CONST VOID *lpv, IN INT iSize, IN OUT LPINT lpiResult OPTIONAL)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define GetEnvironmentVariableW(x, y, z)
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define MultiByteToWideChar
BOOL WINAPI GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, BOOL Add)
UINT WINAPI DECLSPEC_HOTPATCH GetConsoleCP(VOID)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
BOOL WINAPI GetStringTypeW(DWORD type, LPCWSTR src, INT count, LPWORD chartype)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_Check_return_ _CRTIMP long __cdecl _wtol(_In_z_ const wchar_t *_Str)
static DWORD DWORD void LPSTR DWORD cch
static BOOL __stdcall MorePagerLine(IN OUT PCON_PAGER Pager, IN PCWCH line, IN DWORD cch)
static VOID LoadRegistrySettings(HKEY hKeyRoot)
static BOOL ParseMoreVariable(BOOL *pbHasFiles)
static BOOL FileGetString(IN HANDLE hFile, IN ENCODING Encoding, IN OUT PVOID pCacheBuffer, IN DWORD CacheBufferLength, IN OUT PWCHAR *pBuffer, IN OUT PDWORD pnBufferLength, OUT PDWORD pdwReadBytes OPTIONAL, OUT PDWORD pdwReadChars OPTIONAL)
#define IS_TEXT_UNKNOWN_FLAGS_MASK
static BOOL s_bPrevLineIsBlank
static BOOL __stdcall PagePrompt(PCON_PAGER Pager, DWORD Done, DWORD Total)
#define FileCacheBufferSize
static BOOL IsBlankLine(IN PCWCH line, IN DWORD cch)
static DWORD s_nNextLineNo
static BOOL IsFlag(PCWSTR param)
static BOOL IsDataUnicode(IN PVOID Buffer, IN DWORD BufferSize, OUT ENCODING *Encoding OPTIONAL, OUT PDWORD SkipBytes OPTIONAL)
static BOOL ParseArgument(PCWSTR arg, BOOL *pbHasFiles)
static BOOL s_bDoNextFile
INT __cdecl ConResMsgPrintf(IN PCON_STREAM Stream, IN DWORD dwFlags, IN UINT uID,...)
VOID ConClearLine(IN PCON_STREAM Stream)
INT ConStreamWrite(IN PCON_STREAM Stream, IN PCTCH szStr, IN DWORD len)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_CRT_RESTORE_GCC_WARNINGS _Check_return_ _CRTIMP wchar_t *__cdecl wcstok(_Inout_opt_z_ wchar_t *_Str, _In_z_ const wchar_t *_Delim)
BOOL ConGetScreenInfo(IN PCON_SCREEN Screen, OUT PCONSOLE_SCREEN_BUFFER_INFO pcsbi)
VOID ConClearScreen(IN PCON_SCREEN Screen)
BOOL ConStreamSetOSHandle(IN PCON_STREAM Stream, IN HANDLE Handle)
BOOL ConStreamInit(OUT PCON_STREAM Stream, IN PVOID Handle, IN CON_STREAM_MODE Mode, IN UINT CacheCodePage OPTIONAL)
HANDLE ConStreamGetOSHandle(IN PCON_STREAM Stream)
INT WINAPI K32LoadStringW(IN HINSTANCE hInstance OPTIONAL, IN UINT uID, OUT LPWSTR lpBuffer, IN INT nBufferMax)
PULONG MinorVersion OPTIONAL
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
union _KEY_EVENT_RECORD::@3297 uChar
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
#define STD_OUTPUT_HANDLE
#define INVALID_FILE_SIZE
#define LEFT_CTRL_PRESSED
#define RIGHT_CTRL_PRESSED
#define ENABLE_PROCESSED_INPUT
#define IS_TEXT_UNICODE_ILLEGAL_CHARS
#define IS_TEXT_UNICODE_UNICODE_MASK
#define IS_TEXT_UNICODE_NOT_ASCII_MASK
#define IS_TEXT_UNICODE_NULL_BYTES
#define IS_TEXT_UNICODE_REVERSE_MASK
#define IS_TEXT_UNICODE_REVERSE_SIGNATURE
#define IS_TEXT_UNICODE_NOT_UNICODE_MASK
#define IS_TEXT_UNICODE_SIGNATURE
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS SkipBytes