From a1cd3ab6530ff93dbb1186f91c36c98d61b66442 Mon Sep 17 00:00:00 2001 From: Ivan Leo Puoti Date: Mon, 7 Nov 2005 11:14:45 +0000 Subject: [PATCH] Implement RtlInitAnsiStringEx. --- dlls/ntdll/ntdll.spec | 1 + dlls/ntdll/rtlstr.c | 33 +++++++++++++++++++++++++++++++++ include/winternl.h | 1 + 3 files changed, 35 insertions(+) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index fff63963458..04ae9f41079 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -650,6 +650,7 @@ @ stdcall RtlImageRvaToVa(ptr long long ptr) @ stdcall RtlImpersonateSelf(long) @ stdcall RtlInitAnsiString(ptr str) +@ stdcall RtlInitAnsiStringEx(ptr str) @ stub RtlInitCodePageTable # @ stub RtlInitMemoryStream @ stub RtlInitNlsTables diff --git a/dlls/ntdll/rtlstr.c b/dlls/ntdll/rtlstr.c index 6b281cb33df..03b02dccbd2 100644 --- a/dlls/ntdll/rtlstr.c +++ b/dlls/ntdll/rtlstr.c @@ -102,6 +102,39 @@ void WINAPI RtlInitAnsiString( else target->Length = target->MaximumLength = 0; } +/************************************************************************** + * RtlInitAnsiStringEx (NTDLL.@) + * + * Initializes a buffered ansi string. + * + * RETURNS + * An appropriate NTSTATUS value. + * + * NOTES + * Assigns source to target->Buffer. The length of source is assigned to + * target->Length and target->MaximumLength. If source is NULL the length + * of source is assumed to be 0. + */ +NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING target, PCSZ source) +{ + if (source) + { + unsigned int len = strlen(source); + if (len+1 > 0xffff) + return STATUS_NAME_TOO_LONG; + + target->Buffer = (PCHAR) source; + target->Length = len; + target->MaximumLength = len + 1; + } + else + { + target->Buffer = NULL; + target->Length = 0; + target->MaximumLength = 0; + } + return STATUS_SUCCESS; +} /************************************************************************** * RtlInitString (NTDLL.@) diff --git a/include/winternl.h b/include/winternl.h index e8e6998cea3..060f8a7d37a 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -2070,6 +2070,7 @@ PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SE NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); void WINAPI RtlInitString(PSTRING,PCSZ); void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ); +NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ); void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR); NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR); NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);