From 3c4a2b6d93c41de101221c05b1ecdce449fb31fe Mon Sep 17 00:00:00 2001 From: Dmitry Chapyshev Date: Thu, 15 Sep 2016 19:17:47 +0000 Subject: [PATCH] [RTL] Formatting only svn path=/trunk/; revision=72686 --- reactos/sdk/lib/rtl/nls.c | 1092 ++++++++++++++++++------------------- 1 file changed, 529 insertions(+), 563 deletions(-) diff --git a/reactos/sdk/lib/rtl/nls.c b/reactos/sdk/lib/rtl/nls.c index 0fd41d7e46a..26256a8614c 100644 --- a/reactos/sdk/lib/rtl/nls.c +++ b/reactos/sdk/lib/rtl/nls.c @@ -49,79 +49,77 @@ RtlCustomCPToUnicodeN(IN PCPTABLEINFO CustomCP, PCHAR CustomString, ULONG CustomSize) { - ULONG Size = 0; - ULONG i; + ULONG Size = 0; + ULONG i; - if (CustomCP->DBCSCodePage == 0) - { - /* single-byte code page */ - if (CustomSize > (UnicodeSize / sizeof(WCHAR))) - Size = UnicodeSize / sizeof(WCHAR); - else - Size = CustomSize; + if (CustomCP->DBCSCodePage == 0) + { + /* single-byte code page */ + if (CustomSize > (UnicodeSize / sizeof(WCHAR))) + Size = UnicodeSize / sizeof(WCHAR); + else + Size = CustomSize; - if (ResultSize != NULL) - *ResultSize = Size * sizeof(WCHAR); + if (ResultSize != NULL) + *ResultSize = Size * sizeof(WCHAR); - for (i = 0; i < Size; i++) - { - *UnicodeString = CustomCP->MultiByteTable[(UCHAR)*CustomString]; - UnicodeString++; - CustomString++; - } - } - else - { - /* multi-byte code page */ - /* FIXME */ - ASSERT(FALSE); - } + for (i = 0; i < Size; i++) + { + *UnicodeString = CustomCP->MultiByteTable[(UCHAR)*CustomString]; + UnicodeString++; + CustomString++; + } + } + else + { + /* multi-byte code page */ + /* FIXME */ + ASSERT(FALSE); + } - return(STATUS_SUCCESS); + return STATUS_SUCCESS; } - - +/* + * @implemented + */ WCHAR NTAPI -RtlDowncaseUnicodeChar (IN WCHAR Source) +RtlDowncaseUnicodeChar(IN WCHAR Source) { - USHORT Offset; + USHORT Offset; - if (Source < L'A') - return Source; + if (Source < L'A') + return Source; - if (Source <= L'Z') - return Source + (L'a' - L'A'); + if (Source <= L'Z') + return Source + (L'a' - L'A'); - if (Source < 0x80) - return Source; + if (Source < 0x80) + return Source; - Offset = ((USHORT)Source >> 8); - DPRINT("Offset: %hx\n", Offset); + Offset = ((USHORT)Source >> 8); + DPRINT("Offset: %hx\n", Offset); - Offset = NlsUnicodeLowercaseTable[Offset]; - DPRINT("Offset: %hx\n", Offset); + Offset = NlsUnicodeLowercaseTable[Offset]; + DPRINT("Offset: %hx\n", Offset); - Offset += (((USHORT)Source & 0x00F0) >> 4); - DPRINT("Offset: %hx\n", Offset); + Offset += (((USHORT)Source & 0x00F0) >> 4); + DPRINT("Offset: %hx\n", Offset); - Offset = NlsUnicodeLowercaseTable[Offset]; - DPRINT("Offset: %hx\n", Offset); + Offset = NlsUnicodeLowercaseTable[Offset]; + DPRINT("Offset: %hx\n", Offset); - Offset += ((USHORT)Source & 0x000F); - DPRINT("Offset: %hx\n", Offset); + Offset += ((USHORT)Source & 0x000F); + DPRINT("Offset: %hx\n", Offset); - Offset = NlsUnicodeLowercaseTable[Offset]; - DPRINT("Offset: %hx\n", Offset); + Offset = NlsUnicodeLowercaseTable[Offset]; + DPRINT("Offset: %hx\n", Offset); - DPRINT("Result: %hx\n", Source + (SHORT)Offset); + DPRINT("Result: %hx\n", Source + (SHORT)Offset); - return Source + (SHORT)Offset; + return Source + (SHORT)Offset; } - - - /* * @implemented */ @@ -129,13 +127,10 @@ VOID NTAPI RtlGetDefaultCodePage(OUT PUSHORT AnsiCodePage, OUT PUSHORT OemCodePage) { - *AnsiCodePage = NlsAnsiCodePage; - *OemCodePage = NlsOemCodePage; + *AnsiCodePage = NlsAnsiCodePage; + *OemCodePage = NlsOemCodePage; } - - - /* * @implemented */ @@ -143,53 +138,50 @@ VOID NTAPI RtlInitCodePageTable(IN PUSHORT TableBase, OUT PCPTABLEINFO CodePageTable) { - PNLS_FILE_HEADER NlsFileHeader; + PNLS_FILE_HEADER NlsFileHeader; - DPRINT("RtlInitCodePageTable() called\n"); + DPRINT("RtlInitCodePageTable() called\n"); - NlsFileHeader = (PNLS_FILE_HEADER)TableBase; + NlsFileHeader = (PNLS_FILE_HEADER)TableBase; - /* Copy header fields first */ - CodePageTable->CodePage = NlsFileHeader->CodePage; - CodePageTable->MaximumCharacterSize = NlsFileHeader->MaximumCharacterSize; - CodePageTable->DefaultChar = NlsFileHeader->DefaultChar; - CodePageTable->UniDefaultChar = NlsFileHeader->UniDefaultChar; - CodePageTable->TransDefaultChar = NlsFileHeader->TransDefaultChar; - CodePageTable->TransUniDefaultChar = NlsFileHeader->TransUniDefaultChar; + /* Copy header fields first */ + CodePageTable->CodePage = NlsFileHeader->CodePage; + CodePageTable->MaximumCharacterSize = NlsFileHeader->MaximumCharacterSize; + CodePageTable->DefaultChar = NlsFileHeader->DefaultChar; + CodePageTable->UniDefaultChar = NlsFileHeader->UniDefaultChar; + CodePageTable->TransDefaultChar = NlsFileHeader->TransDefaultChar; + CodePageTable->TransUniDefaultChar = NlsFileHeader->TransUniDefaultChar; - RtlCopyMemory(&CodePageTable->LeadByte, - &NlsFileHeader->LeadByte, - MAXIMUM_LEADBYTES); + RtlCopyMemory(&CodePageTable->LeadByte, + &NlsFileHeader->LeadByte, + MAXIMUM_LEADBYTES); - /* Offset to wide char table is after the header */ - CodePageTable->WideCharTable = TableBase + NlsFileHeader->HeaderSize + 1 + - TableBase[NlsFileHeader->HeaderSize]; + /* Offset to wide char table is after the header */ + CodePageTable->WideCharTable = + TableBase + NlsFileHeader->HeaderSize + 1 + TableBase[NlsFileHeader->HeaderSize]; - /* Then multibyte table (256 wchars) follows */ - CodePageTable->MultiByteTable = TableBase + NlsFileHeader->HeaderSize + 1; + /* Then multibyte table (256 wchars) follows */ + CodePageTable->MultiByteTable = TableBase + NlsFileHeader->HeaderSize + 1; - /* Check the presence of glyph table (256 wchars) */ - if (!CodePageTable->MultiByteTable[256]) - CodePageTable->DBCSRanges = CodePageTable->MultiByteTable + 256 + 1; - else - CodePageTable->DBCSRanges = CodePageTable->MultiByteTable + 256 + 1 + 256; + /* Check the presence of glyph table (256 wchars) */ + if (!CodePageTable->MultiByteTable[256]) + CodePageTable->DBCSRanges = CodePageTable->MultiByteTable + 256 + 1; + else + CodePageTable->DBCSRanges = CodePageTable->MultiByteTable + 256 + 1 + 256; - /* Is this double-byte code page? */ - if (*CodePageTable->DBCSRanges) - { - CodePageTable->DBCSCodePage = 1; - CodePageTable->DBCSOffsets = CodePageTable->DBCSRanges + 1; - } - else - { - CodePageTable->DBCSCodePage = 0; - CodePageTable->DBCSOffsets = NULL; - } + /* Is this double-byte code page? */ + if (*CodePageTable->DBCSRanges) + { + CodePageTable->DBCSCodePage = 1; + CodePageTable->DBCSOffsets = CodePageTable->DBCSRanges + 1; + } + else + { + CodePageTable->DBCSCodePage = 0; + CodePageTable->DBCSOffsets = NULL; + } } - - - /* * @implemented */ @@ -199,103 +191,97 @@ RtlInitNlsTables(IN PUSHORT AnsiTableBase, IN PUSHORT CaseTableBase, OUT PNLSTABLEINFO NlsTable) { - DPRINT("RtlInitNlsTables()called\n"); + DPRINT("RtlInitNlsTables()called\n"); - if (AnsiTableBase == NULL || - OemTableBase == NULL || - CaseTableBase == NULL) - return; + if (AnsiTableBase && OemTableBase && CaseTableBase) + { + RtlInitCodePageTable(AnsiTableBase, &NlsTable->AnsiTableInfo); - RtlInitCodePageTable(AnsiTableBase, &NlsTable->AnsiTableInfo); + RtlInitCodePageTable(OemTableBase, &NlsTable->OemTableInfo); - RtlInitCodePageTable(OemTableBase, &NlsTable->OemTableInfo); - - NlsTable->UpperCaseTable = (PUSHORT)CaseTableBase + 2; - NlsTable->LowerCaseTable = (PUSHORT)CaseTableBase + *((PUSHORT)CaseTableBase + 1) + 2; + NlsTable->UpperCaseTable = (PUSHORT)CaseTableBase + 2; + NlsTable->LowerCaseTable = (PUSHORT)CaseTableBase + *((PUSHORT)CaseTableBase + 1) + 2; + } } - /* * @unimplemented */ NTSTATUS NTAPI -RtlMultiByteToUnicodeN( - OUT PWCHAR UnicodeString, - IN ULONG UnicodeSize, - OUT PULONG ResultSize, - IN PCSTR MbString, - IN ULONG MbSize) +RtlMultiByteToUnicodeN(OUT PWCHAR UnicodeString, + IN ULONG UnicodeSize, + OUT PULONG ResultSize, + IN PCSTR MbString, + IN ULONG MbSize) { - ULONG Size = 0; - ULONG i; + ULONG Size = 0; + ULONG i; - PAGED_CODE_RTL(); + PAGED_CODE_RTL(); - if (NlsMbCodePageTag == FALSE) - { - /* single-byte code page */ - if (MbSize > (UnicodeSize / sizeof(WCHAR))) - Size = UnicodeSize / sizeof(WCHAR); - else - Size = MbSize; + if (NlsMbCodePageTag == FALSE) + { + /* single-byte code page */ + if (MbSize > (UnicodeSize / sizeof(WCHAR))) + Size = UnicodeSize / sizeof(WCHAR); + else + Size = MbSize; - if (ResultSize != NULL) - *ResultSize = Size * sizeof(WCHAR); + if (ResultSize != NULL) + *ResultSize = Size * sizeof(WCHAR); - for (i = 0; i < Size; i++) - UnicodeString[i] = NlsAnsiToUnicodeTable[(UCHAR)MbString[i]]; - } - else - { - /* multi-byte code page */ - /* FIXME */ + for (i = 0; i < Size; i++) + UnicodeString[i] = NlsAnsiToUnicodeTable[(UCHAR)MbString[i]]; + } + else + { + /* multi-byte code page */ + /* FIXME */ - UCHAR Char; - USHORT LeadByteInfo; - PCSTR MbEnd = MbString + MbSize; + UCHAR Char; + USHORT LeadByteInfo; + PCSTR MbEnd = MbString + MbSize; - for (i = 0; i < UnicodeSize / sizeof(WCHAR) && MbString < MbEnd; i++) - { - Char = *(PUCHAR)MbString++; + for (i = 0; i < UnicodeSize / sizeof(WCHAR) && MbString < MbEnd; i++) + { + Char = *(PUCHAR)MbString++; - if (Char < 0x80) - { - *UnicodeString++ = Char; - continue; - } + if (Char < 0x80) + { + *UnicodeString++ = Char; + continue; + } - LeadByteInfo = NlsLeadByteInfo[Char]; + LeadByteInfo = NlsLeadByteInfo[Char]; - if (!LeadByteInfo) - { - *UnicodeString++ = NlsAnsiToUnicodeTable[Char]; - continue; - } + if (!LeadByteInfo) + { + *UnicodeString++ = NlsAnsiToUnicodeTable[Char]; + continue; + } - if (MbString < MbEnd) - *UnicodeString++ = NlsLeadByteInfo[LeadByteInfo + *(PUCHAR)MbString++]; - } + if (MbString < MbEnd) + *UnicodeString++ = NlsLeadByteInfo[LeadByteInfo + *(PUCHAR)MbString++]; + } - if (ResultSize != NULL) - *ResultSize = i * sizeof(WCHAR); - } + if (ResultSize != NULL) + *ResultSize = i * sizeof(WCHAR); + } - return STATUS_SUCCESS; + return STATUS_SUCCESS; } - /* * @unimplemented */ NTSTATUS NTAPI -RtlConsoleMultiByteToUnicodeN( - OUT PWCHAR UnicodeString, - IN ULONG UnicodeSize, - OUT PULONG ResultSize, - IN PCSTR MbString, - IN ULONG MbSize, - OUT PULONG Unknown) +RtlConsoleMultiByteToUnicodeN(OUT PWCHAR UnicodeString, + IN ULONG UnicodeSize, + OUT PULONG ResultSize, + IN PCSTR MbString, + IN ULONG MbSize, + OUT PULONG Unknown) { PAGED_CODE_RTL(); @@ -309,8 +295,6 @@ RtlConsoleMultiByteToUnicodeN( MbSize); } - - /* * @implemented */ @@ -360,117 +344,111 @@ RtlMultiByteToUnicodeSize(PULONG UnicodeSize, return STATUS_SUCCESS; } - - /* * @unimplemented */ NTSTATUS NTAPI -RtlOemToUnicodeN (PWCHAR UnicodeString, - ULONG UnicodeSize, - PULONG ResultSize, - PCCH OemString, - ULONG OemSize) +RtlOemToUnicodeN(PWCHAR UnicodeString, + ULONG UnicodeSize, + PULONG ResultSize, + PCCH OemString, + ULONG OemSize) { - ULONG Size = 0; - ULONG i; + ULONG Size = 0; + ULONG i; - if (NlsMbOemCodePageTag == FALSE) - { - /* single-byte code page */ - if (OemSize > (UnicodeSize / sizeof(WCHAR))) - Size = UnicodeSize / sizeof(WCHAR); - else - Size = OemSize; + if (NlsMbOemCodePageTag == FALSE) + { + /* single-byte code page */ + if (OemSize > (UnicodeSize / sizeof(WCHAR))) + Size = UnicodeSize / sizeof(WCHAR); + else + Size = OemSize; - if (ResultSize != NULL) - *ResultSize = Size * sizeof(WCHAR); + if (ResultSize != NULL) + *ResultSize = Size * sizeof(WCHAR); - for (i = 0; i < Size; i++) - { - *UnicodeString = NlsOemToUnicodeTable[(UCHAR)*OemString]; - UnicodeString++; - OemString++; - } - } - else - { - /* multi-byte code page */ - /* FIXME */ + for (i = 0; i < Size; i++) + { + *UnicodeString = NlsOemToUnicodeTable[(UCHAR)*OemString]; + UnicodeString++; + OemString++; + } + } + else + { + /* multi-byte code page */ + /* FIXME */ - UCHAR Char; - USHORT OemLeadByteInfo; - PCCH OemEnd = OemString + OemSize; + UCHAR Char; + USHORT OemLeadByteInfo; + PCCH OemEnd = OemString + OemSize; - for (i = 0; i < UnicodeSize / sizeof(WCHAR) && OemString < OemEnd; i++) - { - Char = *(PUCHAR)OemString++; + for (i = 0; i < UnicodeSize / sizeof(WCHAR) && OemString < OemEnd; i++) + { + Char = *(PUCHAR)OemString++; - if (Char < 0x80) - { - *UnicodeString++ = Char; - continue; - } + if (Char < 0x80) + { + *UnicodeString++ = Char; + continue; + } - OemLeadByteInfo = NlsOemLeadByteInfo[Char]; + OemLeadByteInfo = NlsOemLeadByteInfo[Char]; - if (!OemLeadByteInfo) - { - *UnicodeString++ = NlsOemToUnicodeTable[Char]; - continue; - } + if (!OemLeadByteInfo) + { + *UnicodeString++ = NlsOemToUnicodeTable[Char]; + continue; + } - if (OemString < OemEnd) - *UnicodeString++ = - NlsOemLeadByteInfo[OemLeadByteInfo + *(PUCHAR)OemString++]; - } + if (OemString < OemEnd) + *UnicodeString++ = + NlsOemLeadByteInfo[OemLeadByteInfo + *(PUCHAR)OemString++]; + } - if (ResultSize != NULL) - *ResultSize = i * sizeof(WCHAR); - } + if (ResultSize != NULL) + *ResultSize = i * sizeof(WCHAR); + } - return STATUS_SUCCESS; + return STATUS_SUCCESS; } - - /* * @implemented */ VOID NTAPI RtlResetRtlTranslations(IN PNLSTABLEINFO NlsTable) { - DPRINT("RtlResetRtlTranslations() called\n"); + DPRINT("RtlResetRtlTranslations() called\n"); - /* Set ANSI data */ - NlsAnsiToUnicodeTable = (PUSHORT)NlsTable->AnsiTableInfo.MultiByteTable; - NlsUnicodeToAnsiTable = NlsTable->AnsiTableInfo.WideCharTable; - NlsUnicodeToMbAnsiTable = (PUSHORT)NlsTable->AnsiTableInfo.WideCharTable; - NlsMbCodePageTag = (NlsTable->AnsiTableInfo.DBCSCodePage != 0); - NlsLeadByteInfo = NlsTable->AnsiTableInfo.DBCSOffsets; - NlsAnsiCodePage = NlsTable->AnsiTableInfo.CodePage; - DPRINT("Ansi codepage %hu\n", NlsAnsiCodePage); + /* Set ANSI data */ + NlsAnsiToUnicodeTable = (PUSHORT)NlsTable->AnsiTableInfo.MultiByteTable; + NlsUnicodeToAnsiTable = NlsTable->AnsiTableInfo.WideCharTable; + NlsUnicodeToMbAnsiTable = (PUSHORT)NlsTable->AnsiTableInfo.WideCharTable; + NlsMbCodePageTag = (NlsTable->AnsiTableInfo.DBCSCodePage != 0); + NlsLeadByteInfo = NlsTable->AnsiTableInfo.DBCSOffsets; + NlsAnsiCodePage = NlsTable->AnsiTableInfo.CodePage; + DPRINT("Ansi codepage %hu\n", NlsAnsiCodePage); - /* Set OEM data */ - NlsOemToUnicodeTable = (PUSHORT)NlsTable->OemTableInfo.MultiByteTable; - NlsUnicodeToOemTable = NlsTable->OemTableInfo.WideCharTable; - NlsUnicodeToMbOemTable = (PUSHORT)NlsTable->OemTableInfo.WideCharTable; - NlsMbOemCodePageTag = (NlsTable->OemTableInfo.DBCSCodePage != 0); - NlsOemLeadByteInfo = NlsTable->OemTableInfo.DBCSOffsets; - NlsOemCodePage = NlsTable->OemTableInfo.CodePage; - DPRINT("Oem codepage %hu\n", NlsOemCodePage); + /* Set OEM data */ + NlsOemToUnicodeTable = (PUSHORT)NlsTable->OemTableInfo.MultiByteTable; + NlsUnicodeToOemTable = NlsTable->OemTableInfo.WideCharTable; + NlsUnicodeToMbOemTable = (PUSHORT)NlsTable->OemTableInfo.WideCharTable; + NlsMbOemCodePageTag = (NlsTable->OemTableInfo.DBCSCodePage != 0); + NlsOemLeadByteInfo = NlsTable->OemTableInfo.DBCSOffsets; + NlsOemCodePage = NlsTable->OemTableInfo.CodePage; + DPRINT("Oem codepage %hu\n", NlsOemCodePage); - /* Set Unicode case map data */ - NlsUnicodeUpcaseTable = NlsTable->UpperCaseTable; - NlsUnicodeLowercaseTable = NlsTable->LowerCaseTable; + /* Set Unicode case map data */ + NlsUnicodeUpcaseTable = NlsTable->UpperCaseTable; + NlsUnicodeLowercaseTable = NlsTable->LowerCaseTable; - /* set the default characters for RtlpDidUnicodeToOemWork */ - NlsOemDefaultChar = NlsTable->OemTableInfo.DefaultChar; - NlsUnicodeDefaultChar = NlsTable->OemTableInfo.TransDefaultChar; + /* set the default characters for RtlpDidUnicodeToOemWork */ + NlsOemDefaultChar = NlsTable->OemTableInfo.DefaultChar; + NlsUnicodeDefaultChar = NlsTable->OemTableInfo.TransDefaultChar; } - - /* * @unimplemented */ @@ -482,111 +460,108 @@ RtlUnicodeToCustomCPN(IN PCPTABLEINFO CustomCP, PWCHAR UnicodeString, ULONG UnicodeSize) { - ULONG Size = 0; - ULONG i; + ULONG Size = 0; + ULONG i; - if (CustomCP->DBCSCodePage == 0) - { - /* single-byte code page */ - if (UnicodeSize > (CustomSize * sizeof(WCHAR))) - Size = CustomSize; - else - Size = UnicodeSize / sizeof(WCHAR); + if (CustomCP->DBCSCodePage == 0) + { + /* single-byte code page */ + if (UnicodeSize > (CustomSize * sizeof(WCHAR))) + Size = CustomSize; + else + Size = UnicodeSize / sizeof(WCHAR); - if (ResultSize != NULL) - *ResultSize = Size; + if (ResultSize != NULL) + *ResultSize = Size; - for (i = 0; i < Size; i++) - { - *CustomString = ((PCHAR)CustomCP->WideCharTable)[*UnicodeString]; - CustomString++; - UnicodeString++; - } - } - else - { - /* multi-byte code page */ - /* FIXME */ - ASSERT(FALSE); - } + for (i = 0; i < Size; i++) + { + *CustomString = ((PCHAR)CustomCP->WideCharTable)[*UnicodeString]; + CustomString++; + UnicodeString++; + } + } + else + { + /* multi-byte code page */ + /* FIXME */ + ASSERT(FALSE); + } - return STATUS_SUCCESS; + return STATUS_SUCCESS; } - - /* * @unimplemented */ NTSTATUS NTAPI -RtlUnicodeToMultiByteN (PCHAR MbString, - ULONG MbSize, - PULONG ResultSize, - PCWCH UnicodeString, - ULONG UnicodeSize) +RtlUnicodeToMultiByteN(PCHAR MbString, + ULONG MbSize, + PULONG ResultSize, + PCWCH UnicodeString, + ULONG UnicodeSize) { - ULONG Size = 0; - ULONG i; + ULONG Size = 0; + ULONG i; - PAGED_CODE_RTL(); + PAGED_CODE_RTL(); - if (NlsMbCodePageTag == FALSE) - { - /* single-byte code page */ - Size = (UnicodeSize > (MbSize * sizeof (WCHAR))) - ? MbSize - : (UnicodeSize / sizeof (WCHAR)); + if (NlsMbCodePageTag == FALSE) + { + /* single-byte code page */ + Size = (UnicodeSize > (MbSize * sizeof (WCHAR))) + ? MbSize : (UnicodeSize / sizeof (WCHAR)); - if (ResultSize != NULL) - { - *ResultSize = Size; - } + if (ResultSize != NULL) + { + *ResultSize = Size; + } - for (i = 0; i < Size; i++) - { - *MbString++ = NlsUnicodeToAnsiTable[*UnicodeString++]; - } - } - else - { - /* multi-byte code page */ - /* FIXME */ + for (i = 0; i < Size; i++) + { + *MbString++ = NlsUnicodeToAnsiTable[*UnicodeString++]; + } + } + else + { + /* multi-byte code page */ + /* FIXME */ - USHORT WideChar; - USHORT MbChar; + USHORT WideChar; + USHORT MbChar; - for (i = MbSize, Size = UnicodeSize / sizeof(WCHAR); i && Size; i--, Size--) - { - WideChar = *UnicodeString++; + for (i = MbSize, Size = UnicodeSize / sizeof(WCHAR); i && Size; i--, Size--) + { + WideChar = *UnicodeString++; - if (WideChar < 0x80) - { - *MbString++ = LOBYTE(WideChar); - continue; - } + if (WideChar < 0x80) + { + *MbString++ = LOBYTE(WideChar); + continue; + } - MbChar = NlsUnicodeToMbAnsiTable[WideChar]; + MbChar = NlsUnicodeToMbAnsiTable[WideChar]; - if (!HIBYTE(MbChar)) - { - *MbString++ = LOBYTE(MbChar); - continue; - } + if (!HIBYTE(MbChar)) + { + *MbString++ = LOBYTE(MbChar); + continue; + } - if (i >= 2) - { - *MbString++ = HIBYTE(MbChar); - *MbString++ = LOBYTE(MbChar); - i--; - } - else break; - } + if (i >= 2) + { + *MbString++ = HIBYTE(MbChar); + *MbString++ = LOBYTE(MbChar); + i--; + } + else break; + } - if (ResultSize != NULL) - *ResultSize = MbSize - i; - } + if (ResultSize != NULL) + *ResultSize = MbSize - i; + } - return STATUS_SUCCESS; + return STATUS_SUCCESS; } /* @@ -636,300 +611,291 @@ RtlUnicodeToMultiByteSize(PULONG MbSize, * @unimplemented */ NTSTATUS NTAPI -RtlUnicodeToOemN (PCHAR OemString, - ULONG OemSize, - PULONG ResultSize, - PCWCH UnicodeString, - ULONG UnicodeSize) +RtlUnicodeToOemN(PCHAR OemString, + ULONG OemSize, + PULONG ResultSize, + PCWCH UnicodeString, + ULONG UnicodeSize) { - ULONG Size = 0; - ULONG i; + ULONG Size = 0; + ULONG i; - if (NlsMbOemCodePageTag == FALSE) - { - /* single-byte code page */ - if (UnicodeSize > (OemSize * sizeof(WCHAR))) - Size = OemSize; - else - Size = UnicodeSize / sizeof(WCHAR); + if (NlsMbOemCodePageTag == FALSE) + { + /* single-byte code page */ + if (UnicodeSize > (OemSize * sizeof(WCHAR))) + Size = OemSize; + else + Size = UnicodeSize / sizeof(WCHAR); - if (ResultSize != NULL) - *ResultSize = Size; + if (ResultSize != NULL) + *ResultSize = Size; - for (i = 0; i < Size; i++) - { - *OemString = NlsUnicodeToOemTable[*UnicodeString]; - OemString++; - UnicodeString++; - } - } - else - { - /* multi-byte code page */ - /* FIXME */ + for (i = 0; i < Size; i++) + { + *OemString = NlsUnicodeToOemTable[*UnicodeString]; + OemString++; + UnicodeString++; + } + } + else + { + /* multi-byte code page */ + /* FIXME */ - USHORT WideChar; - USHORT OemChar; + USHORT WideChar; + USHORT OemChar; - for (i = OemSize, Size = UnicodeSize / sizeof(WCHAR); i && Size; i--, Size--) - { - WideChar = *UnicodeString++; + for (i = OemSize, Size = UnicodeSize / sizeof(WCHAR); i && Size; i--, Size--) + { + WideChar = *UnicodeString++; - if (WideChar < 0x80) - { - *OemString++ = LOBYTE(WideChar); - continue; - } + if (WideChar < 0x80) + { + *OemString++ = LOBYTE(WideChar); + continue; + } - OemChar = NlsUnicodeToMbOemTable[WideChar]; + OemChar = NlsUnicodeToMbOemTable[WideChar]; - if (!HIBYTE(OemChar)) - { - *OemString++ = LOBYTE(OemChar); - continue; - } + if (!HIBYTE(OemChar)) + { + *OemString++ = LOBYTE(OemChar); + continue; + } - if (i >= 2) - { - *OemString++ = HIBYTE(OemChar); - *OemString++ = LOBYTE(OemChar); - i--; - } - else break; - } + if (i >= 2) + { + *OemString++ = HIBYTE(OemChar); + *OemString++ = LOBYTE(OemChar); + i--; + } + else break; + } - if (ResultSize != NULL) - *ResultSize = OemSize - i; - } + if (ResultSize != NULL) + *ResultSize = OemSize - i; + } - return STATUS_SUCCESS; + return STATUS_SUCCESS; } - - - /* * @implemented */ WCHAR NTAPI RtlUpcaseUnicodeChar(IN WCHAR Source) { - USHORT Offset; + USHORT Offset; - if (Source < 'a') - return Source; + if (Source < 'a') + return Source; - if (Source <= 'z') - return (Source - ('a' - 'A')); + if (Source <= 'z') + return (Source - ('a' - 'A')); - Offset = ((USHORT)Source >> 8) & 0xFF; - Offset = NlsUnicodeUpcaseTable[Offset]; + Offset = ((USHORT)Source >> 8) & 0xFF; + Offset = NlsUnicodeUpcaseTable[Offset]; - Offset += ((USHORT)Source >> 4) & 0xF; - Offset = NlsUnicodeUpcaseTable[Offset]; + Offset += ((USHORT)Source >> 4) & 0xF; + Offset = NlsUnicodeUpcaseTable[Offset]; - Offset += ((USHORT)Source & 0xF); - Offset = NlsUnicodeUpcaseTable[Offset]; + Offset += ((USHORT)Source & 0xF); + Offset = NlsUnicodeUpcaseTable[Offset]; - return Source + (SHORT)Offset; + return Source + (SHORT)Offset; } +/* + * @implemented + */ +NTSTATUS NTAPI +RtlUpcaseUnicodeToCustomCPN(IN PCPTABLEINFO CustomCP, + OUT PCHAR CustomString, + IN ULONG CustomSize, + OUT PULONG ResultSize OPTIONAL, + IN PWCHAR UnicodeString, + IN ULONG UnicodeSize) +{ + WCHAR UpcaseChar; + ULONG Size = 0; + ULONG i; + if (!CustomCP->DBCSCodePage) + { + /* single-byte code page */ + if (UnicodeSize > (CustomSize * sizeof(WCHAR))) + Size = CustomSize; + else + Size = UnicodeSize / sizeof(WCHAR); + + if (ResultSize) + *ResultSize = Size; + + for (i = 0; i < Size; i++) + { + UpcaseChar = RtlUpcaseUnicodeChar(*UnicodeString); + *CustomString = ((PCHAR)CustomCP->WideCharTable)[UpcaseChar]; + ++CustomString; + ++UnicodeString; + } + } + else + { + /* multi-byte code page */ + /* FIXME */ + ASSERT(FALSE); + } + + return STATUS_SUCCESS; +} /* * @unimplemented */ NTSTATUS NTAPI -RtlUpcaseUnicodeToCustomCPN (IN PCPTABLEINFO CustomCP, - PCHAR CustomString, - ULONG CustomSize, +RtlUpcaseUnicodeToMultiByteN(PCHAR MbString, + ULONG MbSize, PULONG ResultSize, - PWCHAR UnicodeString, + PCWCH UnicodeString, ULONG UnicodeSize) { - WCHAR UpcaseChar; - ULONG Size = 0; - ULONG i; + WCHAR UpcaseChar; + ULONG Size = 0; + ULONG i; - if (CustomCP->DBCSCodePage == 0) - { - /* single-byte code page */ - if (UnicodeSize > (CustomSize * sizeof(WCHAR))) - Size = CustomSize; - else - Size = UnicodeSize / sizeof(WCHAR); + if (NlsMbCodePageTag == FALSE) + { + /* single-byte code page */ + if (UnicodeSize > (MbSize * sizeof(WCHAR))) + Size = MbSize; + else + Size = UnicodeSize / sizeof(WCHAR); - if (ResultSize != NULL) - *ResultSize = Size; + if (ResultSize != NULL) + *ResultSize = Size; - for (i = 0; i < Size; i++) - { - UpcaseChar = RtlUpcaseUnicodeChar(*UnicodeString); - *CustomString = ((PCHAR)CustomCP->WideCharTable)[UpcaseChar]; - CustomString++; - UnicodeString++; - } - } - else - { - /* multi-byte code page */ - /* FIXME */ - ASSERT(FALSE); - } + for (i = 0; i < Size; i++) + { + UpcaseChar = RtlUpcaseUnicodeChar(*UnicodeString); + *MbString = NlsUnicodeToAnsiTable[UpcaseChar]; + MbString++; + UnicodeString++; + } + } + else + { + /* multi-byte code page */ + /* FIXME */ + ASSERT(FALSE); + } - return STATUS_SUCCESS; + return STATUS_SUCCESS; } - /* * @unimplemented */ NTSTATUS NTAPI -RtlUpcaseUnicodeToMultiByteN (PCHAR MbString, - ULONG MbSize, - PULONG ResultSize, - PCWCH UnicodeString, - ULONG UnicodeSize) +RtlUpcaseUnicodeToOemN(PCHAR OemString, + ULONG OemSize, + PULONG ResultSize, + PCWCH UnicodeString, + ULONG UnicodeSize) { - WCHAR UpcaseChar; - ULONG Size = 0; - ULONG i; + WCHAR UpcaseChar; + ULONG Size = 0; + ULONG i; - if (NlsMbCodePageTag == FALSE) - { - /* single-byte code page */ - if (UnicodeSize > (MbSize * sizeof(WCHAR))) - Size = MbSize; - else - Size = UnicodeSize / sizeof(WCHAR); + ASSERT(NlsUnicodeToOemTable != NULL); - if (ResultSize != NULL) - *ResultSize = Size; + if (NlsMbOemCodePageTag == FALSE) + { + /* single-byte code page */ + if (UnicodeSize > (OemSize * sizeof(WCHAR))) + Size = OemSize; + else + Size = UnicodeSize / sizeof(WCHAR); - for (i = 0; i < Size; i++) - { - UpcaseChar = RtlUpcaseUnicodeChar(*UnicodeString); - *MbString = NlsUnicodeToAnsiTable[UpcaseChar]; - MbString++; - UnicodeString++; - } - } - else - { - /* multi-byte code page */ - /* FIXME */ - ASSERT(FALSE); - } + if (ResultSize != NULL) + *ResultSize = Size; - return STATUS_SUCCESS; + for (i = 0; i < Size; i++) + { + UpcaseChar = RtlUpcaseUnicodeChar(*UnicodeString); + *OemString = NlsUnicodeToOemTable[UpcaseChar]; + OemString++; + UnicodeString++; + } + } + else + { + /* multi-byte code page */ + /* FIXME */ + + USHORT WideChar; + USHORT OemChar; + + for (i = OemSize, Size = UnicodeSize / sizeof(WCHAR); i && Size; i--, Size--) + { + WideChar = RtlUpcaseUnicodeChar(*UnicodeString++); + + if (WideChar < 0x80) + { + *OemString++ = LOBYTE(WideChar); + continue; + } + + OemChar = NlsUnicodeToMbOemTable[WideChar]; + + if (!HIBYTE(OemChar)) + { + *OemString++ = LOBYTE(OemChar); + continue; + } + + if (i >= 2) + { + *OemString++ = HIBYTE(OemChar); + *OemString++ = LOBYTE(OemChar); + i--; + } + else break; + } + + if (ResultSize != NULL) + *ResultSize = OemSize - i; + } + + return STATUS_SUCCESS; } - -/* - * @unimplemented - */ -NTSTATUS NTAPI -RtlUpcaseUnicodeToOemN (PCHAR OemString, - ULONG OemSize, - PULONG ResultSize, - PCWCH UnicodeString, - ULONG UnicodeSize) -{ - WCHAR UpcaseChar; - ULONG Size = 0; - ULONG i; - - ASSERT(NlsUnicodeToOemTable != NULL); - - if (NlsMbOemCodePageTag == FALSE) - { - /* single-byte code page */ - if (UnicodeSize > (OemSize * sizeof(WCHAR))) - Size = OemSize; - else - Size = UnicodeSize / sizeof(WCHAR); - - if (ResultSize != NULL) - *ResultSize = Size; - - for (i = 0; i < Size; i++) - { - UpcaseChar = RtlUpcaseUnicodeChar(*UnicodeString); - *OemString = NlsUnicodeToOemTable[UpcaseChar]; - OemString++; - UnicodeString++; - } - } - else - { - /* multi-byte code page */ - /* FIXME */ - - USHORT WideChar; - USHORT OemChar; - - for (i = OemSize, Size = UnicodeSize / sizeof(WCHAR); i && Size; i--, Size--) - { - WideChar = RtlUpcaseUnicodeChar(*UnicodeString++); - - if (WideChar < 0x80) - { - *OemString++ = LOBYTE(WideChar); - continue; - } - - OemChar = NlsUnicodeToMbOemTable[WideChar]; - - if (!HIBYTE(OemChar)) - { - *OemString++ = LOBYTE(OemChar); - continue; - } - - if (i >= 2) - { - *OemString++ = HIBYTE(OemChar); - *OemString++ = LOBYTE(OemChar); - i--; - } - else break; - } - - if (ResultSize != NULL) - *ResultSize = OemSize - i; - } - - return STATUS_SUCCESS; -} - - - /* * @unimplemented */ CHAR NTAPI -RtlUpperChar (IN CHAR Source) +RtlUpperChar(IN CHAR Source) { - WCHAR Unicode; - CHAR Destination; + WCHAR Unicode; + CHAR Destination; - /* Check for simple ANSI case */ - if (Source <= 'z') - { - /* Check for simple downcase a-z case */ - if (Source >= 'a') - { - /* Just XOR with the difference */ - return Source ^ ('a' - 'A'); - } - else - { - /* Otherwise return the same char, it's already upcase */ - return Source; - } - } - else - { + /* Check for simple ANSI case */ + if (Source <= 'z') + { + /* Check for simple downcase a-z case */ + if (Source >= 'a') + { + /* Just XOR with the difference */ + return Source ^ ('a' - 'A'); + } + else + { + /* Otherwise return the same char, it's already upcase */ + return Source; + } + } + else + { if (NlsMbCodePageTag == FALSE) { /* single-byte code page */ @@ -949,9 +915,9 @@ RtlUpperChar (IN CHAR Source) /* FIXME */ Destination = Source; } - } + } - return Destination; + return Destination; } /* EOF */