* FILE: lib/kernel32/misc/utils.c
* PURPOSE: Utility and Support Functions
* PROGRAMMER: Alex Ionescu (alex@relsoft.net)
+ * Pierre Schweitzer (pierre.schweitzer@reactos.org)
*/
/* INCLUDES ****************************************************************/
/* FUNCTIONS ****************************************************************/
-/*
- * Converts an ANSI or OEM String to the specified Unicode String
- */
-NTSTATUS
-WINAPI
-Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString,
- IN LPCSTR String)
-{
- ANSI_STRING AnsiString;
- NTSTATUS Status;
-
- DPRINT("Basep8BitStringToLiveUnicodeString\n");
-
- /* Create the ANSI String */
- RtlInitAnsiString(&AnsiString, String);
-
- /* Convert from OEM or ANSI */
- Status = Basep8BitStringToUnicodeString(UnicodeString, &AnsiString, FALSE);
-
- /* Return Status */
- if (!NT_SUCCESS(Status))
- {
- SetLastErrorByStatus(Status);
- }
- return Status;
-}
-
/*
* Converts an ANSI or OEM String to the TEB StaticUnicodeString
return StaticString;
}
-NTSTATUS
+/*
+ * Allocates space from the Heap and converts an Unicode String into it
+ */
+BOOLEAN
WINAPI
-Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString,
- IN LPCSTR String)
+Basep8BitStringToDynamicUnicodeString(OUT PUNICODE_STRING UnicodeString,
+ IN LPCSTR String)
{
ANSI_STRING AnsiString;
NTSTATUS Status;
- DPRINT("Basep8BitStringToCachedUnicodeString\n");
-
+ DPRINT("Basep8BitStringToDynamicUnicodeString\n");
+
/* Initialize an ANSI String */
- RtlInitAnsiString(&AnsiString, String);
-
+ if (!NT_SUCCESS(RtlInitAnsiStringEx(&AnsiString, String)))
+ {
+ SetLastError(ERROR_BUFFER_OVERFLOW);
+ return FALSE;
+ }
+
/* Convert it */
- Status = Basep8BitStringToUnicodeString(UnicodeString, &AnsiString, TRUE);
-
+ Status = Basep8BitStringToUnicodeString(UnicodeString, &AnsiString, TRUE);
+
/* Handle failure */
if (!NT_SUCCESS(Status))
{
SetLastErrorByStatus(Status);
+ return FALSE;
}
+
/* Return Status */
- return Status;
+ return TRUE;
}
/*