static
VOID FASTCALL EnvironmentStringToUnicodeString (PWCHAR wsIn, PUNICODE_STRING usOut)
{
- if (wsIn)
- {
- PWCHAR CurrentChar = wsIn;
-
- while (*CurrentChar)
- {
- while(*CurrentChar++);
- }
- /* double nullterm at end */
- CurrentChar++;
-
- usOut->Buffer = wsIn;
- /* FIXME: the last (double) nullterm should perhaps not be included in Length
- * but only in MaximumLength. -Gunnar */
- usOut->MaximumLength = usOut->Length = (CurrentChar-wsIn) * sizeof(WCHAR);
- }
- else
- {
- usOut->Buffer = NULL;
- usOut->Length = usOut->MaximumLength = 0;
- }
+ if (wsIn)
+ {
+ PWCHAR CurrentChar = wsIn;
+
+ while (*CurrentChar)
+ {
+ while(*CurrentChar++);
+ }
+ /* double nullterm at end */
+ CurrentChar++;
+
+ usOut->Buffer = wsIn;
+ /* FIXME: the last (double) nullterm should perhaps not be included in Length
+ * but only in MaximumLength. -Gunnar */
+ usOut->MaximumLength = usOut->Length = (CurrentChar-wsIn) * sizeof(WCHAR);
+ }
+ else
+ {
+ usOut->Buffer = NULL;
+ usOut->Length = usOut->MaximumLength = 0;
+ }
}
ArgumentList = RtlAllocateHeap(RtlGetProcessHeap(), 0, 512 * sizeof(PCHAR));
if (!ArgumentList)
{
- DPRINT1("ERR: no mem!");
- Status = STATUS_NO_MEMORY;
- goto fail;
+ DPRINT1("ERR: no mem!");
+ Status = STATUS_NO_MEMORY;
+ goto fail;
}
/* Use a null pointer as default */
Status = RtlUnicodeStringToAnsiString(&AnsiCmdLine, CmdLineString, TRUE);
if (!NT_SUCCESS(Status))
{
- DPRINT1("ERR: no mem(guess)\n");
- goto fail;
+ DPRINT1("ERR: no mem(guess)\n");
+ goto fail;
}
/* Save parameters for parsing */
{
/* Allocate a buffer for the destination */
Destination = RtlAllocateHeap(RtlGetProcessHeap(), 0, Length + sizeof(WCHAR));
- if (!Destination)
- {
- DPRINT1("ERR: no mem!");
- Status = STATUS_NO_MEMORY;
- goto fail;
- }
+ if (!Destination)
+ {
+ DPRINT1("ERR: no mem!");
+ Status = STATUS_NO_MEMORY;
+ goto fail;
+ }
/* Start parsing */
while (*Source)
/* Null terminate the token pointer list */
*ArgumentList++ = NULL;
- /* Now handle the enviornment, point the envp at our current list location. */
+ /* Now handle the environment, point the envp at our current list location. */
envp = ArgumentList;
if (ProcessParameters->Environment)
{
- EnvironmentStringToUnicodeString(ProcessParameters->Environment, &UnicodeEnvironment);
- Status = RtlUnicodeStringToAnsiString (& AnsiEnvironment, & UnicodeEnvironment, TRUE);
- if (!NT_SUCCESS(Status))
- {
- DPRINT1("ERR: no mem(guess)\n");
- goto fail;
- }
-
- ASSERT(AnsiEnvironment.Buffer);
-
- Source = AnsiEnvironment.Buffer;
- while (*Source)
- {
- /* Save a pointer to this token */
- *ArgumentList++ = Source;
-
- /* Keep looking for another variable */
- while (*Source++);
- }
-
- /* Null terminate the list again */
- *ArgumentList++ = NULL;
+ EnvironmentStringToUnicodeString(ProcessParameters->Environment, &UnicodeEnvironment);
+ Status = RtlUnicodeStringToAnsiString (& AnsiEnvironment, & UnicodeEnvironment, TRUE);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT1("ERR: no mem(guess)\n");
+ goto fail;
+ }
+
+ ASSERT(AnsiEnvironment.Buffer);
+
+ Source = AnsiEnvironment.Buffer;
+ while (*Source)
+ {
+ /* Save a pointer to this token */
+ *ArgumentList++ = Source;
+
+ /* Keep looking for another variable */
+ while (*Source++);
+ }
+
+ /* Null terminate the list again */
+ *ArgumentList++ = NULL;
}
/* Breakpoint if we were requested to do so */
if (ProcessParameters->DebugFlags) DbgBreakPoint();