Commit graph

154 commits

Author SHA1 Message Date
Timo Kreuzer 85616bc8b2 [SETUP] Add support for archtitcure specific inf sections and use it for x64 computer type 2019-09-08 10:42:16 +02:00
Hermès Bélusca-Maïto 59acff79e5
[SETUPLIB][USETUP] Slightly modify how and when the HW system partition is detected and used.
CORE-16274

SETUPLIB:
=========

- Find the system partition initially when we create the list of
  partitions.

- Split the old CheckActiveSystemPartition() helper in two helpers:
  FindSupportedSystemPartition() and SetActivePartition(). This allows
  simplifying slightly the former one, and allows the user, in an
  interactive situation, to decide whether the "supported system
  partition" found can actually be used or not.

- Remove the "OriginalSystemPartition" hack in the PARTLIST structure.
- Add a note regarding the SystemPartition member in PARTLIST.

USETUP:
=======

- Use the introduced helpers from above. If the "system" partition we
  are going to use, in case we install ReactOS on a fixed disk, is *NOT*
  the same as the original one (e.g. because it is detected to be not
  supported by ReactOS...), display an informative screen to the user
  and let him confirm whether or not he wants to change the partition.

If we install on a fixed disk, try to find a supported system partition
on the system. Otherwise if we install on a removable disk, use the
install partition as the system partition instead.

This allows providing a fix for CORE-16274.
2019-08-25 02:38:53 +02:00
Hermès Bélusca-Maïto 626c654a10
[SETUPLIB][USETUP] Code simplifications & fixes.
SETUPLIB:
=========

- Remove useless HiddenSectors member in PARTENTRY structure.
- InsertDiskRegion() helper returns a BOOLEAN success.
- CreateInsertBlankRegion() helper sets LogicalPartition.

- Simplify the InitializePartitionEntry() helper so that its PartEntry
  parameter is clearly the one that is being initialized (i.e. converted
  from a blank region to) an actual partition, and use the helper
  CreateInsertBlankRegion(). The calculations for the StartSector and
  SectorCount are exactly equivalent with the old version of this
  function. Also make it return a BOOLEAN success instead.
  + Add some extra validation checks.
  + Adjust CreatePrimaryPartition(), CreateExtendedPartition() and
    CreateLogicalPartition() in this regard.

- Better handling of "RAW"-mounted partitions: treat them as
  "Unformatted" only if they are RAW *AND* their PartitionType is one of
  those associated with FAT file-system. Otherwise we cannot decide
  whether they are indeed unformatted or have an unknown file-system on
  them, therefore treat them as the latter.
  In this regard, the IsSupportedActivePartition() helper should not
  look for FileSystem == RAW but instead only look whether the partition
  is Unformatted.

  This should help with situations similar to the one described in CORE-16274
  where a partition with a genuine file-system but not recognized by
  ReactOS (because we currently do not have the EXT2/3/4 filesystem
  driver loaded during 1st-stage setup due to commit 5a650f6b) and
  therefore mounted as RAW, was thought to be unformatted.

USETUP:
=======
- Use the "global" SystemPartition pointer: this is the "system"
  partition we will actually use. It can be different from the actual
  one of the computer, for example when we install ReactOS on a
  removable disk. This allows also to simplify the code.

- Remove the single-used DestinationDriveLetter variable.

- Remove BuildInstallPaths() helper and use InitDestinationPaths()
  directly instead.

