Author: pschweitzer
Date: Sun Mar 20 10:51:14 2016
New Revision: 71027

URL: http://svn.reactos.org/svn/reactos?rev=71027&view=rev
Log:
[NTDLL_APITEST]
Set correct locale in RtlGenerate8dot3Name test.
This makes the test reproducible on every target plateform.

Patch by Mark Jansen.

ROSTESTS-218 #resolve #comment Patch commited in r71027. Thanks!

Modified:
    trunk/rostests/apitests/ntdll/RtlGenerate8dot3Name.c

Modified: trunk/rostests/apitests/ntdll/RtlGenerate8dot3Name.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/RtlGenerate8dot3Name.c?rev=71027&r1=71026&r2=71027&view=diff
==============================================================================
--- trunk/rostests/apitests/ntdll/RtlGenerate8dot3Name.c        [iso-8859-1] 
(original)
+++ trunk/rostests/apitests/ntdll/RtlGenerate8dot3Name.c        [iso-8859-1] 
Sun Mar 20 10:51:14 2016
@@ -9,6 +9,7 @@
 
 #define WIN32_NO_STATUS
 #include <ndk/rtlfuncs.h>
+#include <stdio.h>
 
 NTSYSAPI
 VOID
@@ -24,10 +25,56 @@
 PWSTR ShortNames2[] = { L"MENUDM~2", L"SLECTE~2.LNK", L"5C2D~2.TXT", 
L"423C~2.TXT", L"925E~2.TXT", L"7E4C~2.TXT", L"EEAUC~2.TXT", L"ECU~2.TXT", 
L"TEST~2.X", L"T$T~2.TXT", L"LONGFI~2.TXT", L"LONGFI~2", L"LONGFI~2.TXT", 
L"LONGFI~2" };
 PWSTR ExShortNames1[] = { L"MENUDÉ~1", L"SÉLECT~1.LNK", L"ÉÈÀÙÇ~1.TXT", 
L"ÇÙÀÈÉ~1.TXT", L"ÉÈÀÙ~1.TXT", L"ÇÙÀÈ~1.TXT", 
L"ÉÈÀÙÇE~1.TXT", L"ÉEÈÉÇC~1.TXT", L"TEST~1.ÉXÈ", L"T£$T¤~1.TXT", 
L"LONGFI~1.TXT", L"LONGFI~1", L"LONGFI~1.TXT", L"LONGFI~1" };
 PWSTR ExShortNames2[] = { L"MENUDÉ~2", L"SÉLECT~2.LNK", L"ÉÈÀÙÇ~2.TXT", 
L"ÇÙÀÈÉ~2.TXT", L"ÉÈÀÙ~2.TXT", L"ÇÙÀÈ~2.TXT", 
L"ÉÈÀÙÇE~2.TXT", L"ÉEÈÉÇC~2.TXT", L"TEST~2.ÉXÈ", L"T£$T¤~2.TXT", 
L"LONGFI~2.TXT", L"LONGFI~2", L"LONGFI~2.TXT", L"LONGFI~2" };
+ 
+PVOID LoadCodePageData(ULONG Code)
+{
+    char filename[MAX_PATH], sysdir[MAX_PATH];
+    HANDLE hFile;
+    PVOID Data = NULL;
+    GetSystemDirectoryA(sysdir, MAX_PATH);
+
+    if (Code != -1)
+       sprintf(filename, "%s\\c_%lu.nls", sysdir, Code);
+    else
+        sprintf(filename, "%s\\l_intl.nls", sysdir);
+
+    hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, 
OPEN_EXISTING, 0, NULL);
+    if (hFile != INVALID_HANDLE_VALUE)
+    {
+        DWORD dwRead;
+        DWORD dwFileSize = GetFileSize(hFile, NULL);
+        Data = malloc(dwFileSize);
+        ReadFile(hFile, Data, dwFileSize, &dwRead, NULL);
+        CloseHandle(hFile);
+    }
+    return Data;
+}
+
+/* https://www.microsoft.com/resources/msdn/goglobal/default.mspx */
+void SetupLocale(ULONG AnsiCode, ULONG OemCode, ULONG Unicode)
+{
+    NLSTABLEINFO NlsTable;
+    PVOID AnsiCodePageData;
+    PVOID OemCodePageData;
+    PVOID UnicodeCaseTableData;
+
+    AnsiCodePageData = LoadCodePageData(AnsiCode);
+    OemCodePageData = LoadCodePageData(OemCode);
+    UnicodeCaseTableData = LoadCodePageData(Unicode);
+
+    RtlInitNlsTables(AnsiCodePageData, OemCodePageData, UnicodeCaseTableData, 
&NlsTable);
+    RtlResetRtlTranslations(&NlsTable);
+    /* Do NOT free the buffers here, they are directly used!
+        Yes, we leak the old buffers, but this is a test anyway... */
+
+}
 
 START_TEST(RtlGenerate8dot3Name)
 {
     USHORT i;
+
+    /* Set a french locale. */
+    SetupLocale(1252, 850, -1);
 
     for (i = 0; i < 14; ++i)
     {


Reply via email to