From 6b6163a5d9e64ed980b36f757b0b96043e25520a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 30 May 2017 00:15:54 +0000 Subject: [PATCH] [USETUP] Minor fixes & simplifications. - Remove a redundant NtClose() call; - Return failure if NtQuerySymbolicLinkObject() fails; - Use RTL_CONSTANT_STRING and RtlInitEmptyUnicodeString() where needed; - Reduce code indent level; - Add old-style function annotations; - Remove the deprecated code copyright notice, since the copyright in usage is already reported in the COPYING file in the top level ReactOS source code directory. svn path=/branches/setup_improvements/; revision=74698 --- base/setup/usetup/drivesup.c | 75 +++++++++++++----------------------- base/setup/usetup/drivesup.h | 24 ++---------- 2 files changed, 29 insertions(+), 70 deletions(-) diff --git a/base/setup/usetup/drivesup.c b/base/setup/usetup/drivesup.c index c81b987fc1c..b8561d77ed1 100644 --- a/base/setup/usetup/drivesup.c +++ b/base/setup/usetup/drivesup.c @@ -1,21 +1,3 @@ -/* - * 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 @@ -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) { - OBJECT_ATTRIBUTES ObjectAttributes; - UNICODE_STRING LinkName; - UNICODE_STRING SourceName; - WCHAR SourceBuffer[MAX_PATH] = {L'\0'}; - HANDLE Handle; NTSTATUS Status; + OBJECT_ATTRIBUTES ObjectAttributes; + UNICODE_STRING LinkName = RTL_CONSTANT_STRING(L"\\SystemRoot"); + UNICODE_STRING SourceName; + WCHAR SourceBuffer[MAX_PATH] = L""; + HANDLE Handle; 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)) + if (!NT_SUCCESS(Status)) + return Status; + + RtlCreateUnicodeString(SourcePath, + SourceName.Buffer); + + /* Strip trailing directory */ + Ptr = wcsrchr(SourceName.Buffer, OBJ_NAME_PATH_SEPARATOR); + if (Ptr) { - RtlCreateUnicodeString(SourcePath, - SourceName.Buffer); - - /* strip trailing directory */ - Ptr = wcsrchr(SourceName.Buffer, L'\\'); - if (Ptr) - { - RtlCreateUnicodeString(SourceRootDir, Ptr); - *Ptr = 0; - } - else - RtlCreateUnicodeString(SourceRootDir, L""); - - RtlCreateUnicodeString(SourceRootPath, - SourceName.Buffer); + RtlCreateUnicodeString(SourceRootDir, Ptr); + *Ptr = UNICODE_NULL; + } + else + { + RtlCreateUnicodeString(SourceRootDir, L""); } - NtClose(Handle); + RtlCreateUnicodeString(SourceRootPath, + SourceName.Buffer); return STATUS_SUCCESS; } diff --git a/base/setup/usetup/drivesup.h b/base/setup/usetup/drivesup.h index 5cd200d8fcc..01b38a3c575 100644 --- a/base/setup/usetup/drivesup.h +++ b/base/setup/usetup/drivesup.h @@ -1,21 +1,3 @@ -/* - * 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 @@ -28,8 +10,8 @@ NTSTATUS GetSourcePaths( - PUNICODE_STRING SourcePath, - PUNICODE_STRING SourceRootPath, - PUNICODE_STRING SourceRootDir); + OUT PUNICODE_STRING SourcePath, + OUT PUNICODE_STRING SourceRootPath, + OUT PUNICODE_STRING SourceRootDir); /* EOF */