- Always mention the disk where the partition being formatted is.
- Cleanup old code comments, add assertions here & there...
2019-08-25 02:38:52 +02:00
Bișoc George 2fbff73792 [USETUP] Localize the rest of the hardcoded error message strings 2019-08-17 21:34:39 +02:00
Timo Kreuzer 7611cc2b12 [REACTOS] Fix SIZE_T related warnings 2019-08-15 14:20:00 +02:00
Katayama Hirofumi MZ 10c08e1d62
[SETUP][BOOTDATA][INF] Helvetica-to-Arial substitutes (#1809)
Set the destinations of "Helvetica" font substitutes to "Arial". CORE-16264
2019-08-07 19:02:38 +09:00
Katayama Hirofumi MZ 257aed0e69
[SETUP][BOOTDATA][INF] Delete Tahoma-to-Tahoma substitutes (#1808)
Delete loopy Tahoma-to-Tahoma font substitutes. CORE-16264
2019-08-07 19:01:25 +09:00
Katayama Hirofumi MZ 3f1ab92d3a
[SETUP][INF] Helvetica must be substitute to Arial font (#1803)
Helvetica must be font substitute to Arial font.

- Change some Helvetica substitutes to "Arial" from "Liberation Sans". Not all Helvetica. Some languages are lacking support.
2019-08-05 19:55:00 +09:00
Katayama Hirofumi MZ 5bbc2c6308
[SETUP][INF] Fix font substitutes (#1794)
Fix font substitutes. CORE-16264

- Modify muifonts.h.
- Modify font.inf.
2019-08-04 16:10:15 +09:00
Katayama Hirofumi MZ dc1aa8010a
[FONTS][SETUP][BOOTDATA] Add Lucida Console font (#1793)
Add "Lucida Console" fonts. CORE-16264

- Add "Lucida Console" font by duplicating "DejaVu Sans Mono" font and renaming it.
- Delete some "Lucida Console" font substitutes.
- Add LICENSE file.

I used FontForge to rename it. Its family name is "Lucida Console". Its display name is "Lucida Console". Its font filename is lucon.ttf. The Underline Positions are hacked by adding an integer value for workaround of FontForge's bug.
2019-08-04 15:38:45 +09:00
Katayama Hirofumi MZ 04a361d091
[FONTS][SETUP] Add Trebuchet MS fonts (#1791)
Add "Trebuchet MS" fonts. CORE-16272

- Add "Trebuchet MS", "Trebuchet MS Bold", "Trebuchet MS Bold Italic" and "Trebuchet MS Italic" fonts by duplicating "Open Sans" fonts and renaming them.
- Delete some "Trebuchet MS" font substitutes.
- Add LICENSE file.

I made these font files by using FontForge. Their family name is "Trebuchet MS". Their display names are "Trebuchet MS", "Trebuchet MS Bold", "Trebuchet MS Bold Italic" and "Trebuchet MS Italic". Their font filenames are trebuc.ttf, trebucbd.ttf, trebucbi.ttf and trebucit.ttf. The Underline Positions are hacked by adding an integer value for workaround of FontForge's bug.
2019-08-04 12:11:55 +09:00
Katayama Hirofumi MZ dbb4432b25
[FONTS][SETUP][BOOTDATA] Add Times New Roman fonts (#1790)
Add "Times New Roman" fonts. CORE-16272

- Add "Times New Roman" and "Times New Roman Italic" fonts by duplicating "Liberation Serif" fonts and renaming them.
- Delete some "Times New Roman" font substitutes.
- Add LICENSE file.

I made these font files by using FontForge. Their family name is "Times New Roman". Their display names are "Times New Roman", "Times New Roman Bold", "Times New Roman Bold Italic" and "Times New Roman Italic". Their font filenames are times.ttf, timesbd.ttf, timesbi.ttf and timesi.ttf. The Underline Positions are hacked by adding an integer value for workaround of FontForge's bug.
2019-08-04 11:22:51 +09:00
Katayama Hirofumi MZ 23faa89d09
[FONTS][SETUP] Add Franklin Gothic Medium fonts (#1786)
Add "Franklin Gothic Medium" fonts. CORE-16272

- Add "Franklin Gothic Medium" and "Franklin Gothic Medium Italic" fonts by duplicating Alexei Vanyashin's "Libre Franklin" fonts and renaming them.
- Delete some "Franklin Gothic Medium" font substitutes.
- Add LICENSE file.

I made these font files by using FontForge. Their family name is "Franklin Gothic Medium". Their display names are "Franklin Gothic Medium" and "Franklin Gothic Medium Italic". Their font filenames are framd.ttf and framdit.ttf. The Underline Positions are hacked by adding an integer value for workaround of FontForge's bug.

Alexei Vanyashin's "Libre Franklin" fonts are available at https://github.com/alexeiva/Libre-Franklin .
2019-08-03 19:03:27 +09:00
Katayama Hirofumi MZ bb1878157b
[FONTS][SETUP] Add Palatino Linotype fonts (#1785)
Add "Palatino Linotype" fonts. CORE-16272

- Add "Palatino Linotype", "Palatino Linotype Bold", "Palatino Linotype Bold Italic" and "Palatino Linotype Italic" fonts by duplicating "DejaVu Serif" fonts and renaming them.
- Delete some "Palatino Linotype" font substitutes.
- Add LICENSE file.

I made these font files by using FontForge. Their family name is "Palatino Linotype". Their display names are "Palatino Linotype", "Palatino Linotype Bold", "Palatino Linotype Bold Italic" and "Palatino Linotype Italic". Their font filenames are pala.ttf, palab.ttf, palabi.ttf and palai.ttf. The Underline Positions are hacked by adding an integer value for workaround of FontForge's bug.
2019-08-03 16:24:32 +09:00
Katayama Hirofumi MZ e282f99ce5
[FONTS][SETUP] Add Geogia fonts (#1784)
Add "Geogia" fonts. CORE-16272

- Add "Geogia", "Geogia Bold", "Geogia Bold Italic" and "Geogia Italic" fonts by duplicating FreeSerif fonts and renaming them.
- Delete some "Geogia" font substitutes.
- Add LICENSE file.

I made these font files by using FontForge. Their family name is "Geogia". Their display names are "Geogia", "Geogia Bold", "Geogia Bold Italic" and "Geogia Italic". Their font filenames are georgia.ttf, georgiab.ttf, georgiaz.ttf and georgiai.ttf. The Underline Positions are hacked by adding an integer value for workaround of FontForge's bug.
2019-08-03 10:43:09 +09:00
Katayama Hirofumi MZ faa3237d46
[FONTS][BOOTDATA][SETUP] Add Courier New fonts (#1783)
Add "Courier New" fonts. CORE-16272

- Add "Courier New", "Courier New Bold", "Courier New Bold Italic" and "Courier New Italic" fonts by duplicating FreeMono fonts and renaming them.
- Delete some "Courier New" font substitutes.
- Add LICENSE file.

I made these font files by using FontForge. Their family name is "Courier New". Their display names are "Courier New", "Courier New Bold", "Courier New Bold Italic" and "Courier New Italic". Their font filenames are cour.ttf, courbd.ttf, courbi.ttf and couri.ttf. The Underline Positions are hacked by adding an integer value for workaround of FontForge's bug.
2019-08-03 09:05:14 +09:00
Katayama Hirofumi MZ 1463f4b02a
[FONTS][SETUP][BOOTDATA] Add Arial fonts (#1781)
Add Arial fonts. CORE-16272

- Add "Arial", "Arial Bold", "Arial Bold Italic" and "Arial Italic" fonts by duplicating Liberation Sans fonts and renaming them.
- Disable some Arial font substitutes.
- Add LICENSE file.

I made these font files by using FontForge. Their family name is "Arial". Their display names are "Arial", "Arial Bold", "Arial Bold Italic" and "Arial Italic". Their font filenames are arial.ttf, arialbd.ttf, arialbi.ttf and ariali.ttf. The Underline Positions are hacked by adding an integer value for workaround of FontForge's bug.
2019-08-02 20:37:53 +09:00
Katayama Hirofumi MZ 4cfe7f84bb
[SETUP] Add codepage-specific font substitutes (#1772)
Add codepage-specific font substitutes for i18n. CORE-16266
2019-07-31 17:43:08 +09:00
Katayama Hirofumi MZ f054844f33
[SETUP] Sort font substitutes (#1770)
Sort the font substitute setting lists in base/setup/lib/muifonts.h .
2019-07-30 22:05:11 +09:00
Katayama Hirofumi MZ d31e814314
[SETUP] Delete 'Comic Sans MS' font substitutes (#1769)
Enable real 'Comic Sans MS' font by deleting the 'Comic Sans MS' font substitutes. CORE-16251
2019-07-30 19:09:23 +09:00
Joachim Henze 5dbc677cdd [BOOTDATA][SETUP] Fix regression CORE-16200 font rendering
By removing font substitution for 'Microsoft Sans Serif'.
Thanks to the patches author Katayama Hirofumi MZ.

This is a partial revert of the guilty rev
master guilty 0.4.13-dev-9-g
811faed421

RC guilty 0.4.12-RC-13-g
8d3def0529

VBox test result:
https://reactos.org/testman/compare.php?ids=68497,68499

The same fix has been applied before to 0.4.12-RC-44-g
ca0e00e8af
2019-07-16 22:51:42 +02:00
Katayama Hirofumi MZ 811faed421
[GDI32][NTGDI][SETUP] Fix font enumeration part 2 (#1492)
Eliminate some bugs about font enumeration. CORE-15755

- Add "Microsoft Sans Serif" font substitution.
- Fix and improve the treatment of the nominal font names.
- Split IntGetFontFamilyInfo function from NtGdiGetFontFamilyInfo.
- Add DoFontSystemUnittest function for font system unittest to GDI32.
- Call DoFontSystemUnittest function at CreateFontIndirectW first call.
2019-04-11 11:46:52 +09:00
Hermès Bélusca-Maïto 47a1acedf7
[SETUPLIB][USETUP] Improve disk HW numbering, removable disk support, and "super-floppy" partitioning.
Nowadays more and more people try to install ReactOS from removable
drives (e.g. USB sticks) onto fixed HDDs, or try to install it into
USB sticks too.

Both fixed and removable drives, as well as partitions on these, are
represented in NT using the same device name format:

  \Device\HarddiskM\PartitionN ,

with an increasing disk number M. Using this number for building the
corresponding firmware-specific ARC multi(x)disk(y)rdisk(z) path used
by the NT/ROS loader (FreeLdr, ...) is then prone to error since there
may have  been  removable drives  inserted  and  accounted for in the
calculation  of  the disk number.  These drives must be  correctly
subtracted in order to generate the correct ARC path, valid once all
the removable drives have been ejected (which should also be the
situation seen from the BIOS when booting up, except of course if you
boot on a USB stick).

This problem is now solved. Note that it matters only for the disks
that have also been enumerated by the firmware (BIOS; Int 13h). We
don't have to care about the other drives, since the ARC path will be
of a different format and will not use the disk number (instead, the
SCSI coordinates are used).

We also try to enumerate all the disks found in all the possible disk
adapters and  controllers enumerated  in the Hardware registry tree
(and that are visible by FreeLdr) in order to cover all.

Finally, we detect whether a disk reports as  a "super-floppy",  i.e.
an unpartitioned disk with a valid VBR. This is indeed how a standard
floppy disk looks like, or how USB sticks are partitioned on Windows.
Such disk is reported has having only one single partition starting at
the beginning of the disk, with partition number == 0, its type being
FAT16 non-bootable.
This allows us to forbid creating any new partitions on such disks.
Note that accessing either \Device\HarddiskN\Partition0 or Partition1
on such a disk returns the same data.
Note also that on the contrary, regular MBR-partitioned disks would
report at least four partitions entries, instead of just one.

The other improvements are:

- Do *NOT* write any MBR on a disk partitioned as "super-floppy".
  CORE-13703

- Fix the computed disk identifier, of format: %08x-%08x-%c .
  The numbers are respectively the checksum of the first sector, and
  the disk signature. The terminating letter is A or X, depending
  whether the first sector ends with 0x55AA/0xAA55 or not (see also
  commit 5053f1f5).

- Warn if the user attempts to install ReactOS on a disk that is not
  visible by the  firmware of his computer,  because it may not be
  bootable.
2019-03-12 02:17:11 +01:00
Hermès Bélusca-Maïto 84f3e2df5d
[SETUPLIB][USETUP] Remove CurrentDisk/Partition from the partlist lib code, and move these into the UI code.
- Add also some validation ASSERTs and simplify the code here and there.

- The installation partition is called "InstallPartition", while the
  global "CurrentPartition" is the disk region currently selected in
  the partition UI list, on which prtitioning operations are effectued.

- Extend CheckActiveSystemPartition() to use an optional alternative
  disk or partition in case the actual system partition (present in the
  first disk) cannot be used, e.g. because we don't support writes on it.
2019-03-11 00:05:37 +01:00
Hermès Bélusca-Maïto 0d9ebb67ce
[SETUPLIB] Improve the discovery of the active system partition.
CORE-7749, CORE-6305, CORE-13205
2019-03-11 00:05:36 +01:00
Hermès Bélusca-Maïto 29cc1843d0
[SETUPLIB][USETUP] Minor improvements.
- Make some partitioning functions not dependent on the selected "CurrentPartition".
- Add some sanity checks.
- Improve some of the "is-partitioned" checks.
2019-03-10 15:41:20 +01:00
Hermès Bélusca-Maïto c1fbc2d651
[SETUPLIB][USETUP] Factor out the usage of FS provider structures.
Similarly to FMIFS this structure should be private. Instead file-system
names are passed to the helper functions, allowing to use the names
returned by the FS drivers. The names are then internally mapped to the
corresponding FS providers.

In particular this allows to handle the "RAW" file-system and to assign
the 'Unformatted' flag to partitions having this FS.

Finally this helps us refining the checks performed to see whether the
current "active" system partition uses a supported file-system.
2019-03-10 15:41:05 +01:00
Bișoc George 8bde4de2d6 [USETUP][REACTOS] Check the status return value of InitDestinationPaths() (#1264)
- Within the function's body code, check the status values returned by the called functions.
- Change the BuildInstallPaths's function type to NTSTATUS instead of VOID (and check the status of InitDestinationPaths() as well.
2019-02-10 16:43:51 +01:00
Luo Yufan 02eeee15f0 [SETUP][INF] Add font substitute for CJK. (#1346)
Fix CJK font problem in Royale theme in ReactOS.

The reason for this PR is similar to the previous one (#1127).
CORE-15738
2019-02-10 15:46:19 +01:00
Pierre Schweitzer 0150bb964a
[SETUP] Silence some noisy DPRINT1 2019-01-01 10:08:02 +01:00
Pierre Schweitzer 4ed6b1ffca
[SETUP] Add support for selecting FS type in unattended setups
By default, we still fallback to FAT if nothing asked, or if there
is an invalid input.
0 is FAT, 1 is BtrFS. This can be grown as soon as we add more IFS.
2018-12-28 20:36:47 +01:00
Hermès Bélusca-Maïto a3168373eb
[SETUPLIB] Detect GPT-partitioned disks but don't use them since we don't support them at the moment.
- Add checks for GPT disks and either fail or ignore the disk,
  depending on the operation being executed.

[USETUP][REACTOS] Display the disk style more accurately.
2018-12-14 23:32:31 +01:00
Luo Yufan b0b81e54e9 [SETUP][FONT] Add font substitute of Ubuntu font for CJK
CORE-15179
2018-12-14 02:54:13 +09:00
Hermès Bélusca-Maïto 8bed4adf56
[SETUPLIB] Use for-loops instead of while-loops to enumerate linked lists in the partition code. 2018-12-10 00:27:58 +01:00
Hermès Bélusca-Maïto 7df9296692
[SETUPLIB] Partitioning code fixes and improvements.
CORE-7749

- Correctly insert discovered partitions in sorted order of StartSector,
  and verify that they do not overlap (-> check for broken partitioning).

May help for CORE-10898.

- Use the correct reported partition numbers that may be modified after
  partitioning changes, and that need to be used when opening
  \Device\Harddisk'M'\Partition'N' files. This is achieving by
  retrieving the returned value of the IOCTL_DISK_SET_DRIVE_LAYOUT call.

  Distinguish them from the "on-disk" partition numbers that are the ones
  that enumerate the partition in partition-table order (and is the order
  known by e.g. the BIOS), and that should be used to construct the
  destination ARC path.

May help for CORE-4870, CORE-13205.

- Simplify a lot of duplicated code by using helper functions.
2018-12-10 00:27:56 +01:00
Ștefan Fulea b0ab61e6c3
[BOOTDATA][SETUPLIB] Setup the Romanian Stdandard Keyboard layout. (#861)
Adjust the miscellaneous files to activate the Romanian Standard
Keyboard layout in the OS and set it as default for Romanian.

CORE-15056
2018-12-08 18:53:18 +01:00
Hermès Bélusca-Maïto 79bc82206f
[SETUPLIB] Re-enable the filesystem detection code based on recognition by FSDs. 2018-11-25 15:03:52 +01:00
Hermès Bélusca-Maïto 9504a38f52
[SETUPLIB] Dismount a disk partition before deleting it. 2018-11-25 15:03:47 +01:00
Hermès Bélusca-Maïto a31d2f820a
[SETUPLIB] Improve the Freeldr timeout INI setting hack-fix. Dedicated to Mark Jansen ;-) CORE-15193 2018-11-24 02:45:03 +01:00
Hermès Bélusca-Maïto 70fa2e2eb4
[SETUPLIB][USETUP] Additional partition validity checks.
Always perform the partition validity checks when creating new
primary/extended/logical partitions, and also when a new partition
is automatically created when unpartitioned space is selected for
ReactOS installation.

CORE-12246
2018-11-18 21:13:36 +01:00
Hermès Bélusca-Maïto f527e23aa7
[SETUPLIB] Lock the BTRFS volume before installing the new bootsector code.
CORE-15334 CORE-15339

The BTRFS driver requires the volume to be locked in order to modify
the first sectors of the partition, even though they are outside the
file-system space / in the reserved area (they are situated before
the super-block at 0x1000) and is in principle allowed by the NT
storage stack.
So we lock here in order to write the bootsector at sector 0.
If locking fails, we ignore and continue nonetheless.

See also the following links for reference:
https://stackoverflow.com/a/12928934
https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-writefile
https://support.microsoft.com/en-us/help/942448/changes-to-the-file-system-and-to-the-storage-stack-to-restrict-direct
2018-11-11 21:55:48 +01:00
Hermès Bélusca-Maïto bfb2b88f82
[SETUPLIB] Use proper file share access when opening partitions for raw access. 2018-11-11 21:47:37 +01:00
Pierre Schweitzer 26408b02f1
[SETUP] Align partition start at 2048 minimum
This will allow compatibility with modern OSes and
modern disk management utilities.
It will also improve performances by properly aligning
partition start.
And it will let enough room at the begin of the disk
for 3rd party bootloaders.

WARNING: this is not compatible with previous partition
model, and old one will likely not be compatible. You'll
have to erase your whole partition table and start from
scratch.
2018-11-11 17:38:37 +01:00
Bișoc George 4c6370de16 [USETUP] Remove the PARTITION_EXT2 constant and use PARTITION_LINUX in favour since PARTITION_EXT2 is just an alias to PARTITION_LINUX
And since we're here, add PARTITION_LINUX_EXT to ReactOS I/O controls header (rosioctl.h).
2018-11-07 23:16:29 +01:00
Hermès Bélusca-Maïto e282ec39a2
[SETUPLIB] Retrieve and store the machine (architecture) ID of the discovered NTOS installations. Will be used later. 2018-11-06 00:09:13 +01:00
Hermès Bélusca-Maïto f41750ab7f
[SETUPLIB][USETUP] Partition code improvements.
- SETUPLIB and USETUP: Convert PARTENTRY::DriveLetter to WCHAR.

- SETUPLIB: Retrieve volume label.

- SETUPLIB and USETUP: Move the partition types (IDs) table from
  USETUP to SETUPLIB so that they can share it with the 1st-stage
  GUI installer too. Also take the opportunity to update the table
  with information from http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
  and cross-checked with the list from Paragon Hard-Disk Manager.

- USETUP: Simplify PrintPartitionData().
- Add some code comments.
2018-11-06 00:09:02 +01:00
Hermès Bélusca-Maïto 86f31289ef
[BOOTDATA][SETUPLIB][REACTOS] INF support fixes.
- BOOTDATA: Use standard INF signature string, so that they can be
  opened successfully using ReactOS' or Windows' setupapi.dll with
  the INF_STYLE_WIN4 style.

- SETUPLIB: Use the correct INF_STYLE_* INF styles in SpInfOpenInfFile() calls.

- REACTOS : Switch thread locale to user-specified LocaleId when calling
  SetupOpenInfFileW(), so that the correct localized strings are used.
2018-11-06 00:04:19 +01:00
Hermès Bélusca-Maïto 42758b303b
[SETUPLIB] Fixes and improvements for the file copying code.
- In PrepareCopyInfFile(), explicitly use AddSectionToCopyQueueCab()
  to retrieve the files from the CAB INF.

  Otherwise if one continued to use and rely on AddSectionToCopyQueue()
  to do this job instead, bad things could happen like, re-enumerating
  twice or more (and adding them to the file queue) the same files.
  This is because in the new code AddSectionToCopyQueue() can be called
  many times to deal with different SIF file sections. The old code then
  called AddSectionToCopyQueueCab() in turn, but on the same list...
  Now the steps performed are clear, and everything works as intended.

- Simplify the code that computes the full source and destination paths
  for the files to be copied and directories to be created, using helper
  functions.

- Compute the source file and target location from the TXTSETUP.SIF
  entries in a NT-compatible manner.
2018-11-05 23:35:14 +01:00
Hermès Bélusca-Maïto 3d137b05d1
[SETUPLIB][USETUP] Move all the code that performs file copying into the SETUPLIB. 2018-11-05 23:18:47 +01:00
Hermès Bélusca-Maïto f894631472
[SETUPLIB][USETUP] Add support for setup error handling. 2018-11-05 12:03:19 +01:00
Hermès Bélusca-Maïto 1b0c26e21c
[SETUPLIB][USETUP] Minor improvements.
- Use adequate access flag when opening symbolic links.
- Simplify the prototype of UpdateRegistry() since now both Setup INF
  handle and settings lists are inside the USETUP_DATA structure.
2018-11-01 18:55:45 +01:00
Hermès Bélusca-Maïto 8f1ab791fa
[SETUPLIB][REACTOS][USETUP] Further improve the interfacing with INF and File-Queue APIs.
This allows using some of the SetupApi.dll functions when SETUPLIB is
used in the (Win32) GUI 1st-stage installer "REACTOS", while using the
custom implemented NT-aware functions in "USETUP".
2018-11-01 18:55:43 +01:00
Hermès Bélusca-Maïto 1a173dfdb2
[SETUPLIB][REACTOS][USETUP] Re-organize the setup state variables and some helpers.
- Move a great deal of global variables into the USETUP_DATA structure
  (the SetupInf, the SetupFileQueue, the generic lists...).

- Place the common setup initialization code into an InitializeSetup()
  routine, and the cleanup code into FinishSetup().

- Implement the setup-code part support for the TXTSETUP.SIF setup
  source path override variables "SetupSourceDevice" and "SetupSourcePath"
  (see CORE-9023); support for them in SETUPLDR will be added later.
2018-10-28 23:40:28 +01:00
Hermès Bélusca-Maïto 9016b5f3ef
[SETUPLIB] Silence noisy DPRINTs. 2018-10-28 23:40:26 +01:00
Hermès Bélusca-Maïto 9c64b57dc9
[SETUPLIB][USETUP] Move the remaining (directory-creation) functions from usetup's filesup to setuplib.
They will be used later in the library.
2018-10-28 18:17:34 +01:00
Hermès Bélusca-Maïto a972948051
[SETUPLIB][USETUP] Remove the deprecated GenericListHasSingleEntry() function and use instead GetNumberOfListEntries().
- Few FIXMEs get fixed in the process.
- Add some diagnostic ASSERTs.
2018-10-28 15:04:33 +01:00
Hermès Bélusca-Maïto a635aa8475
[SETUPLIB] Properly cleanup the temporary registry keys created for setting up the registry.
This includes also to remove the created symlinks.
Symlinks deletion is special, as one has to open first the symlink
itself (and not its target), then remove the "SymbolicLinkTarget" value
before really deleting the key. Of course everything must be done under
proper access rights.

Additional changes:
- Change prototype BOOLEAN CmpLinkKeyToHive(...) to NTSTATUS CreateSymLinkKey(...).
- Silence few DPRINTs.
- Document some FIXMEs that I need to inspect later on ReactOS.
- HKEY --> HANDLE.
2018-10-28 14:42:01 +01:00
Hermès Bélusca-Maïto 6c2d3dee04
[SETUPLIB][USETUP] Move the registry-update procedure into setuplib.
- It can therefore be also used by the 1st-stage GUI setup.
- Rename some function parameters to clarify what they should be.

Based on:
svn path=/branches/setup_improvements/; revision=75750
2018-10-28 14:42:00 +01:00
Hermès Bélusca-Maïto f80ec8b822
[SETUPLIB] Store the vendor name for each discovered NTOS installation.
Take also the opportunity to simplify a little bit the code.
2018-10-28 01:58:59 +02:00
Hermès Bélusca-Maïto a7afba7703
[SETUPLIB] Remove a deprecated error number (that gets merged with ERROR_TXTSETUP_SECTION).
[USETUP] Improve usage of ERROR_TXTSETUP_SECTION and ERROR_CABINET_SECTION error codes, correctly display associated error message, and remove a deprecated string.
2018-10-28 01:43:56 +02:00
Hermès Bélusca-Maïto 1f4cb0977a
[SETUPLIB][USETUP] Don't store UI-related display strings in GENERIC_LIST_ENTRY-ies, + other code adaptations.
- Apart from allowing a UI cache variable that may be used when
  displaying GENERIC_LIST_ENTRY-ies, do not store any display strings
  associated to these list entries. They should be instead computed only
  when initializing a list UI (or a combo-box or list control if the
  code is used in Win32 environment).
  For this matter a callback is provided to InitGenericListUi() that
  does the job of computing the displayed string corresponding to a
  given GENERIC_LIST_ENTRY.

- Simplify the calls to InitGenericListUi(), and refactor the
  RestoreGenericListUiState() function.

- Use for-loops for iterating over GENERIC_LIST items.

- Adapt the storage data format for lists of settings items.

- The txtsetup.sif INF format specified in LoadSetupInf() should not be
  INF_STYLE_WIN4 (to be investigated...).
2018-10-28 01:32:15 +02:00
Hermès Bélusca-Maïto 765994c9e3
[SETUPLIB][USETUP] Bring some suggestions from PR #59 in.
- Use OBJ_CASE_INSENSITIVE when initializing object attributes
  (no actual reason why to keep case sensitivity there).

- Check the success of a RtlStringCchPrintfW call in EnumerateReactOSEntries().

- Explicitly check for returned STATUS_NOT_SUPPORTED from ChkdskPartition()
  or FormatPartition(), and display an appropriate error message.

- Remove some left-over comments but also explain why I kept some
  commented code (mainly for future reference).
2018-10-28 01:08:57 +02:00
Hermès Bélusca-Maïto a7a11dd60d
[SETUPLIB] Improve the bootloader 'validity' checks -- Addendum to f06734e5 (r74512).
Adapted from PR #89 by Serge Gautherie.
This should improve the situation described in CORE-12672 and CORE-4870.
2018-10-28 00:59:46 +02:00
Hermès Bélusca-Maïto ad9e57895d
[SETUPLIB] Improve an alternate code implementation.
Comment about the status of two '#if 0'.

[SETUPLIB] Fix some uninitialized variables (caught by clang-cl).
Also, initialize NtName->Length in return paths in ResolveArcNameManually().
2018-10-28 00:59:45 +02:00
Hermès Bélusca-Maïto 48aab0fb20
[SETUPLIB][USETUP] Use NT RTL String Safe functions instead of Win32-oriented ones (and remove usage of HRESULT too).
Based on:
svn path=/branches/setup_improvements/; revision=75755
svn path=/branches/setup_improvements/; revision=75757
2018-10-28 00:58:46 +02:00
Hermès Bélusca-Maïto 254aa472e8
[SETUPLIB][USETUP] Make the GENERIC_LIST store the items display text in UNICODE (and not in ANSI).
Only convert to ANSI when needed (e.g. in the display code for usetup).
The 1st-stage GUI setup will however use the UNICODE strings directly.

svn path=/branches/setup_improvements/; revision=75753
2018-10-28 00:30:54 +02:00
Hermès Bélusca-Maïto 9d93100afc
[SETUPLIB][USETUP] Move the floppy-disk accessibility check into InstallFatBootcodeToFloppy().
svn path=/branches/setup_improvements/; revision=75751
2018-10-28 00:25:51 +02:00
Hermès Bélusca-Maïto e405ad257c
[SETUPLIB][USETUP][INPUT.CPL] MUI integration with setuplib.
[SETUPLIB] Copy the mui* files from usetup into the setuplib for later usage, and add mui.c to build.

svn path=/branches/setup_improvements/; revision=75711

[SETUPLIB][USETUP] Start massaging the MUI files and split up what concerns only the usetup "resources",
and what concerns general language parameters (in the setuplib).

It may be interesting to retrieve the language parameters
from INF file (e.g. intl.inf) (suggested by Giannis).

svn path=/branches/setup_improvements/; revision=75715

[SETUPLIB] Add the necessary headers to mui.c to be able to compile.
[USETUP] Comment out the languages that don't have any resources.

svn path=/branches/setup_improvements/; revision=75716

[SETUPLIB][USETUP] Adjust MUI and settings code.

- Re-enable settings code concerning language, keyboards & layout
  in the setuplib, and remove the old code in usetup.

- Remove useless code in setuplib's mui.c.

- Rename usetup's MUI "LanguageList" into "ResourceList" so as to
  avoid colliding with the "LanguageList" of setuplib.

- Add the magic CMakeLists line "add_definitions(${I18N_DEFS})" that
  I forgot previously, that caused the "LanguageList" of setuplib to be empty!

The code compiles and works during my tests.

svn path=/branches/setup_improvements/; revision=75717

[SETUPLIB] Change some string pointer types & function prototypes so that the usetup-specific
"SelectedLanguageId" variable is not used in the library.

svn path=/branches/setup_improvements/; revision=75719

[SETUPLIB] Change some function prototypes so that the usetup-specific "SelectedLanguageId" variable is not used in the library.
Also, make AddEntriesFromInfSection(), DefaultProcessEntry() and the typedef PPROCESS_ENTRY_ROUTINE private again.

svn path=/branches/setup_improvements/; revision=75720
svn path=/branches/setup_improvements/; revision=75724

[USETUP] Code adaptations.

- Transform some do{}while() loops into while(){} ones, since the lists on which we work may only contain one single {NULL} element.
- Modify MUIGetOEMCodePage() call after r75719.
- Use PCWSTR where needed.

svn path=/branches/setup_improvements/; revision=75722

[USETUP] Adjust some MUI & settings calls, following the commits r75719, r75720 and r75721.

svn path=/branches/setup_improvements/; revision=75723

[INPUT.CPL] Adjust inclusion of "muifonts.h" (commit 3dbd44f) due to changes introduced in r75711 and r75715.
2018-10-28 00:13:07 +02:00
Hermès Bélusca-Maïto 7af2f717bc
[SETUPLIB][USETUP] Move the settings code from usetup to setuplib.
This code is moved ther since it'll be needed for 1st-stage GUI
installer as well.

The code dealing with keyboard layouts is however not moved yet,
since it uses MUI* functions from usetup.
I'll try to think how to include that in setuplib...

svn path=/branches/setup_improvements/; revision=75701
2018-10-27 22:09:35 +02:00
Hermès Bélusca-Maïto 6f19c83b96
[SETUPLIB] Move the files that implement utility functions into their own subdirectory. The files remaining in the main directory implement setup procedures that use the utility functions.
svn path=/branches/setup_improvements/; revision=75695
2018-10-27 22:09:34 +02:00
Hermès Bélusca-Maïto 95a34ef6fc
[USETUP][SETUPLIB] Move the bootsup.c code into the setuplib, and perform the necessary adjustments.
Move the bootsup.c code into the setuplib, as the code is generic
enough to be used by both USETUP and the 1st-stage GUI installer.

svn path=/branches/setup_improvements/; revision=75674
2018-10-27 22:09:32 +02:00
Hermès Bélusca-Maïto c560342f08
[SETUPLIB] Diverse fixes (incl. initialization fixes).
- Compute the installation source paths based on the full path of the
  installer program that uses the setup library.
- Add INF_STYLE_OLDNT define in infsupp.h.
- Add some (silenced) diagnostic DPRINTs.

svn path=/branches/setup_improvements/; revision=75667

- Use correct inf style flags in SetupOpenInfFileEx() calls when opening
  txtsetup.sif and unattend.inf. Technically txtsetup.sif would be
  INF_STYLE_WIN4, but since we use "$ReactOS$" as its version signature,
  it would not work when opening it with setupapi.dll functions.
  Hence this flag is combined with INF_STYLE_OLDNT too.

- Don't fail if opening the \SystemRoot symbolic link doesn't work
  (usually due to incorrect access rights); in that case, just use the
  installer image file path as the installation source path.

svn path=/branches/setup_improvements/; revision=75676
2018-10-27 18:13:42 +02:00
Hermès Bélusca-Maïto f1b9c071bb
[SETUPLIB] Code formatting fix.
svn path=/branches/setup_improvements/; revision=75656
2018-10-27 18:13:41 +02:00
Hermès Bélusca-Maïto a80f803a2a
[SETUPLIB] Introduce and use a UnMapAndCloseFile() macro that calls UnMapFile() and NtClose() on handles returned by the OpenAndMapFile() function.
svn path=/branches/setup_improvements/; revision=75651
svn path=/branches/setup_improvements/; revision=75657
2018-10-27 18:13:40 +02:00
Hermès Bélusca-Maïto 29fe31df1b
[SETUPLIB][USETUP] Code refactoring: rename the old DoesPathExist() into DoesDirExist(), and rename the new DoesPathExistEx() back into DoesPathExist().
svn path=/branches/setup_improvements/; revision=75636
2018-10-27 18:13:40 +02:00
Hermès Bélusca-Maïto cc37199dfd
[SETUPLIB] Merge DoesPathExist() and DoesFileExist() into (temporarily called) DoesPathExistEx() function.
And turn the previous two functions into macros.

svn path=/branches/setup_improvements/; revision=75635
svn path=/branches/setup_improvements/; revision=75652
2018-10-27 18:13:39 +02:00
Hermès Bélusca-Maïto 518bea5f99
[SETUPLIB] Factor out and introduce a ParseArcName() helper function that does its job.
Used in exiting code and in later code in this file.

svn path=/branches/setup_improvements/; revision=75632
svn path=/branches/setup_improvements/; revision=75652
2018-10-27 18:13:38 +02:00
Hermès Bélusca-Maïto 1ae3efd738
[SETUPLIB] Code formatting.
svn path=/branches/setup_improvements/; revision=75631
svn path=/branches/setup_improvements/; revision=75652
2018-10-27 18:13:38 +02:00
Hermès Bélusca-Maïto 7e248feabf
[USETUP][SETUPLIB] Code refactoring.
- Move several global setup variables into a structure "USETUP_DATA",
  similar to the syssetup structure "SETUPDATA" (or the WIP 1st-stage
  installer structure of the same name), so that these variables can be
  set easily by different helper setup functions;

- Move CheckUnattendedSetup() and GetSourcePaths() to setuplib and make
  CheckUnattendedSetup() use the USETUP_DATA structure;

- Add a LoadSetupInf() function that loads the txtsetup.sif file
  (factoring out the corresponding code in USETUP);

- Add a InstallSetupInfFile() function (that I'll probably rename later on)
  whose purpose is to create a valid "$winnt$.inf" setup installation file
  in the ReactOS\system32 directory, which should help the 2nd-stage installer
  to correctly retrieve the source installation media we used during 1st-stage,
  and contain the unattended setup lines copied from unattend.inf. This is
  done in a Windows-compatible way.

svn path=/branches/setup_improvements/; revision=75518

[USETUP] Close the txtsetup.sif file at the end of the operations.

svn path=/branches/setup_improvements/; revision=75539
2018-10-27 18:13:32 +02:00
Hermès Bélusca-Maïto 9348fe1f7e
[SETUPLIB] Introduce defines for size units.
[USETUP] Use them in the code.

svn path=/branches/setup_improvements/; revision=75508
2018-10-27 03:17:58 +02:00
Hermès Bélusca-Maïto a95581c4c2
[SETUPLIB] IniCacheSave(): use the OBJ_CASE_INSENSITIVE flag.
svn path=/branches/setup_improvements/; revision=75507
2018-10-27 03:17:57 +02:00
Hermès Bélusca-Maïto 2268b3d645
[USETUP] Move Setup[Delete|Copy|Move]File() from usetup code into the setuplib's filesup.c .
Remove the commented-out IsValidPath() in that file, and remove
as well the temporary prototypes in regutil.c .

svn path=/branches/setup_improvements/; revision=75249
2018-10-27 03:17:29 +02:00
Hermès Bélusca-Maïto 60d9ea76d1
[USETUP][SETUPLIB] Split the registry helper code.
Split the registry helper code into registry utility functions
(create/mount/unmount/verify hives) and registry creation code
(the rest: initializing the system hives) and move it in the
setup library.

svn path=/branches/setup_improvements/; revision=75247

[USETUP][SETUPLIB] Improve how the Setup* INF APIs are interfaced in the code.

Define prototypes compatible (including their calling convention)
with the ones defined by setupapi (.h/.dll) so that it can be possible
to either use an internal implementation of these functions (via the
INFLIB library) as currently being done, or using imported setupapi
functions, as would be done by the future 1st-stage GUI installer.

[SETUPLIB] Cleanup the registry.c file and use the infsupp.h header.

svn path=/branches/setup_improvements/; revision=75345
svn path=/branches/setup_improvements/; revision=75346

[USETUP][SETUPLIB] Move some INF-related code from usetup to the setuplib.

- Move the generic INF_GetDataField() and INF_GetData() helpers to
  setuplib, and rework them a bit so that they explicitly call setupapi
  functions (or implementations thereof when being used in usetup);

- Rework the headers in accordance;
- Fix compilation in lib/registry.c .

- Fix compilation when these headers are used withing usetup (who
  doesn't use setupapi.dll) and "reactos" (the 1st-stage GUI installer
  that uses setupapi.dll).

svn path=/branches/setup_improvements/; revision=75515
svn path=/branches/setup_improvements/; revision=75537
svn path=/branches/setup_improvements/; revision=75538
2018-10-27 03:16:47 +02:00
Hermès Bélusca-Maïto 043a024d61
[USETUP] Small formatting changes + two functions turned into FORCEINLINE.
Based on:
svn path=/branches/setup_improvements/; revision=74616
2018-10-24 00:35:54 +02:00
Hermès Bélusca-Maïto a28461124b
[SETUPLIB][USETUP] Minor code refactoring, consisting in renaming the "ntos boot loader" stuff into "boot store", since this happens to be functionality that is a bit more general than previously thought.
- Fix the usage of the BootEntry's "Version" member.
- Don't surround with too many quotation marks the "friendly" boot entry name in AddBootStoreEntry().

svn path=/branches/setup_improvements/; revision=74964
2018-10-14 23:46:52 +02:00
Hermès Bélusca-Maïto c2f7758e96
[SETUPLIB] Adapt the code in osdetect.c to make it use the new features of bldrsup.c committed in 27603a10 (r74952).
svn path=/branches/setup_improvements/; revision=74953
2018-10-14 23:37:44 +02:00
Hermès Bélusca-Maïto 27603a101c
[SETUPLIB] Introduce a lot of (Work in progress) functions to manipulate boot entries from different boot "stores".
This concerns so far, only freeldr.ini and to an extent, boot.ini, but planning in the future to add support for registry-oriented BCD
as well as possibly direct (u)EFI entries, using the corresponding NT functions.
This code is so far only used in osdetect.c, but will be soon used by usetup's bootsup.c (note that some helper functions: CreateCommonFreeLdrSections()
and (Un)protectBootIni() are already taken from it and used in bldrsup.c).
- In EnumerateNTOSBootEntries(), continue enumerating the boot entries until the user callback returns an status code that is not successful.
- Remove some old code from osdetect.c; use directly BootEntry->FriendlyName when building the display names of the available installations, since now
  BootEntry->FriendlyName is a PCWSTR (and not a UNICODE_STRING anymore).

svn path=/branches/setup_improvements/; revision=74943

[SETUPLIB] Make the NTOS_BOOT_ENTRY structure more generic, so that it can wrap around either actual NTOS boot entry options, or FreeLdr-like boot-sector options.

In a sense, the NTOS_BOOT_ENTRY structure now looks much more like the NT structure "BOOT_ENTRY".
- Adapt the code in bldrsup.c to these modifications, and re-enable FreeLdr-like boot-sector-file support code that was commented out.
More code cleanup will follow later.

svn path=/branches/setup_improvements/; revision=74952
2018-10-14 23:27:17 +02:00
Victor Perevertkin 07bc92f740 [USETUP][SETUPLIB] Added support for formatting partition in BTRFS and installing ReactOS on it.
Removed code related to EXT2 boot sector for now.
CORE-13769
2018-08-20 08:26:56 +02:00
Hermès Bélusca-Maïto b2606fd07a
[SETUPLIB] Silence annoying DPRINT1s. 2018-06-03 23:23:24 +02:00
Hermès Bélusca-Maïto cacae6d9a0
[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
2018-06-03 22:12:45 +02:00
Hermès Bélusca-Maïto 563d9f26c4
[SETUPLIB] Adjustments in the code.
- Call OpenAndMapFile() with its new ReadWrite parameter;
- Add informative comments in osdetect.c;
- In partlist.c, check whether a disk has a valid MBR by also checking for its 0xAA55 signature.

svn path=/branches/setup_improvements/; revision=74712
2018-06-03 22:12:45 +02:00
Hermès Bélusca-Maïto 7f5428633b
[SETUPLIB] Additions for filesup.c and inicache.c.
- In DoesFileExist(): Call NtOpenFile with FILE_GENERIC_READ instead of the more generic GENERIC_READ access right.
- OpenAndMapFile(): Add support for opening & mapping files with write access (to be used latter).

svn path=/branches/setup_improvements/; revision=74710

- Split IniCacheLoad() and IniCacheSave() into: themselves & IniCacheLoadByHandle() and IniCacheSaveByHandle(),
  respectively, so that we can load & save INI files if we already have an opened handle to them.

svn path=/branches/setup_improvements/; revision=74711
2018-06-03 22:12:44 +02:00
Hermès Bélusca-Maïto 6681fb8af5
[SETUPLIB] Add a new module "bldrsup.c" (WIP) where I place all the NT boot loaders (i.e. ntldr, freeldr, and possibly bootmgr in the future) management functions.
So far we only have:
- a function FindNTOSBootLoader() that detects the existence of a given boot loader;
- a function EnumerateNTOSBootEntries() (and corresponding helpers) that enumerate the different boot entries in the configuration file(s) for a given boot loader, and for each entry, calls a user-provided callback.
Only supported at the moment: ntldr and freeldr.
Doing that allows me to simplify large portions of the NT-OS detection code so that it becomes more bootloader-agnostic, and this will help me for simplifying some parts of usetup/bootsup.c too, later...

svn path=/branches/setup_improvements/; revision=74661
2018-06-03 22:12:43 +02:00
Hermès Bélusca-Maïto b53b7b11e3
[SETUPLIB][USETUP] Refactor the DoesFileExist() function so that it now looks closer to DoesPathExist() and use it almost everywhere.
- Adjust also its callers, adjust OpenAndMapFile() parameters.
- Related to that, simplify IsValidNTOSInstallation() parameters & introduce a IsValidNTOSInstallation_UStr()
  that does the same, but takes a UNICODE_STRING instead.
- Simplify CheckForValidPEAndVendor().

Now only exactly 5 calls use the "old" 'DoesFileExist' syntax, using a temporarily auxiliary function "DoesFileExist_2"...

svn path=/branches/setup_improvements/; revision=74641
2018-06-03 22:12:43 +02:00
Hermès Bélusca-Maïto d27ef70aab
[SETUPLIB][USETUP] Transform the existing ConcatPaths() function into a variadic function, and derive a CombinePaths() from it (plus their equivalent taking va_list).
This allows building concatenated paths with an arbitrary number of separated components.
- Use the newly-introduced CombinePaths() and ConcatPaths() functions.
- Fix also few comments, and place some UNICODE_NULLs here & there.

svn path=/branches/setup_improvements/; revision=74637
svn path=/branches/setup_improvements/; revision=74640
2018-06-03 22:12:43 +02:00
Hermès Bélusca-Maïto 92b99b865e
[SETUPLIB][USETUP] Move some code to the SetupLib.
- filesup.c's functions ConcatPaths(), Does[Path|File]Exist(), NtPathToDiskPartComponents(), OpenAndMapFile(), UnMapFile();
- Move the inicache library to setuplib as it'll be used for the 1st stage GUI setup too (indeed, there is no good INI file API
  under Win32; the Win32 profile "API" is just good enough to manipulate the win16 ini files, and are here anyways for backward
  compatibility purposes only);
- Move the OS detector too.
- Remove the duplicated ConcatPaths() code in arcname.c.

svn path=/branches/setup_improvements/; revision=74634
svn path=/branches/setup_improvements/; revision=74638
2018-06-03 22:12:35 +02:00
Hermès Bélusca-Maïto c434a5ab21
[USETUP] Some fixes/improvements suggested by Thomas (2/2).
- In the partlist.c disk getters: Remove useless "IsListEmpty(&List->DiskListHead)" checks, because this is actually the kind of check the while() loop does just after...
- Fix few DPRINTs.

svn path=/branches/setup_improvements/; revision=74629
2018-05-31 19:54:09 +02:00
Hermès Bélusca-Maïto 3074ad7159
[USETUP] Some fixes/improvements suggested by Thomas (1/2).
- isspace('\0') returns FALSE anyways so no need to separately test for a NULL character;
- The (str/wcs)toul function cannot return a NULL pointer from its second paramter;
- VersionInfo32_FindChild(): the third argument is indeed a number of characters (not bytes),
  so rename the parameter to make this fact clear. The function is however correctly used within this module.

svn path=/branches/setup_improvements/; revision=74629
2018-05-31 18:01:00 +02:00
Hermès Bélusca-Maïto aa44ab1fbc
[SETUPLIB] Add an ARC path to (and from) NT path resolver.
The NT path resolver allows mapping between an ARC path as specified in freeldr.ini / boot.ini , to its corresponding NT path, if possible.
Currently, only the mapping direction "ARC to NT" is implemented. It will be used wherever such mappings are needed, for example when identifying
the ReactOS / Windows installations from the available freeldr.ini / boot.ini entries (for upgrading / repair purposes).

The resolver supports the usual ARC paths: multi()disk()[r|f]disk()[partition()] ; eisa()disk()[r|f]disk()[partition()] ; multi()disk()cdrom() ;
scsi()disk()[r|f]disk()[partition()] ; scsi()cdrom()fdisk() ; ramdisk(x) ; net(x) (actually reported as "unsupported" since it would map to some
path on some network), and the newly-introduced Win2k signature()disk()rdisk()[partition()].

The code is in work-in-progress status.
Some validation tests, that were used during the implementation of the resolver, have been added.

svn path=/branches/setup_improvements/; revision=74621
svn path=/branches/setup_improvements/; revision=74631
2018-05-31 18:00:59 +02:00
Hermès Bélusca-Maïto b1741a07cf
[USETUP][SETUPLIB] Move all the code that retrieves the version resources from PE executable, out of osdetect.c, and place it in its own module inside the SetupLib.
Remove also some commented headers in precomp.h.

svn path=/branches/setup_improvements/; revision=74618
2018-05-31 18:00:58 +02:00