From cacae6d9a0c5469c916143eb6abcf33c36f370bb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 31 May 2017 03:43:12 +0200 Subject: [PATCH] [SETUPLIB][USETUP] Diverse additions. - Use NT string safe functions. - Add support for other bootloaders; - Update a couple of comments; - Remove deprecated __REACTOS__ #ifdefs. svn path=/branches/setup_improvements/; revision=74713 --- base/setup/lib/fsutil.c | 10 +- base/setup/lib/partlist.c | 54 ++++++----- base/setup/lib/setuplib.h | 6 +- base/setup/usetup/bootsup.c | 177 ++++++++++++++++++++++++------------ base/setup/usetup/usetup.rc | 7 +- 5 files changed, 164 insertions(+), 90 deletions(-) diff --git a/base/setup/lib/fsutil.c b/base/setup/lib/fsutil.c index b1f498a5ad9..bec91c49880 100644 --- a/base/setup/lib/fsutil.c +++ b/base/setup/lib/fsutil.c @@ -127,11 +127,11 @@ _MyGetFileSystem( FileFsAttribute = (PFILE_FS_ATTRIBUTE_INFORMATION)Buffer; /* Set PartitionRootPath */ - swprintf(PathBuffer, - // L"\\Device\\Harddisk%lu\\Partition%lu", // Should work! But because ReactOS sucks atm. it actually doesn't work!! - L"\\Device\\Harddisk%lu\\Partition%lu\\", // HACK: Use this as a temporary hack! - PartEntry->DiskEntry->DiskNumber, - PartEntry->PartitionNumber); + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + // L"\\Device\\Harddisk%lu\\Partition%lu", // Should work! But because ReactOS sucks atm. it actually doesn't work!! + L"\\Device\\Harddisk%lu\\Partition%lu\\", // HACK: Use this as a temporary hack! + PartEntry->DiskEntry->DiskNumber, + PartEntry->PartitionNumber); RtlInitUnicodeString(&PartitionRootPath, PathBuffer); DPRINT("PartitionRootPath: %wZ\n", &PartitionRootPath); diff --git a/base/setup/lib/partlist.c b/base/setup/lib/partlist.c index f29b2859a6a..71fd77a0050 100644 --- a/base/setup/lib/partlist.c +++ b/base/setup/lib/partlist.c @@ -110,9 +110,9 @@ GetDriverName( RtlInitUnicodeString(&DiskEntry->DriverName, NULL); - swprintf(KeyName, - L"\\Scsi\\Scsi Port %hu", - DiskEntry->Port); + RtlStringCchPrintfW(KeyName, ARRAYSIZE(KeyName), + L"\\Scsi\\Scsi Port %hu", + DiskEntry->Port); RtlZeroMemory(&QueryTable, sizeof(QueryTable)); @@ -366,7 +366,9 @@ EnumerateBiosDiskEntries( AdapterCount = 0; while (1) { - swprintf(Name, L"%s\\%lu", ROOT_NAME, AdapterCount); + RtlStringCchPrintfW(Name, ARRAYSIZE(Name), + L"%s\\%lu", + ROOT_NAME, AdapterCount); Status = RtlQueryRegistryValues(RTL_REGISTRY_ABSOLUTE, Name, &QueryTable[2], @@ -377,7 +379,9 @@ EnumerateBiosDiskEntries( break; } - swprintf(Name, L"%s\\%lu\\DiskController", ROOT_NAME, AdapterCount); + RtlStringCchPrintfW(Name, ARRAYSIZE(Name), + L"%s\\%lu\\DiskController", + ROOT_NAME, AdapterCount); Status = RtlQueryRegistryValues(RTL_REGISTRY_ABSOLUTE, Name, &QueryTable[2], @@ -387,7 +391,9 @@ EnumerateBiosDiskEntries( { while (1) { - swprintf(Name, L"%s\\%lu\\DiskController\\0", ROOT_NAME, AdapterCount); + RtlStringCchPrintfW(Name, ARRAYSIZE(Name), + L"%s\\%lu\\DiskController\\0", + ROOT_NAME, AdapterCount); Status = RtlQueryRegistryValues(RTL_REGISTRY_ABSOLUTE, Name, &QueryTable[2], @@ -399,7 +405,9 @@ EnumerateBiosDiskEntries( return; } - swprintf(Name, L"%s\\%lu\\DiskController\\0\\DiskPeripheral", ROOT_NAME, AdapterCount); + RtlStringCchPrintfW(Name, ARRAYSIZE(Name), + L"%s\\%lu\\DiskController\\0\\DiskPeripheral", + ROOT_NAME, AdapterCount); Status = RtlQueryRegistryValues(RTL_REGISTRY_ABSOLUTE, Name, &QueryTable[2], @@ -421,7 +429,9 @@ EnumerateBiosDiskEntries( break; } - swprintf(Name, L"%s\\%lu\\DiskController\\0\\DiskPeripheral\\%lu", ROOT_NAME, AdapterCount, DiskCount); + RtlStringCchPrintfW(Name, ARRAYSIZE(Name), + L"%s\\%lu\\DiskController\\0\\DiskPeripheral\\%lu", + ROOT_NAME, AdapterCount, DiskCount); Status = RtlQueryRegistryValues(RTL_REGISTRY_ABSOLUTE, Name, QueryTable, @@ -974,7 +984,8 @@ AddDiskToList( } Checksum = ~Checksum + 1; - swprintf(Identifier, L"%08x-%08x-A", Checksum, Signature); + RtlStringCchPrintfW(Identifier, ARRAYSIZE(Identifier), + L"%08x-%08x-A", Checksum, Signature); DPRINT("Identifier: %S\n", Identifier); DiskEntry = RtlAllocateHeap(ProcessHeap, @@ -1205,7 +1216,7 @@ CreatePartitionList(VOID) List = (PPARTLIST)RtlAllocateHeap(ProcessHeap, 0, - sizeof (PARTLIST)); + sizeof(PARTLIST)); if (List == NULL) return NULL; @@ -1233,11 +1244,10 @@ CreatePartitionList(VOID) for (DiskNumber = 0; DiskNumber < Sdi.NumberOfDisks; DiskNumber++) { - swprintf(Buffer, - L"\\Device\\Harddisk%d\\Partition0", - DiskNumber); - RtlInitUnicodeString(&Name, - Buffer); + RtlStringCchPrintfW(Buffer, ARRAYSIZE(Buffer), + L"\\Device\\Harddisk%lu\\Partition0", + DiskNumber); + RtlInitUnicodeString(&Name, Buffer); InitializeObjectAttributes(&ObjectAttributes, &Name, @@ -2460,7 +2470,7 @@ DeleteCurrentPartition( RtlFreeHeap(ProcessHeap, 0, PartEntry); /* Remove the next entry */ - RemoveEntryList (&NextPartEntry->ListEntry); + RemoveEntryList(&NextPartEntry->ListEntry); RtlFreeHeap(ProcessHeap, 0, NextPartEntry); /* Update current partition */ @@ -2764,11 +2774,10 @@ WritePartitions( DPRINT("WritePartitions() Disk: %lu\n", DiskEntry->DiskNumber); - swprintf(DstPath, - L"\\Device\\Harddisk%d\\Partition0", - DiskEntry->DiskNumber); - RtlInitUnicodeString(&Name, - DstPath); + RtlStringCchPrintfW(DstPath, ARRAYSIZE(DstPath), + L"\\Device\\Harddisk%lu\\Partition0", + DiskEntry->DiskNumber); + RtlInitUnicodeString(&Name, DstPath); InitializeObjectAttributes(&ObjectAttributes, &Name, 0, @@ -2865,7 +2874,8 @@ SetMountedDeviceValue( NTSTATUS Status; HANDLE KeyHandle; - swprintf(ValueNameBuffer, L"\\DosDevices\\%C:", Letter); + RtlStringCchPrintfW(ValueNameBuffer, ARRAYSIZE(ValueNameBuffer), + L"\\DosDevices\\%C:", Letter); RtlInitUnicodeString(&ValueName, ValueNameBuffer); InitializeObjectAttributes(&ObjectAttributes, diff --git a/base/setup/lib/setuplib.h b/base/setup/lib/setuplib.h index a53fc3cb2d8..bee6e9f87ff 100644 --- a/base/setup/lib/setuplib.h +++ b/base/setup/lib/setuplib.h @@ -14,10 +14,7 @@ #define _INC_WINDOWS #define COM_NO_WINDOWS_H -#include // For LF_FACESIZE and TranslateCharsetInfo() -#include -#include // For code page support -#include +#include #endif @@ -29,6 +26,7 @@ extern HANDLE ProcessHeap; #include "linklist.h" #include "ntverrsrc.h" // #include "arcname.h" +#include "bldrsup.h" #include "filesup.h" #include "fsutil.h" #include "genlist.h" diff --git a/base/setup/usetup/bootsup.c b/base/setup/usetup/bootsup.c index b48d5c0e079..b59767131b7 100644 --- a/base/setup/usetup/bootsup.c +++ b/base/setup/usetup/bootsup.c @@ -435,13 +435,13 @@ CreateFreeLoaderIniForReactOS( static NTSTATUS CreateFreeLoaderIniForReactOSAndBootSector( - PWCHAR IniPath, - PWCHAR ArcPath, - PWCHAR Section, - PWCHAR Description, - PWCHAR BootDrive, - PWCHAR BootPartition, - PWCHAR BootSector) + IN PCWSTR IniPath, + IN PCWSTR ArcPath, + IN PCWSTR Section, + IN PCWSTR Description, + IN PCWSTR BootDrive, + IN PCWSTR BootPartition, + IN PCWSTR BootSector) { PINICACHE IniCache; PINICACHESECTION IniSection; @@ -453,7 +453,7 @@ CreateFreeLoaderIniForReactOSAndBootSector( CreateCommonFreeLoaderSections(IniCache); /* Add the ReactOS entries */ - CreateFreeLoaderReactOSEntries(IniCache, ArcPath); + CreateFreeLoaderReactOSEntries(IniCache, (PWCHAR)ArcPath); /* Get "Operating Systems" section */ IniSection = IniCacheGetSection(IniCache, L"Operating Systems"); @@ -462,11 +462,11 @@ CreateFreeLoaderIniForReactOSAndBootSector( IniCacheInsertKey(IniSection, NULL, INSERT_LAST, - Section, - Description); + (PWCHAR)Section, + (PWCHAR)Description); /* Create new section */ - IniSection = IniCacheAppendSection(IniCache, Section); + IniSection = IniCacheAppendSection(IniCache, (PWCHAR)Section); /* BootType=BootSector */ IniCacheInsertKey(IniSection, @@ -480,24 +480,24 @@ CreateFreeLoaderIniForReactOSAndBootSector( NULL, INSERT_LAST, L"BootDrive", - BootDrive); + (PWCHAR)BootDrive); /* BootPartition= */ IniCacheInsertKey(IniSection, NULL, INSERT_LAST, L"BootPartition", - BootPartition); + (PWCHAR)BootPartition); /* BootSector= */ IniCacheInsertKey(IniSection, NULL, INSERT_LAST, L"BootSectorFile", - BootSector); + (PWCHAR)BootSector); /* Save the INI file */ - IniCacheSave(IniCache, IniPath); + IniCacheSave(IniCache, (PWCHAR)IniPath); IniCacheDestroy(IniCache); return STATUS_SUCCESS; @@ -2260,9 +2260,9 @@ InstallFatBootcodeToPartition( /* FAT or FAT32 partition */ DPRINT("System path: '%wZ'\n", SystemRootPath); - /* Copy FreeLoader to the system partition */ + /* Copy FreeLoader to the system partition, always overwriting the older version */ CombinePaths(SrcPath, ARRAYSIZE(SrcPath), 2, SourceRootPath->Buffer, L"\\loader\\freeldr.sys"); - CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"\\freeldr.sys"); + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"freeldr.sys"); DPRINT("Copy: %S ==> %S\n", SrcPath, DstPath); Status = SetupCopyFile(SrcPath, DstPath); @@ -2272,8 +2272,8 @@ InstallFatBootcodeToPartition( return Status; } - /* Prepare for possibly copying 'freeldr.ini' */ - CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"\\freeldr.ini"); + /* Prepare for possibly updating 'freeldr.ini' */ + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"freeldr.ini"); DoesFreeLdrExist = DoesFileExist(NULL, DstPath); if (DoesFreeLdrExist) @@ -2292,10 +2292,12 @@ InstallFatBootcodeToPartition( /* Check for NT and other bootloaders */ // FIXME: Check for Vista+ bootloader! - if (DoesFileExist_2(SystemRootPath->Buffer, L"ntldr") == TRUE || - DoesFileExist_2(SystemRootPath->Buffer, L"boot.ini") == TRUE) + /*** Status = FindNTOSBootLoader(PartitionHandle, NtLdr, &Version); ***/ + /*** Status = FindNTOSBootLoader(PartitionHandle, BootMgr, &Version); ***/ + if (DoesFileExist_2(SystemRootPath->Buffer, L"NTLDR") == TRUE || + DoesFileExist_2(SystemRootPath->Buffer, L"BOOT.INI") == TRUE) { - /* Search root directory for 'ntldr' and 'boot.ini' */ + /* Search root directory for 'NTLDR' and 'BOOT.INI' */ DPRINT1("Found Microsoft Windows NT/2000/XP boot loader\n"); /* Create or update 'freeldr.ini' */ @@ -2303,7 +2305,7 @@ InstallFatBootcodeToPartition( { /* Create new 'freeldr.ini' */ DPRINT1("Create new 'freeldr.ini'\n"); - // CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"\\freeldr.ini"); + // CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"freeldr.ini"); Status = CreateFreeLoaderIniForReactOS(DstPath, DestinationArcPath->Buffer); if (!NT_SUCCESS(Status)) @@ -2313,7 +2315,7 @@ InstallFatBootcodeToPartition( } /* Install new bootcode into a file */ - CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"\\bootsect.ros"); + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"bootsect.ros"); if (PartitionType == PARTITION_FAT32 || PartitionType == PARTITION_FAT32_XINT13) @@ -2347,7 +2349,7 @@ InstallFatBootcodeToPartition( } /* Update 'boot.ini' */ - CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"\\boot.ini"); + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"boot.ini"); DPRINT1("Update 'boot.ini': %S\n", DstPath); Status = UpdateBootIni(DstPath, @@ -2363,31 +2365,97 @@ InstallFatBootcodeToPartition( { /* Non-NT bootloaders: install our own bootloader */ - PWCHAR Section; - PWCHAR Description; - PWCHAR BootDrive; - PWCHAR BootPartition; - PWCHAR BootSector; - PWCHAR BootSectorFileName; + PCWSTR Section; + PCWSTR Description; + PCWSTR BootDrive; + PCWSTR BootPartition; + PCWSTR BootSector; - if (DoesFileExist_2(SystemRootPath->Buffer, L"io.sys") == TRUE || - DoesFileExist_2(SystemRootPath->Buffer, L"msdos.sys") == TRUE) + /* Search for COMPAQ MS-DOS 1.x (1.11, 1.12, based on MS-DOS 1.25) boot loader */ + if (DoesFileExist_2(SystemRootPath->Buffer, L"IOSYS.COM") == TRUE || + DoesFileExist_2(SystemRootPath->Buffer, L"MSDOS.COM") == TRUE) + { + DPRINT1("Found COMPAQ MS-DOS 1.x (1.11, 1.12) / MS-DOS 1.25 boot loader\n"); + + Section = L"DOS"; + Description = L"\"COMPAQ MS-DOS 1.x / MS-DOS 1.25\""; + BootDrive = L"hd0"; + BootPartition = L"1"; + BootSector = L"BOOTSECT.DOS"; + } + else + /* Search for Microsoft DOS or Windows 9x boot loader */ + if (DoesFileExist_2(SystemRootPath->Buffer, L"IO.SYS") == TRUE || + DoesFileExist_2(SystemRootPath->Buffer, L"MSDOS.SYS") == TRUE) + // WINBOOT.SYS { - /* Search for root directory for 'io.sys' and 'msdos.sys' */ DPRINT1("Found Microsoft DOS or Windows 9x boot loader\n"); Section = L"DOS"; - Description = L"\"DOS/Windows\""; + Description = L"\"MS-DOS/Windows\""; + BootDrive = L"hd0"; + BootPartition = L"1"; + BootSector = L"BOOTSECT.DOS"; + } + else + /* Search for IBM PC-DOS or DR-DOS 5.x boot loader */ + if (DoesFileExist_2(SystemRootPath->Buffer, L"IBMIO.COM" ) == TRUE || // Some people refer to this file instead of IBMBIO.COM... + DoesFileExist_2(SystemRootPath->Buffer, L"IBMBIO.COM") == TRUE || + DoesFileExist_2(SystemRootPath->Buffer, L"IBMDOS.COM") == TRUE) + { + DPRINT1("Found IBM PC-DOS or DR-DOS 5.x or IBM OS/2 1.0\n"); + + Section = L"DOS"; + Description = L"\"IBM PC-DOS or DR-DOS 5.x or IBM OS/2 1.0\""; BootDrive = L"hd0"; BootPartition = L"1"; BootSector = L"BOOTSECT.DOS"; + } + else + /* Search for DR-DOS 3.x boot loader */ + if (DoesFileExist_2(SystemRootPath->Buffer, L"DRBIOS.SYS") == TRUE || + DoesFileExist_2(SystemRootPath->Buffer, L"DRBDOS.SYS") == TRUE) + { + DPRINT1("Found DR-DOS 3.x\n"); + + Section = L"DOS"; + Description = L"\"DR-DOS 3.x\""; + BootDrive = L"hd0"; + BootPartition = L"1"; + BootSector = L"BOOTSECT.DOS"; + } + else + /* Search for MS OS/2 1.x */ + if (DoesFileExist_2(SystemRootPath->Buffer, L"OS2BOOT.COM") == TRUE || + DoesFileExist_2(SystemRootPath->Buffer, L"OS2BIO.COM" ) == TRUE || + DoesFileExist_2(SystemRootPath->Buffer, L"OS2DOS.COM" ) == TRUE) + { + DPRINT1("Found MS OS/2 1.x\n"); + + Section = L"DOS"; + Description = L"\"MS OS/2 1.x\""; + BootDrive = L"hd0"; + BootPartition = L"1"; + BootSector = L"BOOTSECT.OS2"; + } + else + /* Search for MS or IBM OS/2 */ + if (DoesFileExist_2(SystemRootPath->Buffer, L"OS2BOOT") == TRUE || + DoesFileExist_2(SystemRootPath->Buffer, L"OS2LDR" ) == TRUE || + DoesFileExist_2(SystemRootPath->Buffer, L"OS2KRNL") == TRUE) + { + DPRINT1("Found MS/IBM OS/2\n"); - BootSectorFileName = L"\\bootsect.dos"; + Section = L"DOS"; + Description = L"\"MS/IBM OS/2\""; + BootDrive = L"hd0"; + BootPartition = L"1"; + BootSector = L"BOOTSECT.OS2"; } else + /* Search for FreeDOS boot loader */ if (DoesFileExist_2(SystemRootPath->Buffer, L"kernel.sys") == TRUE) { - /* Search for root directory for 'kernel.sys' */ DPRINT1("Found FreeDOS boot loader\n"); Section = L"DOS"; @@ -2395,8 +2463,6 @@ InstallFatBootcodeToPartition( BootDrive = L"hd0"; BootPartition = L"1"; BootSector = L"BOOTSECT.DOS"; - - BootSectorFileName = L"\\bootsect.dos"; } else { @@ -2408,8 +2474,6 @@ InstallFatBootcodeToPartition( BootDrive = L"hd0"; BootPartition = L"1"; BootSector = L"BOOTSECT.OLD"; - - BootSectorFileName = L"\\bootsect.old"; } /* Create or update 'freeldr.ini' */ @@ -2417,7 +2481,7 @@ InstallFatBootcodeToPartition( { /* Create new 'freeldr.ini' */ DPRINT1("Create new 'freeldr.ini'\n"); - // CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"\\freeldr.ini"); + // CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"freeldr.ini"); if (IsThereAValidBootSector(SystemRootPath->Buffer)) { @@ -2432,7 +2496,7 @@ InstallFatBootcodeToPartition( } /* Save current bootsector */ - CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, BootSectorFileName); + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, BootSector); DPRINT1("Save bootsector: %S ==> %S\n", SystemRootPath->Buffer, DstPath); Status = SaveBootSector(SystemRootPath->Buffer, DstPath, SECTORSIZE); @@ -2502,9 +2566,9 @@ InstallExt2BootcodeToPartition( /* EXT2 partition */ DPRINT("System path: '%wZ'\n", SystemRootPath); - /* Copy FreeLoader to the system partition */ + /* Copy FreeLoader to the system partition, always overwriting the older version */ CombinePaths(SrcPath, ARRAYSIZE(SrcPath), 2, SourceRootPath->Buffer, L"\\loader\\freeldr.sys"); - CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"\\freeldr.sys"); + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"freeldr.sys"); DPRINT("Copy: %S ==> %S\n", SrcPath, DstPath); Status = SetupCopyFile(SrcPath, DstPath); @@ -2515,7 +2579,7 @@ InstallExt2BootcodeToPartition( } /* Prepare for possibly copying 'freeldr.ini' */ - CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"\\freeldr.ini"); + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"freeldr.ini"); DoesFreeLdrExist = DoesFileExist(NULL, DstPath); if (DoesFreeLdrExist) @@ -2545,10 +2609,12 @@ InstallExt2BootcodeToPartition( if (IsThereAValidBootSector(SystemRootPath->Buffer)) { + PCWSTR BootSector = L"BOOTSECT.OLD"; + Status = CreateFreeLoaderIniForReactOSAndBootSector( DstPath, DestinationArcPath->Buffer, L"Linux", L"\"Linux\"", - L"hd0", L"1", L"BOOTSECT.OLD"); + L"hd0", L"1", BootSector); if (!NT_SUCCESS(Status)) { DPRINT1("CreateFreeLoaderIniForReactOSAndBootSector() failed (Status %lx)\n", Status); @@ -2556,7 +2622,7 @@ InstallExt2BootcodeToPartition( } /* Save current bootsector */ - CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"\\bootsect.old"); + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, BootSector); DPRINT1("Save bootsector: %S ==> %S\n", SystemRootPath->Buffer, DstPath); Status = SaveBootSector(SystemRootPath->Buffer, DstPath, sizeof(EXT2_BOOTSECTOR)); @@ -2627,6 +2693,7 @@ InstallVBRToPartition( } case PARTITION_IFS: + DPRINT1("Partitions of type NTFS or HPFS are not supported yet!\n"); break; default: @@ -2645,7 +2712,7 @@ InstallFatBootcodeToFloppy( { NTSTATUS Status; PFILE_SYSTEM FatFS; - UNICODE_STRING FloppyDevice = RTL_CONSTANT_STRING(L"\\Device\\Floppy0"); + UNICODE_STRING FloppyDevice = RTL_CONSTANT_STRING(L"\\Device\\Floppy0\\"); WCHAR SrcPath[MAX_PATH]; WCHAR DstPath[MAX_PATH]; @@ -2670,8 +2737,7 @@ InstallFatBootcodeToFloppy( /* Copy FreeLoader to the boot partition */ CombinePaths(SrcPath, ARRAYSIZE(SrcPath), 2, SourceRootPath->Buffer, L"\\loader\\freeldr.sys"); - - RtlStringCchCopyW(DstPath, ARRAYSIZE(DstPath), L"\\Device\\Floppy0\\freeldr.sys"); + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, FloppyDevice.Buffer, L"freeldr.sys"); DPRINT("Copy: %S ==> %S\n", SrcPath, DstPath); Status = SetupCopyFile(SrcPath, DstPath); @@ -2682,7 +2748,7 @@ InstallFatBootcodeToFloppy( } /* Create new 'freeldr.ini' */ - RtlStringCchCopyW(DstPath, ARRAYSIZE(DstPath), L"\\Device\\Floppy0\\freeldr.ini"); + CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, FloppyDevice.Buffer, L"freeldr.ini"); DPRINT("Create new 'freeldr.ini'\n"); Status = CreateFreeLoaderIniForReactOS(DstPath, DestinationArcPath->Buffer); @@ -2692,16 +2758,15 @@ InstallFatBootcodeToFloppy( return Status; } - /* Install FAT12/16 boosector */ + /* Install FAT12 boosector */ CombinePaths(SrcPath, ARRAYSIZE(SrcPath), 2, SourceRootPath->Buffer, L"\\loader\\fat.bin"); - - RtlStringCchCopyW(DstPath, ARRAYSIZE(DstPath), L"\\Device\\Floppy0"); + RtlStringCchCopyW(DstPath, ARRAYSIZE(DstPath), FloppyDevice.Buffer); DPRINT("Install FAT bootcode: %S ==> %S\n", SrcPath, DstPath); Status = InstallFat12BootCodeToFloppy(SrcPath, DstPath); if (!NT_SUCCESS(Status)) { - DPRINT1("InstallFat16BootCodeToDisk() failed (Status %lx)\n", Status); + DPRINT1("InstallFat12BootCodeToFloppy() failed (Status %lx)\n", Status); return Status; } diff --git a/base/setup/usetup/usetup.rc b/base/setup/usetup/usetup.rc index d7347f31b9c..0d9d304e547 100644 --- a/base/setup/usetup/usetup.rc +++ b/base/setup/usetup/usetup.rc @@ -1,4 +1,5 @@ -#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Setup" -#define REACTOS_STR_INTERNAL_NAME "usetup" -#define REACTOS_STR_ORIGINAL_FILENAME "usetup.exe" + +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Text-Mode Setup" +#define REACTOS_STR_INTERNAL_NAME "usetup" +#define REACTOS_STR_ORIGINAL_FILENAME "usetup.exe" #include -- 2.17.1