Author: ion
Date: Sun Nov  6 01:47:49 2011
New Revision: 54308

URL: http://svn.reactos.org/svn/reactos?rev=54308&view=rev
Log:
[KERNEL32]: Actually properly support ANSI vs OEM SetFileAPI instead of 
assuming Unicode->ANSI for most things. Note this just adds support, there's 
still many wine-synched APIs that are using the FileNameA2W hacks and similar, 
which force ANSI. But it's a step in the right direction.

Modified:
    trunk/reactos/dll/win32/kernel32/client/file/file.c
    trunk/reactos/dll/win32/kernel32/client/utils.c
    trunk/reactos/dll/win32/kernel32/include/kernel32.h

Modified: trunk/reactos/dll/win32/kernel32/client/file/file.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/file/file.c?rev=54308&r1=54307&r2=54308&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/client/file/file.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/client/file/file.c [iso-8859-1] Sun Nov  6 
01:47:49 2011
@@ -175,6 +175,33 @@
     return ret;
 }
 
+ULONG
+NTAPI
+BasepUnicodeStringToOemSize(IN PUNICODE_STRING String)
+{
+    return RtlUnicodeStringToOemSize(String);
+}
+
+ULONG
+NTAPI
+BasepOemStringToUnicodeSize(IN PANSI_STRING String)
+{
+    return RtlOemStringToUnicodeSize(String);
+}
+
+ULONG
+NTAPI
+BasepUnicodeStringToAnsiSize(IN PUNICODE_STRING String)
+{
+    return RtlUnicodeStringToAnsiSize(String);
+}
+
+ULONG
+NTAPI
+BasepAnsiStringToUnicodeSize(IN PANSI_STRING String)
+{
+    return RtlAnsiStringToUnicodeSize(String);
+}
 
 /*
  * @implemented
@@ -185,6 +212,9 @@
 {
     /* Set the correct Base Api */
     Basep8BitStringToUnicodeString = 
(PRTL_CONVERT_STRING)RtlOemStringToUnicodeString;
+    BasepUnicodeStringTo8BitString = RtlUnicodeStringToOemString;
+    BasepUnicodeStringTo8BitSize = BasepUnicodeStringToOemSize;
+    Basep8BitStringToUnicodeSize = BasepOemStringToUnicodeSize;
 
     /* FIXME: Old, deprecated way */
     bIsFileApiAnsi = FALSE;
@@ -200,7 +230,10 @@
 {
     /* Set the correct Base Api */
     Basep8BitStringToUnicodeString = RtlAnsiStringToUnicodeString;
-
+    BasepUnicodeStringTo8BitString = RtlUnicodeStringToAnsiString;
+    BasepUnicodeStringTo8BitSize = BasepUnicodeStringToAnsiSize;
+    Basep8BitStringToUnicodeSize = BasepAnsiStringToUnicodeSize;
+    
     /* FIXME: Old, deprecated way */
     bIsFileApiAnsi = TRUE;
 }

Modified: trunk/reactos/dll/win32/kernel32/client/utils.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/utils.c?rev=54308&r1=54307&r2=54308&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/client/utils.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/client/utils.c [iso-8859-1] Sun Nov  6 
01:47:49 2011
@@ -22,6 +22,10 @@
 /* GLOBALS 
********************************************************************/
 
 PRTL_CONVERT_STRING Basep8BitStringToUnicodeString;
+PRTL_CONVERT_STRINGA BasepUnicodeStringTo8BitString;
+PRTL_COUNT_STRING BasepUnicodeStringTo8BitSize;
+PRTL_COUNT_STRINGA Basep8BitStringToUnicodeSize;
+
 UNICODE_STRING Restricted = RTL_CONSTANT_STRING(L"Restricted");
 
 /* FUNCTIONS 
******************************************************************/

