Implemented basic ANSI/OEM <--> Unicode translation tables.

svn path=/trunk/; revision=2340
This commit is contained in:
Eric Kohl 2001-11-02 09:10:49 +00:00
parent 286d73f7e6
commit b639c5def9
4 changed files with 542 additions and 533 deletions

View file

@ -53,6 +53,8 @@ VOID CmShutdownRegistry(VOID);
VOID CmImportHive(PCHAR ChunkBase, ULONG ChunkSize);
VOID KdInitSystem(ULONG Reserved, PLOADER_PARAMETER_BLOCK LoaderBlock);
VOID RtlpInitNlsTables(VOID);
NTSTATUS RtlpInitNlsSections(ULONG Mod1Start,
ULONG Mod1End,
ULONG Mod2Start,

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* $Id: main.c,v 1.107 2001/09/24 00:51:16 chorns Exp $
/* $Id: main.c,v 1.108 2001/11/02 09:09:50 ekohl Exp $
*
* PROJECT: ReactOS kernel
* FILE: ntoskrnl/ke/main.c
@ -944,6 +944,9 @@ ExpInitializeExecutive(VOID)
(PADDRESS_RANGE)&KeMemoryMap,
KeMemoryMapRangeCount);
/* create default nls tables */
RtlpInitNlsTables();
/*
* Initialize the kernel debugger
*/

View file

@ -1,4 +1,4 @@
/* $Id: nls.c,v 1.5 2001/06/29 20:42:47 ekohl Exp $
/* $Id: nls.c,v 1.6 2001/11/02 09:10:49 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
@ -38,18 +38,111 @@ USHORT NlsOemLeadByteInfo = 0;
USHORT NlsAnsiCodePage = 0;
USHORT NlsOemCodePage = 0; /* not exported */
PWCHAR AnsiToUnicodeTable = NULL; /* size: 256*sizeof(WCHAR) */
PWCHAR OemToUnicodeTable = NULL; /* size: 256*sizeof(WCHAR) */
#if 0
WCHAR AnsiToUnicodeTable[256];
WCHAR OemToUnicodeTable[256];
PCHAR UnicodeToAnsiTable = NULL; /* size: 65536*sizeof(CHAR) */
PCHAR UnicodeToOemTable =NULL; /* size: 65536*sizeof(CHAR) */
CHAR UnicodeToAnsiTable [65536];
CHAR UnicodeToOemTable [65536];
#endif
PWCHAR UnicodeUpcaseTable = NULL; /* size: 65536*sizeof(WCHAR) */
PWCHAR UnicodeLowercaseTable = NULL; /* size: 65536*sizeof(WCHAR) */
/* FUNCTIONS *****************************************************************/
VOID
RtlpInitNlsTables(VOID)
{
INT i;
PCHAR pc;
PWCHAR pwc;
/* allocate and initialize ansi->unicode table */
AnsiToUnicodeTable = ExAllocatePool(NonPagedPool, 256 * sizeof(WCHAR));
if (AnsiToUnicodeTable == NULL)
{
DbgPrint("Allocation of 'AnsiToUnicodeTable' failed\n");
KeBugCheck(0);
}
pwc = AnsiToUnicodeTable;
for (i = 0; i < 256; i++, pwc++)
*pwc = (WCHAR)i;
/* allocate and initialize oem->unicode table */
OemToUnicodeTable = ExAllocatePool(NonPagedPool, 256 * sizeof(WCHAR));
if (OemToUnicodeTable == NULL)
{
DbgPrint("Allocation of 'OemToUnicodeTable' failed\n");
KeBugCheck(0);
}
pwc = OemToUnicodeTable;
for (i = 0; i < 256; i++, pwc++)
*pwc = (WCHAR)i;
/* allocate and initialize unicode->ansi table */
UnicodeToAnsiTable = ExAllocatePool(NonPagedPool, 65536 * sizeof(CHAR));
if (UnicodeToAnsiTable == NULL)
{
DbgPrint("Allocation of 'UnicodeToAnsiTable' failed\n");
KeBugCheck(0);
}
pc = UnicodeToAnsiTable;
for (i = 0; i < 256; i++, pc++)
*pc = (CHAR)i;
for (; i < 65536; i++, pc++)
*pc = 0;
/* allocate and initialize unicode->oem table */
UnicodeToOemTable = ExAllocatePool(NonPagedPool, 65536 * sizeof(CHAR));
if (UnicodeToOemTable == NULL)
{
DbgPrint("Allocation of 'UnicodeToOemTable' failed\n");
KeBugCheck(0);
}
pc = UnicodeToOemTable;
for (i = 0; i < 256; i++, pc++)
*pc = (CHAR)i;
for (; i < 65536; i++, pc++)
*pc = 0;
/* allocate and initialize unicode upcase table */
UnicodeUpcaseTable = ExAllocatePool(NonPagedPool, 65536 * sizeof(WCHAR));
if (UnicodeUpcaseTable == NULL)
{
DbgPrint("Allocation of 'UnicodeUpcaseTable' failed\n");
KeBugCheck(0);
}
pwc = UnicodeUpcaseTable;
for (i = 0; i < 65536; i++, pwc++)
*pwc = (WCHAR)i;
for (i = 'a'; i < ('z'+ 1); i++)
UnicodeUpcaseTable[i] = (WCHAR)i + (L'A' - L'a');
/* allocate and initialize unicode lowercase table */
UnicodeLowercaseTable = ExAllocatePool(NonPagedPool, 65536 * sizeof(WCHAR));
if (UnicodeLowercaseTable == NULL)
{
DbgPrint("Allocation of 'UnicodeLowercaseTable' failed\n");
KeBugCheck(0);
}
pwc = UnicodeLowercaseTable;
for (i = 0; i < 65536; i++, pwc++)
*pwc = (WCHAR)i;
for (i = 'A'; i < ('Z'+ 1); i++)
UnicodeLowercaseTable[i] = (WCHAR)i - (L'A' - L'a');
/* FIXME: initialize codepage info */
}
NTSTATUS
RtlpInitNlsSections(ULONG Mod1Start,
ULONG Mod1End,
@ -145,7 +238,7 @@ RtlCustomCPToUnicodeN(PRTL_NLS_DATA NlsData,
for (i = 0; i < Size; i++)
{
*UnicodeString = NlsData->MultiByteToUnicode[(int)*CustomString];
*UnicodeString = NlsData->MultiByteToUnicode[(unsigned int)*CustomString];
UnicodeString++;
CustomString++;
}
@ -154,10 +247,9 @@ RtlCustomCPToUnicodeN(PRTL_NLS_DATA NlsData,
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
@ -193,11 +285,7 @@ RtlMultiByteToUnicodeN(PWCHAR UnicodeString,
for (i = 0; i < Size; i++)
{
*UnicodeString = *MbString;
#if 0
*UnicodeString = AnsiToUnicodeTable[*MbString];
#endif
*UnicodeString = AnsiToUnicodeTable[(unsigned int)*MbString];
UnicodeString++;
MbString++;
}
@ -206,10 +294,9 @@ RtlMultiByteToUnicodeN(PWCHAR UnicodeString,
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
@ -227,17 +314,14 @@ RtlMultiByteToUnicodeSize(PULONG UnicodeSize,
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
NTSTATUS
STDCALL
RtlOemToUnicodeN (
PWCHAR UnicodeString,
NTSTATUS STDCALL
RtlOemToUnicodeN(PWCHAR UnicodeString,
ULONG UnicodeSize,
PULONG ResultSize,
PCHAR OemString,
@ -259,11 +343,7 @@ RtlOemToUnicodeN (
for (i = 0; i < Size; i++)
{
*UnicodeString = *OemString;
#if 0
*UnicodeString = OemToUnicodeTable[*OemString];
#endif
*UnicodeString = OemToUnicodeTable[(unsigned int)*OemString];
UnicodeString++;
OemString++;
}
@ -272,23 +352,19 @@ RtlOemToUnicodeN (
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
NTSTATUS
STDCALL
RtlUnicodeToCustomCPN (
PRTL_NLS_DATA NlsData,
NTSTATUS STDCALL
RtlUnicodeToCustomCPN(PRTL_NLS_DATA NlsData,
PCHAR CustomString,
ULONG CustomSize,
PULONG ResultSize,
PWCHAR UnicodeString,
ULONG UnicodeSize
)
ULONG UnicodeSize)
{
ULONG Size = 0;
ULONG i;
@ -306,7 +382,7 @@ RtlUnicodeToCustomCPN (
for (i = 0; i < Size; i++)
{
*CustomString = NlsData->UnicodeToMultiByte[*UnicodeString];
*CustomString = NlsData->UnicodeToMultiByte[(unsigned int)*UnicodeString];
CustomString++;
UnicodeString++;
}
@ -315,17 +391,15 @@ RtlUnicodeToCustomCPN (
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
NTSTATUS
STDCALL
RtlUnicodeToMultiByteN (
PCHAR MbString,
RtlUnicodeToMultiByteN(PCHAR MbString,
ULONG MbSize,
PULONG ResultSize,
PWCHAR UnicodeString,
@ -347,11 +421,7 @@ RtlUnicodeToMultiByteN (
for (i = 0; i < Size; i++)
{
*MbString = *UnicodeString;
#if 0
*MbString = UnicodeToAnsiTable[*UnicodeString];
#endif
*MbString = UnicodeToAnsiTable[(unsigned int)*UnicodeString];
MbString++;
UnicodeString++;
}
@ -360,10 +430,9 @@ RtlUnicodeToMultiByteN (
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
@ -381,16 +450,14 @@ RtlUnicodeToMultiByteSize(PULONG MbSize,
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
NTSTATUS STDCALL
RtlUnicodeToOemN (
PCHAR OemString,
RtlUnicodeToOemN(PCHAR OemString,
ULONG OemSize,
PULONG ResultSize,
PWCHAR UnicodeString,
@ -412,11 +479,7 @@ RtlUnicodeToOemN (
for (i = 0; i < Size; i++)
{
*OemString = *UnicodeString;
#if 0
*OemString = UnicodeToOemTable[*UnicodeString];
#endif
*OemString = UnicodeToOemTable[(unsigned int)*UnicodeString];
OemString++;
UnicodeString++;
}
@ -425,25 +488,23 @@ RtlUnicodeToOemN (
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
NTSTATUS STDCALL
RtlUpcaseUnicodeToCustomCPN (
PRTL_NLS_DATA NlsData,
RtlUpcaseUnicodeToCustomCPN(PRTL_NLS_DATA NlsData,
PCHAR CustomString,
ULONG CustomSize,
PULONG ResultSize,
PWCHAR UnicodeString,
ULONG UnicodeSize
)
ULONG UnicodeSize)
{
ULONG Size = 0;
ULONG i;
WCHAR wc;
if (NlsData->DbcsFlag == 0)
{
@ -458,8 +519,8 @@ RtlUpcaseUnicodeToCustomCPN (
for (i = 0; i < Size; i++)
{
/* FIXME: Upcase!! */
*CustomString = NlsData->UnicodeToMultiByte[*UnicodeString];
wc = UnicodeUpcaseTable[(unsigned int)*UnicodeString];
*CustomString = NlsData->UnicodeToMultiByte[(unsigned int)wc];
CustomString++;
UnicodeString++;
}
@ -468,10 +529,9 @@ RtlUpcaseUnicodeToCustomCPN (
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
@ -484,6 +544,7 @@ RtlUpcaseUnicodeToMultiByteN(PCHAR MbString,
{
ULONG Size = 0;
ULONG i;
WCHAR wc;
if (NlsMbCodePageTag == FALSE)
{
@ -498,12 +559,8 @@ RtlUpcaseUnicodeToMultiByteN(PCHAR MbString,
for (i = 0; i < Size; i++)
{
/* FIXME: Upcase !! */
*MbString = *UnicodeString;
#if 0
*MbString = UnicodeToAnsiTable[*UnicodeString];
#endif
wc = UnicodeUpcaseTable[(unsigned int)*UnicodeString];
*MbString = UnicodeToAnsiTable[(unsigned int)wc];
MbString++;
UnicodeString++;
}
@ -512,10 +569,9 @@ RtlUpcaseUnicodeToMultiByteN(PCHAR MbString,
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
@ -528,6 +584,7 @@ RtlUpcaseUnicodeToOemN(PCHAR OemString,
{
ULONG Size = 0;
ULONG i;
UCHAR wc;
if (NlsMbOemCodePageTag == FALSE)
{
@ -542,12 +599,8 @@ RtlUpcaseUnicodeToOemN(PCHAR OemString,
for (i = 0; i < Size; i++)
{
/* FIXME: Upcase !! */
*OemString = *UnicodeString;
#if 0
*OemString = UnicodeToOemTable[*UnicodeString];
#endif
wc = UnicodeUpcaseTable[(unsigned int)*UnicodeString];
*OemString = UnicodeToOemTable[(unsigned int)wc];
OemString++;
UnicodeString++;
}
@ -556,10 +609,9 @@ RtlUpcaseUnicodeToOemN(PCHAR OemString,
{
/* multi-byte code page */
/* FIXME */
}
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
/* EOF */

View file

@ -1,4 +1,4 @@
/* $Id: unicode.c,v 1.18 2001/03/13 16:25:55 dwelch Exp $
/* $Id: unicode.c,v 1.19 2001/11/02 09:10:49 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
@ -704,8 +704,7 @@ RtlInitAnsiString (
}
VOID
STDCALL
VOID STDCALL
RtlInitString (
IN OUT PSTRING DestinationString,
IN PCSZ SourceString
@ -728,8 +727,7 @@ RtlInitString (
}
VOID
STDCALL
VOID STDCALL
RtlInitUnicodeString (
IN OUT PUNICODE_STRING DestinationString,
IN PCWSTR SourceString
@ -756,8 +754,7 @@ RtlInitUnicodeString (
}
NTSTATUS
STDCALL
NTSTATUS STDCALL
RtlIntegerToChar (
IN ULONG Value,
IN ULONG Base,
@ -804,13 +801,10 @@ RtlIntegerToChar (
}
NTSTATUS
STDCALL
RtlIntegerToUnicodeString (
IN ULONG Value,
NTSTATUS STDCALL
RtlIntegerToUnicodeString(IN ULONG Value,
IN ULONG Base, /* optional */
IN OUT PUNICODE_STRING String
)
IN OUT PUNICODE_STRING String)
{
ANSI_STRING AnsiString;
CHAR Buffer[33];
@ -836,7 +830,7 @@ RtlIntegerToUnicodeString (
NTSTATUS STDCALL
RtlOemStringToCountedUnicodeString (IN OUT PUNICODE_STRING DestinationString,
RtlOemStringToCountedUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN POEM_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
{
@ -890,24 +884,21 @@ RtlOemStringToCountedUnicodeString (IN OUT PUNICODE_STRING DestinationString,
}
ULONG
STDCALL
RtlOemStringToUnicodeSize (
IN POEM_STRING OemString
)
ULONG STDCALL
RtlOemStringToUnicodeSize(IN POEM_STRING OemString)
{
ULONG Size;
RtlMultiByteToUnicodeSize (&Size,
RtlMultiByteToUnicodeSize(&Size,
OemString->Buffer,
OemString->Length);
return Size;
return(Size);
}
NTSTATUS STDCALL
RtlOemStringToUnicodeString (IN OUT PUNICODE_STRING DestinationString,
RtlOemStringToUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN POEM_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
{
@ -960,13 +951,10 @@ RtlOemStringToUnicodeString (IN OUT PUNICODE_STRING DestinationString,
}
BOOLEAN
STDCALL
RtlPrefixString (
PANSI_STRING String1,
PANSI_STRING String2,
BOOLEAN CaseInsensitive
)
BOOLEAN STDCALL
RtlPrefixString(IN PANSI_STRING String1,
IN PANSI_STRING String2,
IN BOOLEAN CaseInsensitive)
{
PCHAR pc1;
PCHAR pc2;
@ -1003,13 +991,10 @@ RtlPrefixString (
}
BOOLEAN
STDCALL
RtlPrefixUnicodeString (
PUNICODE_STRING String1,
PUNICODE_STRING String2,
BOOLEAN CaseInsensitive
)
BOOLEAN STDCALL
RtlPrefixUnicodeString(IN PUNICODE_STRING String1,
IN PUNICODE_STRING String2,
IN BOOLEAN CaseInsensitive)
{
PWCHAR pc1;
PWCHAR pc2;
@ -1047,23 +1032,21 @@ RtlPrefixUnicodeString (
}
ULONG
STDCALL
ULONG STDCALL
RtlUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString)
{
ULONG Size;
RtlUnicodeToMultiByteSize (&Size,
RtlUnicodeToMultiByteSize(&Size,
UnicodeString->Buffer,
UnicodeString->Length);
return Size;
return(Size);
}
NTSTATUS
STDCALL
RtlUnicodeStringToAnsiString (IN OUT PANSI_STRING DestinationString,
NTSTATUS STDCALL
RtlUnicodeStringToAnsiString(IN OUT PANSI_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
{
@ -1113,9 +1096,8 @@ RtlUnicodeStringToAnsiString (IN OUT PANSI_STRING DestinationString,
}
NTSTATUS
STDCALL
RtlUnicodeStringToCountedOemString (IN OUT POEM_STRING DestinationString,
NTSTATUS STDCALL
RtlUnicodeStringToCountedOemString(IN OUT POEM_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
{
@ -1176,13 +1158,10 @@ RtlUnicodeStringToCountedOemString (IN OUT POEM_STRING DestinationString,
}
NTSTATUS
STDCALL
RtlUnicodeStringToInteger (
IN PUNICODE_STRING String,
NTSTATUS STDCALL
RtlUnicodeStringToInteger(IN PUNICODE_STRING String,
IN ULONG Base,
OUT PULONG Value
)
OUT PULONG Value)
{
PWCHAR Str;
ULONG lenmin = 0;
@ -1266,24 +1245,20 @@ RtlUnicodeStringToInteger (
}
ULONG
STDCALL
RtlUnicodeStringToOemSize (
IN PUNICODE_STRING UnicodeString
)
ULONG STDCALL
RtlUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString)
{
ULONG Size;
RtlUnicodeToMultiByteSize (&Size,
RtlUnicodeToMultiByteSize(&Size,
UnicodeString->Buffer,
UnicodeString->Length);
return Size;
return(Size);
}
NTSTATUS STDCALL
RtlUnicodeStringToOemString (IN OUT POEM_STRING DestinationString,
RtlUnicodeStringToOemString(IN OUT POEM_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
{
@ -1312,10 +1287,10 @@ RtlUnicodeStringToOemString (IN OUT POEM_STRING DestinationString,
}
DestinationString->Length = Length;
RtlZeroMemory (DestinationString->Buffer,
RtlZeroMemory(DestinationString->Buffer,
DestinationString->Length);
Status = RtlUnicodeToOemN (DestinationString->Buffer,
Status = RtlUnicodeToOemN(DestinationString->Buffer,
DestinationString->Length,
NULL,
SourceString->Buffer,
@ -1323,7 +1298,7 @@ RtlUnicodeStringToOemString (IN OUT POEM_STRING DestinationString,
if (!NT_SUCCESS(Status))
{
if (AllocateDestinationString)
ExFreePool (DestinationString->Buffer);
ExFreePool(DestinationString->Buffer);
return Status;
}
@ -1333,26 +1308,23 @@ RtlUnicodeStringToOemString (IN OUT POEM_STRING DestinationString,
}
WCHAR
STDCALL
RtlUpcaseUnicodeChar (
WCHAR Source
)
WCHAR STDCALL
RtlUpcaseUnicodeChar(IN WCHAR Source)
{
if (Source < L'a')
return Source;
return(Source);
if (Source <= L'z')
return (Source - (L'a' - L'A'));
return(Source - (L'a' - L'A'));
/* FIXME: characters above 'z' */
return Source;
return(Source);
}
NTSTATUS STDCALL
RtlUpcaseUnicodeString (IN OUT PUNICODE_STRING DestinationString,
RtlUpcaseUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
{
@ -1363,16 +1335,16 @@ RtlUpcaseUnicodeString (IN OUT PUNICODE_STRING DestinationString,
{
DestinationString->MaximumLength = SourceString->Length + sizeof(WCHAR);
DestinationString->Buffer =
ExAllocatePoolWithTag (NonPagedPool,
ExAllocatePoolWithTag(NonPagedPool,
SourceString->Length + sizeof(WCHAR),
TAG_USTR);
if (DestinationString->Buffer == NULL)
return STATUS_NO_MEMORY;
return(STATUS_NO_MEMORY);
}
else
{
if (SourceString->Length >= DestinationString->MaximumLength)
return STATUS_BUFFER_TOO_SMALL;
return(STATUS_BUFFER_TOO_SMALL);
}
DestinationString->Length = SourceString->Length;
@ -1380,29 +1352,26 @@ RtlUpcaseUnicodeString (IN OUT PUNICODE_STRING DestinationString,
Dest = DestinationString->Buffer;
for (i=0; i < SourceString->Length / sizeof(WCHAR); i++)
{
*Dest = RtlUpcaseUnicodeChar (*Src);
*Dest = RtlUpcaseUnicodeChar(*Src);
Dest++;
Src++;
}
*Dest = 0;
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
NTSTATUS
STDCALL
RtlUpcaseUnicodeStringToAnsiString (
IN OUT PANSI_STRING DestinationString,
NTSTATUS STDCALL
RtlUpcaseUnicodeStringToAnsiString(IN OUT PANSI_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString
)
IN BOOLEAN AllocateDestinationString)
{
NTSTATUS Status;
ULONG Length;
if (NlsMbCodePageTag == TRUE)
Length = RtlUnicodeStringToAnsiSize (SourceString);
Length = RtlUnicodeStringToAnsiSize(SourceString);
else
Length = SourceString->Length / sizeof(WCHAR);
@ -1410,23 +1379,23 @@ RtlUpcaseUnicodeStringToAnsiString (
{
DestinationString->MaximumLength = Length + sizeof(CHAR);
DestinationString->Buffer =
ExAllocatePoolWithTag (NonPagedPool,
ExAllocatePoolWithTag(NonPagedPool,
DestinationString->MaximumLength,
TAG_ASTR);
if (DestinationString->Buffer == NULL)
return STATUS_NO_MEMORY;
return(STATUS_NO_MEMORY);
}
else
{
if (Length >= DestinationString->MaximumLength)
return STATUS_BUFFER_TOO_SMALL;
return(STATUS_BUFFER_TOO_SMALL);
}
DestinationString->Length = Length;
RtlZeroMemory (DestinationString->Buffer,
RtlZeroMemory(DestinationString->Buffer,
DestinationString->Length);
Status = RtlUpcaseUnicodeToMultiByteN (DestinationString->Buffer,
Status = RtlUpcaseUnicodeToMultiByteN(DestinationString->Buffer,
DestinationString->Length,
NULL,
SourceString->Buffer,
@ -1434,18 +1403,18 @@ RtlUpcaseUnicodeStringToAnsiString (
if (!NT_SUCCESS(Status))
{
if (AllocateDestinationString)
ExFreePool (DestinationString->Buffer);
return Status;
ExFreePool(DestinationString->Buffer);
return(Status);
}
DestinationString->Buffer[Length] = 0;
return STATUS_SUCCESS;
return(STATUS_SUCCESS);
}
NTSTATUS STDCALL
RtlUpcaseUnicodeStringToCountedOemString (IN OUT POEM_STRING DestinationString,
RtlUpcaseUnicodeStringToCountedOemString(IN OUT POEM_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
{
@ -1506,13 +1475,10 @@ RtlUpcaseUnicodeStringToCountedOemString (IN OUT POEM_STRING DestinationString,
}
NTSTATUS
STDCALL
RtlUpcaseUnicodeStringToOemString (
IN OUT POEM_STRING DestinationString,
NTSTATUS STDCALL
RtlUpcaseUnicodeStringToOemString(IN OUT POEM_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString
)
IN BOOLEAN AllocateDestinationString)
{
NTSTATUS Status;
ULONG Length;
@ -1558,11 +1524,8 @@ RtlUpcaseUnicodeStringToOemString (
}
CHAR
STDCALL
RtlUpperChar (
IN CHAR Source
)
CHAR STDCALL
RtlUpperChar(IN CHAR Source)
{
WCHAR Unicode;
CHAR Destination;
@ -1592,26 +1555,27 @@ RtlUpperChar (
Destination = Source;
}
return Destination;
return(Destination);
}
VOID
STDCALL
RtlUpperString(PSTRING DestinationString, PSTRING SourceString)
VOID STDCALL
RtlUpperString(PSTRING DestinationString,
PSTRING SourceString)
{
ULONG Length;
ULONG i;
PCHAR Src;
PCHAR Dest;
Length = min(SourceString->Length, DestinationString->MaximumLength - 1);
Length = min(SourceString->Length,
DestinationString->MaximumLength - 1);
Src = SourceString->Buffer;
Dest = DestinationString->Buffer;
for (i = 0; i < Length; i++)
{
*Dest = RtlUpperChar (*Src);
*Dest = RtlUpperChar(*Src);
Src++;
Dest++;
}
@ -1621,43 +1585,31 @@ RtlUpperString(PSTRING DestinationString, PSTRING SourceString)
}
ULONG
STDCALL
RtlxAnsiStringToUnicodeSize (
IN PANSI_STRING AnsiString
)
ULONG STDCALL
RtlxAnsiStringToUnicodeSize(IN PANSI_STRING AnsiString)
{
return RtlAnsiStringToUnicodeSize (AnsiString);
return(RtlAnsiStringToUnicodeSize(AnsiString));
}
ULONG
STDCALL
RtlxOemStringToUnicodeSize (
IN POEM_STRING OemString
)
ULONG STDCALL
RtlxOemStringToUnicodeSize(IN POEM_STRING OemString)
{
return RtlAnsiStringToUnicodeSize ((PANSI_STRING)OemString);
return(RtlAnsiStringToUnicodeSize((PANSI_STRING)OemString));
}
ULONG
STDCALL
RtlxUnicodeStringToAnsiSize (
IN PUNICODE_STRING UnicodeString
)
ULONG STDCALL
RtlxUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString)
{
return RtlUnicodeStringToAnsiSize (UnicodeString);
return(RtlUnicodeStringToAnsiSize(UnicodeString));
}
ULONG
STDCALL
RtlxUnicodeStringToOemSize (
IN PUNICODE_STRING UnicodeString
)
ULONG STDCALL
RtlxUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString)
{
return RtlUnicodeStringToAnsiSize (UnicodeString);
return(RtlUnicodeStringToAnsiSize(UnicodeString));
}
/* EOF */