diff --git a/base/system/chkdsk/chkdsk.c b/base/system/chkdsk/chkdsk.c index 76dc9750987..6fc25f7268d 100644 --- a/base/system/chkdsk/chkdsk.c +++ b/base/system/chkdsk/chkdsk.c @@ -49,6 +49,9 @@ #include +/* Resource header */ +#include "resource.h" + #define NTOS_MODE_USER #include @@ -85,9 +88,9 @@ PCHKDSK Chkdsk; // Takes the win32 error code and prints the text version. // //---------------------------------------------------------------------- -static VOID PrintWin32Error(LPWSTR Message, DWORD ErrorCode) +static VOID PrintWin32Error(int Message, DWORD ErrorCode) { - ConPrintf(StdErr, L"%s: ", Message); + ConResPuts(StdErr, Message); ConMsgPuts(StdErr, FORMAT_MESSAGE_FROM_SYSTEM, NULL, ErrorCode, LANG_USER_DEFAULT); ConPuts(StdErr, L"\n"); @@ -123,14 +126,7 @@ CtrlCIntercept(DWORD dwCtrlType) static VOID Usage(PWCHAR ProgramName) { - ConPrintf(StdOut, - L"Usage: %s [drive:] [-F] [-V] [-R] [-C]\n\n" - L"[drive:] Specifies the drive to check.\n" - L"-F Fixes errors on the disk.\n" - L"-V Displays the full path of every file on the disk.\n" - L"-R Locates bad sectors and recovers readable information.\n" - L"-C Checks the drive only if it is dirty.\n\n", - ProgramName); + ConResPrintf(StdOut, IDS_USAGE, ProgramName); } @@ -261,7 +257,7 @@ ChkdskCallback( break; case VOLUMEINUSE: - ConPuts(StdOut, L"Volume is in use and cannot be locked\n"); + ConResPuts(StdOut, IDS_VOLUME_IN_USE); Ret = FALSE; break; @@ -299,7 +295,7 @@ ChkdskCallback( case PROGRESS: percent = (PDWORD)Argument; - ConPrintf(StdOut, L"%d percent completed.\r", *percent); + ConResPrintf(StdOut, IDS_PERCENT_COMPL, *percent); break; case OUTPUT: @@ -311,7 +307,7 @@ ChkdskCallback( status = (PBOOLEAN)Argument; if (*status == FALSE) { - ConPuts(StdOut, L"Chkdsk was unable to complete successfully.\n\n"); + ConResPuts(StdOut, IDS_CHKDSK_FAIL); Error = TRUE; } break; @@ -371,11 +367,7 @@ wmain(int argc, WCHAR *argv[]) /* Initialize the Console Standard Streams */ ConInitStdStreams(); - ConPuts(StdOut, - L"\n" - L"Chkdskx v1.0.1 by Mark Russinovich\n" - L"Systems Internals - http://www.sysinternals.com\n" - L"ReactOS adaptation 1999 by Emanuele Aliberti\n\n"); + ConResPuts(StdOut, IDS_ABOUT); #ifndef FMIFS_IMPORT_DLL // @@ -383,7 +375,7 @@ wmain(int argc, WCHAR *argv[]) // if (!LoadFMIFSEntryPoints()) { - ConPuts(StdErr, L"Could not located FMIFS entry points.\n\n"); + ConResPuts(StdErr, IDS_NO_ENTRY_POINT); return -1; } #endif @@ -394,7 +386,7 @@ wmain(int argc, WCHAR *argv[]) badArg = ParseCommandLine(argc, argv); if (badArg) { - ConPrintf(StdOut, L"Unknown argument: %s\n", argv[badArg]); + ConResPrintf(StdOut, IDS_BAD_ARGUMENT, argv[badArg]); Usage(argv[0]); return -1; } @@ -406,7 +398,7 @@ wmain(int argc, WCHAR *argv[]) { if (!GetCurrentDirectoryW(ARRAYSIZE(CurrentDirectory), CurrentDirectory)) { - PrintWin32Error(L"Could not get current directory", GetLastError()); + PrintWin32Error(IDS_NO_CURRENT_DIR, GetLastError()); return -1; } } @@ -431,7 +423,7 @@ wmain(int argc, WCHAR *argv[]) fileSystem, ARRAYSIZE(fileSystem))) { - PrintWin32Error(L"Could not query volume", GetLastError()); + PrintWin32Error(IDS_NO_QUERY_VOL, GetLastError()); return -1; } @@ -450,7 +442,7 @@ wmain(int argc, WCHAR *argv[]) 0); if (volumeHandle == INVALID_HANDLE_VALUE) { - ConPuts(StdErr, L"Chkdsk cannot run because the volume is in use by another process.\n\n"); + ConResPuts(StdErr, IDS_VOLUME_IN_USE_PROC); return -1; } CloseHandle(volumeHandle); @@ -464,7 +456,7 @@ wmain(int argc, WCHAR *argv[]) // // Just do it // - ConPrintf(StdOut, L"The type of file system is %s.\n", fileSystem); + ConResPrintf(StdOut, IDS_FILE_SYSTEM, fileSystem); Chkdsk(Drive, fileSystem, FixErrors, diff --git a/base/system/chkdsk/chkdsk.rc b/base/system/chkdsk/chkdsk.rc index 17962ee7d24..412971c5e13 100644 --- a/base/system/chkdsk/chkdsk.rc +++ b/base/system/chkdsk/chkdsk.rc @@ -1,6 +1,15 @@ +#include +#include "resource.h" #define REACTOS_STR_FILE_DESCRIPTION "ReactOS Disk Checking Utility" #define REACTOS_STR_INTERNAL_NAME "chkdsk" #define REACTOS_STR_ORIGINAL_FILENAME "chkdsk.exe" #define REACTOS_STR_ORIGINAL_COPYRIGHT "1998 Mark Russinovich" #include + +/* UTF-8 */ +#pragma code_page(65001) + +#ifdef LANGUAGE_EN_US + #include "lang/en-US.rc" +#endif diff --git a/base/system/chkdsk/lang/en-US.rc b/base/system/chkdsk/lang/en-US.rc new file mode 100644 index 00000000000..c36ed8db41b --- /dev/null +++ b/base/system/chkdsk/lang/en-US.rc @@ -0,0 +1,31 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +STRINGTABLE +BEGIN + IDS_USAGE "\n\ +Usage: %s [drive:] [-F] [-V] [-R] [-C] \n\n\ +[drive:] Specifies the drive to check.\n\ +-F Fixes errors on the disk.\n\ +-V Displays the full path of every file on the disk.\n\ +-R Locates bad sectors and recovers readable information.\n\ +-C Checks the drive only if it is dirty.\n\ +\n" + + IDS_PERCENT_COMPL "%d percent completed.\r" + IDS_FILE_SYSTEM "The type of file system is %s.\n" + IDS_ABOUT "\n\ +Chkdskx v1.0.1 by Mark Russinovich\n\ +Systems Internals - http://www.sysinternals.com\n\ +ReactOS adaptation 1999 by Emanuele Aliberti\n\n" +END + +STRINGTABLE +BEGIN + IDS_VOLUME_IN_USE "Volume is in use and cannot be locked\n" + IDS_CHKDSK_FAIL "Chkdsk was unable to complete successfully.\n\n" + IDS_NO_ENTRY_POINT "Could not located FMIFS entry points.\n\n" + IDS_BAD_ARGUMENT "Unknown argument: %s\n" + IDS_NO_CURRENT_DIR "Could not get current directory. Error code: " + IDS_NO_QUERY_VOL "Could not query volume. Error code: " + IDS_VOLUME_IN_USE_PROC "Chkdsk cannot run because the volume is in use by another process.\n\n" +END diff --git a/base/system/chkdsk/resource.h b/base/system/chkdsk/resource.h new file mode 100644 index 00000000000..a5597ddbeb1 --- /dev/null +++ b/base/system/chkdsk/resource.h @@ -0,0 +1,18 @@ +/* General IDs */ + +#define IDS_USAGE 101 +#define IDS_PERCENT_COMPL 102 +#define IDS_ABOUT 103 +#define IDS_FILE_SYSTEM 104 + +/* Failure IDs */ + +#define IDS_VOLUME_IN_USE 200 +#define IDS_CHKDSK_FAIL 201 +#define IDS_NO_ENTRY_POINT 202 +#define IDS_BAD_ARGUMENT 203 +#define IDS_NO_CURRENT_DIR 204 +#define IDS_NO_QUERY_VOL 205 +#define IDS_VOLUME_IN_USE_PROC 206 + +/* EOF */