Modified: trunk/reactos/dll/win32/kernel32/include/kernel32.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/include/kernel32.h?rev=54308&r1=54307&r2=54308&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/include/kernel32.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/include/kernel32.h [iso-8859-1] Sun Nov  6 
01:47:49 2011
@@ -25,9 +25,9 @@
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); \
   DPRINT1("%s() is UNIMPLEMENTED!\n", __FUNCTION__)
 
-#define debugstr_a  
+#define debugstr_a
 #define debugstr_w
-#define wine_dbgstr_w  
+#define wine_dbgstr_w
 #define debugstr_guid
 
 #include "wine/unicode.h"
@@ -70,7 +70,7 @@
 
 /* Undocumented CreateProcess flag */
 #define STARTF_SHELLPRIVATE         0x400
-  
+
 typedef struct _CODEPAGE_ENTRY
 {
    LIST_ENTRY Entry;
@@ -169,14 +169,14 @@
 BaseFormatObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
                              IN PSECURITY_ATTRIBUTES SecurityAttributes 
OPTIONAL,
                              IN PUNICODE_STRING ObjectName);
-                             
+
 NTSTATUS
 WINAPI
 BaseCreateStack(HANDLE hProcess,
                  SIZE_T StackReserve,
                  SIZE_T StackCommit,
                  PINITIAL_TEB InitialTeb);
-                 
+
 VOID
 WINAPI
 BaseInitializeContext(IN PCONTEXT Context,
@@ -184,7 +184,7 @@
                        IN PVOID StartAddress,
                        IN PVOID StackAddress,
                        IN ULONG ContextType);
-                
+
 VOID
 WINAPI
 BaseThreadStartupThunk(VOID);
@@ -192,13 +192,13 @@
 VOID
 WINAPI
 BaseProcessStartThunk(VOID);
-        
+
 __declspec(noreturn)
 VOID
 WINAPI
 BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress,
                   LPVOID lpParameter);
-                  
+
 VOID
 WINAPI
 BaseFreeThreadStack(IN HANDLE hProcess,
@@ -214,7 +214,7 @@
 VOID
 WINAPI
 BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress);
-                  
+
 PVOID
 WINAPI
 BasepIsRealtimeAllowed(IN BOOLEAN Keep);
@@ -223,7 +223,7 @@
 WINAPI
 BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString,
                                    OUT LPWSTR* UnicodeString);
-                                   
+
 PUNICODE_STRING
 WINAPI
 Basep8BitStringToStaticUnicodeString(IN LPCSTR AnsiString);
@@ -232,14 +232,25 @@
 WINAPI
 Basep8BitStringToDynamicUnicodeString(OUT PUNICODE_STRING UnicodeString,
                                       IN LPCSTR String);
- 
-#define BasepUnicodeStringTo8BitString RtlUnicodeStringToAnsiString
 
 typedef NTSTATUS (NTAPI *PRTL_CONVERT_STRING)(IN PUNICODE_STRING UnicodeString,
                                               IN PANSI_STRING AnsiString,
                                               IN BOOLEAN AllocateMemory);
-                                                
+
+typedef ULONG (NTAPI *PRTL_COUNT_STRING)(IN PUNICODE_STRING UnicodeString);
+
+typedef NTSTATUS (NTAPI *PRTL_CONVERT_STRINGA)(IN PANSI_STRING AnsiString,
+                                              IN PCUNICODE_STRING 
UnicodeString,
+                                              IN BOOLEAN AllocateMemory);
+
+typedef ULONG (NTAPI *PRTL_COUNT_STRINGA)(IN PANSI_STRING UnicodeString);
+
+
 extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString;
+extern PRTL_CONVERT_STRINGA BasepUnicodeStringTo8BitString;
+extern PRTL_COUNT_STRING BasepUnicodeStringTo8BitSize;
+extern PRTL_COUNT_STRINGA Basep8BitStringToUnicodeSize;
+
 extern HANDLE BaseNamedObjectDirectory;
 
 HANDLE


Reply via email to