X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=base%2Fsetup%2Fusetup%2Fdrivesup.c;h=b8561d77ed1ee9790b5a230261734ed81f11084b;hp=b57343028851e25dc10468b82bcfe956d0c02897;hb=49d3daf1af625e360145f4f4ada24a48427524d4;hpb=66000022832126b73fcc375138769070bea818ac diff --git a/base/setup/usetup/drivesup.c b/base/setup/usetup/drivesup.c index b5734302885..b8561d77ed1 100644 --- a/base/setup/usetup/drivesup.c +++ b/base/setup/usetup/drivesup.c @@ -1,27 +1,9 @@ -/* - * ReactOS kernel - * Copyright (C) 2002 ReactOS Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ /* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS text-mode setup - * FILE: subsys/system/usetup/drivesup.c + * FILE: base/setup/usetup/drivesup.c * PURPOSE: Drive support functions - * PROGRAMMER: Eric Kohl + * PROGRAMMER: */ /* INCLUDES *****************************************************************/ @@ -35,22 +17,19 @@ NTSTATUS GetSourcePaths( - PUNICODE_STRING SourcePath, - PUNICODE_STRING SourceRootPath, - PUNICODE_STRING SourceRootDir) + OUT PUNICODE_STRING SourcePath, + OUT PUNICODE_STRING SourceRootPath, + OUT PUNICODE_STRING SourceRootDir) { + NTSTATUS Status; OBJECT_ATTRIBUTES ObjectAttributes; - UNICODE_STRING LinkName; + UNICODE_STRING LinkName = RTL_CONSTANT_STRING(L"\\SystemRoot"); UNICODE_STRING SourceName; - WCHAR SourceBuffer[MAX_PATH] = {L'\0'}; + WCHAR SourceBuffer[MAX_PATH] = L""; HANDLE Handle; - NTSTATUS Status; ULONG Length; PWCHAR Ptr; - RtlInitUnicodeString(&LinkName, - L"\\SystemRoot"); - InitializeObjectAttributes(&ObjectAttributes, &LinkName, OBJ_CASE_INSENSITIVE, @@ -63,35 +42,33 @@ GetSourcePaths( if (!NT_SUCCESS(Status)) return Status; - SourceName.Length = 0; - SourceName.MaximumLength = MAX_PATH * sizeof(WCHAR); - SourceName.Buffer = SourceBuffer; + RtlInitEmptyUnicodeString(&SourceName, SourceBuffer, sizeof(SourceBuffer)); Status = NtQuerySymbolicLinkObject(Handle, &SourceName, &Length); NtClose(Handle); - if (NT_SUCCESS(Status)) - { - RtlCreateUnicodeString(SourcePath, - SourceName.Buffer); + if (!NT_SUCCESS(Status)) + return Status; - /* strip trailing directory */ - Ptr = wcsrchr(SourceName.Buffer, L'\\'); - if (Ptr) - { - RtlCreateUnicodeString(SourceRootDir, Ptr); - *Ptr = 0; - } - else - RtlCreateUnicodeString(SourceRootDir, L""); + RtlCreateUnicodeString(SourcePath, + SourceName.Buffer); - RtlCreateUnicodeString(SourceRootPath, - SourceName.Buffer); + /* Strip trailing directory */ + Ptr = wcsrchr(SourceName.Buffer, OBJ_NAME_PATH_SEPARATOR); + if (Ptr) + { + RtlCreateUnicodeString(SourceRootDir, Ptr); + *Ptr = UNICODE_NULL; + } + else + { + RtlCreateUnicodeString(SourceRootDir, L""); } - NtClose(Handle); + RtlCreateUnicodeString(SourceRootPath, + SourceName.Buffer); return STATUS_SUCCESS; }