961 Commits

Author SHA1 Message Date
Hermès Bélusca-Maïto
c7a64abb53 [FREELDR] Minor hwpci.c reformatting; SAL2-annotate *FindPciBios() (#9485)
See also PR #7416.
2026-09-05 19:00:39 +02:00
Whindmar Saksit
8e4de4a184 [MMC] Mmc .msc file launcher (#9468)
CORE-16431
2026-09-04 16:47:13 +02:00
Whindmar Saksit
763ce84cf5 [SHELL32] Implement bat/cmd drop target menu (#9435)
CORE-20745
2026-08-24 17:37:37 +02:00
Hermès Bélusca-Maïto
c7e1c79921 [FREELDR:PC] pcvideo.c!PcVideoGetBiosMode(): WidthInChars isn't optional
Addendum to commit bd881161ac, noticed by Serge Gautherie.
2026-08-19 22:55:52 +02:00
Hermès Bélusca-Maïto
f9943c7556 [FREELDR:UEFI] Simplify Reboot() fallback code (#9409)
CORE-11954

Addendum to commit 2a74f5e794 (PR #9092)

- The `__halt()` intrinsic is also defined for GCC-based builds,
  see: sdk/include/vcruntime/mingw32/intrin_x86.h

- The `_M_IX86` and `_M_AMD64` defines are also defined for GCC-based
  builds, see: sdk/include/reactos/msvctarget.h
2026-08-17 20:26:03 +02:00
Nguyen Duc Thinh
2a74f5e794 [FREELDR:UEFI] Implement missing cold reset in Reboot() function (#9092)
- Fix a WARN debug print (Reboot can be called from menu).
- Stabilize reboot fallback abstractions.
- Drop unimplemented path on ARM.

CORE-11954 CORE-17604
2026-08-17 14:14:36 +03:00
Nguyen Duc Thinh
7a80c49e56 [FREELDR:UEFI] Refactor the memory stack setup (#9092)
Add allocation failure handling and document the code in a better way.

CORE-11954
2026-08-17 14:06:41 +03:00
Alex Mendoza
7eab8fafec [FREELDR:UEFI] Determine boot partition number from device path (#9376)
Determine the actual partition number, walking the boot handle's device
path to find the Hard Drive media node, which carries the partition number.

- Walk EFI_DEVICE_PATH_PROTOCOL for the boot handle
  looking for a MEDIA_HARDDRIVE_DP node.
- Use HARDDRIVE_DEVICE_PATH.PartitionNumber (already 1-based per spec)
  as the real boot partition.

CORE-11954
2026-08-17 13:34:16 +03:00
Justin Miller
bd6e8e9e30 [BOOTDATA] $PIR chipset list (#9401)
This provides some of the chipsets for PCI IRQ routing miniport support (legacy, pre-ACPI machines).
Will be the foundational piece to us getting and IRQ arbiter on non-acpi boot.
2026-08-15 18:28:06 +00:00
Hermès Bélusca-Maïto
b299049410 [USERINIT] livecd.c: Change default actions in unattended mode, or if the installer cannot be found (#9363)
- Just after initially caching the path to the ReactOS installer, check
  whether an unattend.inf file can be found in its directory; otherwise,
  fall back to an unattend file in the current ReactOS directory.

- If this unattend.inf file specifies to run an unattended setup
  (`UnattendSetupEnabled` value set to `"yes"`), automatically start the
  ReactOS installer -- instead of starting the live environment desktop.

- If the user presses Ctrl+Shift+F10 however, disable unattended setup
  (suggestion to override the behaviour with a keypress from Whindmar Saksit).

NOTE: in the `WM_INITDIALOG` dialog handlers, use `SendMessageW`
to simulate the button presses. This also allows the invocation
of `EndDialog()` (from the button command handlers) while the
`WM_INITDIALOG` message is handled, so that the USER dialog manager
can then directly close the dialog without showing it first.
2026-08-14 20:05:29 +02:00
Samuel Stuart
26d8d3039e [FREELDR] Fix AMD64 builds on GCC/Clang (#9385)
Modern GCC and Clang versions now appear to generate an .edata section on FreeLoader.

This removes a check added in commit 5367ae5760, that was causing any
builds using CI or RosBE to not boot (FREELDR_IMAGE_CORRUPTION).
2026-08-10 18:53:39 +02:00
Hermès Bélusca-Maïto
bd881161ac [FREELDR:PC] pcvideo.c: Fix the PcVideoGetDisplayMode() helper for regular video BIOS mode
Fix a regression introduced in commit b050a4544e (PR #8506), when
detecting the initial video mode FreeLoader has been started with.

- In `PcVideoGetDisplayMode()`, for text modes, the number of "bytes per
  scan-line" is always equal to the screen width (number of characters)
  *TIMES* 2: one byte for character, one byte for attribute.

- Systematically reset the `BytesPerScanLine` in each `PcVideoSetModeWWxHH()`
  sub-routine.

- Make `PcVideoGetBiosMode()` return the screen width in characters, and
  compare it with what's stored in the BIOS data area for consistency.
2026-08-09 17:04:51 +02:00
Hermès Bélusca-Maïto
dce72d2c5c [FREELDR:PC] pcvideo.c: Comment on the BytesPerScanLine values in PcVideoSetMode()
- Slightly simplify also the return paths in `PcVideoSetMode()`.
- Note that the `VERTRES_*_SCANLINES` defines are for `PcVideoSetVerticalResolution()`
  (EGA/VGA only).
2026-08-09 17:04:50 +02:00
Whindmar Saksit
30b02d038e [SYSSETUP][BOOTDATA] Unattended execute GuiUnattended:DetachedProgram , SetupParams:UserExecute (#9276)
This PR implements two of the three hooks that allows you to run custom
applications during 2nd-stage setup (the 3rd hook is `...\$OEM$\Cmdlines.txt`,
but that requires file copy operations, etc.)

- `DetachedProgram` is documented[^1] for NT4...2003; it is started before
  installation and `UserExecute` after.
- `UserExecute` is a great place to install VM Guest Additions, one reboot
  less and you have shared folders/clipboard on the first normal boot.

[^1]: https://web.archive.org/web/20090902145959/http://technet.microsoft.com/en-us/library/cc757642(WS.10).aspx
2026-07-16 23:22:27 +02:00
Serge Gautherie
f9e3448f16 [BOOT][ROSTESTS][SHELL32][USERENV] Fix 'StartUp' typo (#8304)
CORE-18893
2026-07-11 23:47:53 +02:00
Carl J. Bialorucki
6117b1bdef [SYSSETUP][BOOTDATA] Add winevdm as an optional module (#9219)
- Add winevdm_setup as an optional module that can be preloaded on install
- Prompt to install both gecko and winevdm if the installer is not on disk
- Change "DisableGeckoInst" to "DisableAddonsInst" because we are installing more than just Gecko now
- No longer use appwiz,,install_gecko hack from wine appwiz
- Delete installer after successfully installing winevdm and gecko locally
2026-07-04 12:03:47 -05:00
Stanislav Motylkov
2f514a5127 [FREELDR] Workaround for BIOSes that report unusual geometry for CD-ROMs
This is needed for ISO filesystem driver to work correctly,
as it assumes 2048 bytes per sector for CD-ROM media.

Happens on 86Box with board `[i430FX] ASUS P/I-P55TP4XE`,
Bochs emulator with `01/17/97-i440FX-2A69HV3CC-00` BIOS,
and some other real machines.

CORE-20640
2026-06-25 19:58:51 +03:00
Dmitry Borisov
4c2fa234c4 [FREELDR:PC98] Report a more detailed system ID for sysdm control panel (#9194)
Report the machine model name for better user experience.

CORE-17977
2026-06-22 15:06:15 +03:00
Eric Kohl
a8f14ffdf7 [BOOTDATA] Add NetSh configuration data to load ifmon.dll by default 2026-06-22 01:26:10 +02:00
Carl J. Bialorucki
34bf566dd9 [SYSSETUP][BOOT] Add ReactOS Server Core install type
- Write InstallationType to registry.
- If installing as Server Core, set shell to cmd.exe.
- Rename "Product Option" to "Install Type" and adjust relevant variable names.
- Reserve Nano Server installation type for future use.

JIRA issue: CORE-20645
2026-06-08 10:11:57 -05:00
Thomas Anderson
fbaccdf3cc [FDEBUG] Update French (fr-FR) translation (#8954) 2026-05-28 18:10:20 +03:00
Hermès Bélusca-Maïto
e45a75888c [BOOTDATA] Cleanup BitBucket and useless redundant HideDesktopIcons registry entries (#9046)
- The `HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons`
  entries were redundant between hivedef.inf and hivesft.inf.
  In addition, adding them were useless, because the "Network Places"
  (network location folder) icon they were specifying is already shown
  by default (like the others) on the desktop.

  This basically reverts commit 054c755d91 (r31545) -- originally added
  for the next commit 562c812846 (r31547).
  The "reason" given by this commit was also wrong: the registration
  of the network folder is done instead in its `HKCR\CLSID\<the_clsid>`
  registry key.

- Similarly, the `HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Bitbucket`
  registry key doesn't need to be pre-created; the shell will create it
  on-demand at runtime.

  This reverts commit bab735cf05 (r35203).
2026-05-21 22:37:23 +02:00
Hermès Bélusca-Maïto
74a0ac0251 [BOOTDATA] Hide the Internet desktop icon in the Live environment (#9046)
CORE-19203
2026-05-21 22:37:22 +02:00
Hermès Bélusca-Maïto
85f2a67a9e [BOOTDATA] Add an "Install ReactOS" shortcut to the Live environment desktop
The shortcut spawns CMD.EXE in the background and runs a specific
command-line that determines where the reactos.exe installer is:

  cmd.exe /D /E:ON /C "start %SystemDrive%\%PROCESSOR_ARCHITECTURE:x86=I386%\reactos.exe"

An alternative could be:

  cmd.exe /D /C "for /F %f in ('"if %PROCESSOR_ARCHITECTURE%==x86 (echo I386) else (echo %PROCESSOR_ARCHITECTURE%)"') do start %SystemDrive%\%f\reactos.exe"

(In this second case an exact value comparison is made, contrary
to the first case where all instances of "x86" would be replaced.)

The reason for using CMD.EXE, is that the `PROCESSOR_ARCHITECTURE`
environment variable contains the "almost" correct value for the
architecture directory name where reactos.exe can be found, except
for the x86 case where `PROCESSOR_ARCHITECTURE` is set to "x86"
(as on Windows) but the directory is named "I386" (as on Windows again).
2026-05-15 19:17:02 +02:00
Hermès Bélusca-Maïto
8eea7255fd [BOOTDATA] Improve the environment-variables hack to keep them unexpanded when building on Windows
The environment variables used by some shell links for the Live-environment,
are passed as data by CMake on the MKSHELLLINK build tool command-line.
When building on Windows, they are transmitted to the tool via CMD.EXE,
and we have somehow to force CMD.EXE to keep these variables unexpanded.

Depending on the precise context where these variables are being used,
either use an "escaped" format with `^%`, as in: `^%SystemRoot^%` ,
or, surround the variable name with `^` instead: `%^SystemRoot^%` .
This second form appears to work when the variable is specified within
a quoted sub-string given to the CMD.EXE command-line.

Addendum to commit a46e1e96ec.
2026-05-15 19:17:01 +02:00
Hermès Bélusca-Maïto
f9effd17bc [BOOTDATA] Simplify add_livecd_shortcut() parameters handling
Only handle `DESTINATION`, and transfer all the other parameters verbatim to `add_link()`.
Addendum to commits 3a3b16af0d, 8cb3980766, and a46e1e96ec (PR #8936).
2026-05-15 19:17:00 +02:00
Hermès Bélusca-Maïto
9761df14f0 [BOOTDATA] Explicitly add "Profiles/Default User/My Documents" to the LiveImage (#8936)
CORE-19691

Removing the `livecd_start.cmd` entry also caused the "Profiles/Default User/My Documents"
directory to not be created in the LiveImage. When booting it, this
caused explorer.exe to hang while loading the desktop, for **some**
(but not all) non-english environments.
(Technically it should instead ignore the non-existing directory if it
cannot create or open it, or drop an error then continue execution...
But that's another bug for another time!)

Adding back the creation of this directory fixes the hang.
2026-05-13 22:16:08 +02:00
Hermès Bélusca-Maïto
a46e1e96ec [BOOTDATA][CMAKE][MKSHELLLINK] Improve shell link shortcuts creation for the LiveImage (#8936)
CORE-15156, CORE-19691, CORE-19692

Finally get rid of the livecd_start.cmd hack introduced waaaay back
in commit ff6d7b0236 (r54514)!
See also commits ea682b6909 (r54512) and 71867403fd (r54513).

For target paths, use the shell "special shell folder" syntax:
`shell:windows\...` or `shell:system\...`, introduced in commit
7b081be46d (PR #7158) by Whindmar Saksit.

Specify an explicit icon path and index for the "Read Me.lnk" shortcut.

Includes ideas from PR #7154 by Katayama Hirofumi MZ.

The generated shell links are confirmed to work on ReactOS, but also on
Windows 2003 and Windows 7.

- Change the MKSHELLLINK icon parameter syntax to be: `-i [icon_path[,nr]]`
  where, either both `icon_path` and icon index are given, separated by
  a comma ',' , or, either the `icon_path` is given but the index is
  optional (default: 0), or, only the icon index is given, in which case
  the icon path is set to the target instead.

- Use a `VERBATIM` command-line for `add_custom_command()`, so that *nix
  builds can cope with parameters containing backslashes.

- The shortcut target path, working directory, command-line arguments,
  and icon path all may specify explicit Win32 environment variables
  (like `%SystemRoot%`, `%HOMEDRIVE%`, etc.). Because these environment
  variables are specified as data given to the build tool via CMake,
  **AND** we have to workaround keeping these variables unexpanded when
  they are transmitted to the tool via CMD.EXE (on builds made on Windows),
  specify these variables in an "escaped" format, using `^%` instead:
  `^%SystemRoot^%`, etc.
  Additionally these paths may be explicitly quoted and passed that way
  to the MKSHELLLINK tool.

  In order to deal with both unquoting the strings and unescaping the
  environment variables, introduce a helper function and invoke them on
  the aforementioned strings.
2026-05-13 22:16:07 +02:00
Hermès Bélusca-Maïto
8cb3980766 [BOOTDATA] CMakeLists.txt: Reorganize a bit the add_livecd_shortcut() invocations (#8936)
- Use variables to define and hold the on-disk shortcuts destination
  directories (the "Profiles/All Users/..."), and use these variables
  in the `add_livecd_shortcut()` calls; this allows shortening the
  corresponding lines.

- There are currently two shortcuts: "Command Prompt" and "ReactOS
  Explorer", that are added to more than one destination.
  Previously, we had to invoke `add_livecd_shortcut()` for each
  destination. However, each invocation recreated the _**same**_
  shortcut file (with the same .lnk file name) in the build directory.

  To solve this, the `dest` parameter of the `add_livecd_shortcut()`
  function, is replaced by a `DESTINATION` keyword, whose value is
  a list of one or more destination directories, where the shortcut
  should be added.
2026-05-13 22:16:01 +02:00
Hermès Bélusca-Maïto
3a3b16af0d [BOOTDATA][CMAKE] Improve the add_livecd_shortcut/add_link helpers (#8936)
CMakeLists.txt: `add_livecd_shortcut()`:

Turn the macro into a function. Instead of keeping a `LIVECD_SHORTCUTS`
global-scope list variable, just define a `livecd_links` custom target
as initially empty, then, using `set_property()`, directly append to it
its "SOURCES" i.e. generated .lnk files.
(This is equivalent to using `target_sources(livecd_links PRIVATE ...)`
only in CMake 3.20+ for the custom target.)

CMakeMacros.cmake: `add_link()`:

- Since both `name` and `path` parameters are mandatory, make them
  explicit in the function declaration instead of defining them as
  "optional" parameters.

- Remove the `set_source_files_properties(... PROPERTIES GENERATED TRUE)`
  invocation that followed the `add_custom_command(...)` call, since,
  per the documentation[^1],
  "Each output file will be marked with the `GENERATED` source file
  property automatically." (Since CMake 3.2 at least.)

[^1]: https://cmake.org/cmake/help/v3.17/command/add_custom_command.html
2026-05-13 22:16:00 +02:00
Timo Kreuzer
e9a6d20847 [NLS] Add codepage 20932 (Japanese - EUC-JP) 2026-05-08 07:30:20 +00:00
Hermès Bélusca-Maïto
8fa6679b9f [BOOT] Remove last instances of "hybridcd"
Addendum to commit b2e33f26eb (PR #7313)
2026-05-07 18:03:09 +02:00
Carl J. Bialorucki
c03dd1ba75 [BOOTDATA] Add commented out block for setting visual style 2026-05-07 08:34:25 -05:00
Carl J. Bialorucki
548f0740df [BOOTDATA] Add unattend.inf to livecd target
Needed for 0.4.16 release to set a default visual style
2026-05-07 08:34:25 -05:00
Hermès Bélusca-Maïto
5a8039fe51 [BOOTDATA] Shorten the debug-enabled boot entry labels 2026-05-06 22:29:48 +02:00
Hermès Bélusca-Maïto
81752ca211 [FREELDR] Reset BootType before reading its value in the freeldr.ini OS section, if it exists
Because if the value doesn't exist in the OS section, the value isn't
reset and the code would reuse a stray one that was for the previous entry.
2026-05-06 22:29:47 +02:00
Hermès Bélusca-Maïto
45aa3c2a17 [FREELDR] Consider an unkeyed OS entry in freeldr.ini to be a menu separator 2026-05-06 22:29:46 +02:00
Hermès Bélusca-Maïto
68312dedbe [FREELDR:UEFI] uefidisk.c: Remove stray global variable
Addendum to commit 1fd9d11f16 (PR #5219)
2026-05-06 22:29:46 +02:00
Hermès Bélusca-Maïto
07f36b52aa [FREELDR] peloader.c: Minor nits 2026-05-06 22:29:39 +02:00
Daniel Victor
54422db2b8 [FREELDR] Fix UEFI IA-32 boot (#8886)
The PAE flag might be enabled on some x86-32 UEFI platforms, causing a crash in the kernel.
```
Assertion C:\reactos-master\reactos\ntoskrnl\mm\ARM3\miarm.h(971): PointerPte->u.Hard.Valid == 0
nt!MI_WRITE_VALID_PTE+0x28:
822d1d08 cd2c            int     2Ch
```

Tested using qemu with `OVMF32_CODE_4M.fd` firmware, and with 32bit UEFI in VMware.
2026-04-30 23:56:19 +02:00
Hermès Bélusca-Maïto
bac97c58e2 [FREELDR] Rework the contents of the FreeLoader setup, custom-boot, and NT advanced boot options menus
- Make the menu contents more dynamic; inspired by PR #8871 by Ahmed Arif.

- advopts.c: Double-relicense ntldropts.c/h to GPL-2.0-or-later or MIT,
  as most of the code in this file has been rewritten for years now.

- options.c (FreeLoader setup options menu):
  Double-relicense options.c/h to GPL-2.0-or-later or MIT, as most
  of the code in this file has been rewritten since commit 9ff4e4b9ef.
2026-04-28 23:23:25 +02:00
Hermès Bélusca-Maïto
925d227faa [FREELDR:NTLDR] Move NtLdrUpdateLoadOptions() to ntldropts.c and rename it to NtLdrUpdateOptions()
Also:
- Update SAL annotations to SAL2;
- Double-relicense ntldropts.c/h to GPL-2.0-or-later or MIT.
2026-04-28 23:23:24 +02:00
Hermès Bélusca-Maïto
b2e33f26eb [REACTOS] Merge our bootcd and livecd into an all-in-one ReactOS BootCD (#7313)
CORE-9069, CORE-13525, RELEASE-11

This new BootCD contains the functionality of both the original bootcd
(text-mode 1st-stage installer) and the livecd (that will include the
1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.

Some details:

- The "hybridcd" build target is completely removed, since now the new
  BootCD *is* basically what we used to call "hybridcd".

- The "livecd" build target is kept so far (to minimize the code changes),
  but internally I start to refer to it as "LiveImage", and is reduced
  to a minimum.

  A minimal non-bootable "liveimg.iso" is built (but currently not
  included within the BootCD). Its purpose will be to implement the
  "ReactOS Live" functionality as a RAMDISK.
  (We currently don't support other file formats apart from ISO and
  flat disk for a RAMDISK).

  The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
  BootCD file tree the files from the LiveImage.
  These files add two root directories, "Profiles" and "reactos"
  (which is the SystemRoot for the non-ramdisk LiveImage).

- The minimal text-mode ReactOS installation used for the 1st-stage
  installer, including USETUP itself, and the executable for the
  1st-stage GUI installer and the reactos.cab (installation source),
  are moved to the root directory called "i386" (ideally, one directory
  per architecture).

- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
  are left untouched, i.e. they are only constituted of the 1st-stage
  text-mode installation only, but placed in a per-architecture root
  directory ("i386", etc. as for the bootcd).

- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
  available via the Advanced Boot Options F8 menu in Debug builds, for
  testing purposes only, in a subsequent commit.

This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
2026-04-28 23:11:10 +02:00
Hermès Bélusca-Maïto
16e6da0e96 [FREELDR:SETUPLDR] Add the missing known platform-specific SourcePaths where TXTSETUP.SIF can be found
And slightly improve the search loop.

- Unconditionally look into the root directory as well, in order to cover
  all possible boot disk layouts in case someone customizes the ReactOS
  boot media layout.

- Improve the `InfOpenFile()` call error handling, in order to show the
  erroneous line _iff_ the call failed because of a wrong syntax in
  TXTSETUP.SIF . Distinguish it from a failure because the file doesn't
  exist in the source path being tested (in which case, no error is shown).
2026-04-28 23:11:09 +02:00
Hermès Bélusca-Maïto
4dc1ea6c8f [BOOTDATA] Move the legide.sys entry in txtsetup.sif into the x86-specific section
The legide.sys driver, introduced in commit ae2827f481, is compiled *ONLY*
for the x86 platform (not x64 nor the others) as specified in commit 7d33f7503b.
Fix the file installation copy by moving its entry into the x86-specific section.

Addendum to commit 7174935d73 (PR #8888). CORE-17256
2026-04-28 23:07:42 +02:00
Carl J. Bialorucki
7174935d73 [BOOTDATA] Fix legide.sys load on boot (#8888)
After merging the new ATA driver, FreeLdr complains about not being able
to load legide.sys. Fix that by adding legide.sys driver to txtsetup.sif
so FreeLoader can load it.

Addendum to ae2827f481. CORE-17256
2026-04-22 10:28:38 +03:00
Dmitry Borisov
7d33f7503b [UNIATA] Disable the driver and enable the new ATA stack
Also fix descriptions for devices 1166:0241 and 1166:0242.
See https://bugzilla.kernel.org/show_bug.cgi?id=10424 and
aeb74914ef

CORE-17256
2026-04-21 15:01:22 -05:00
Timo Kreuzer
420a4bc9cb [FREELDR] Add NlsLeadByteInfo to rtl/nlsboot.c 2026-04-21 13:13:33 +00:00
Hermès Bélusca-Maïto
a2269ef7f9 [BOOTDATA] hivesys.inf: "OsLoaderPath" and "SystemPartition" shouldn't be pre-hardcoded
These two registry values, stored in `HKEY_LOCAL_MACHINE\SYSTEM\Setup`,
are generated at runtime by the kernel; they are based on the current
values of: `LoaderBlock->NtHalPathName` and `LoaderBlock->ArcBootDeviceName`
respectively.

In particular, hardcoding `SystemPartition` to a default value
"\Device\Harddisk0\Partition1" , would be as random as hardcoding it
to anything else, since nothing justifies that there exists a partition
on the first harddisk, and if there is one, nothing guarantees that it
is one that was used to boot the operating system... Especially when
booting a LiveCD!
2026-04-16 17:43:40 +02:00
Hermès Bélusca-Maïto
e2c92c0ffb [FREELDR] Switch partition interface to using the more generic PARTITION_INFORMATION
instead of the MBR-specific PARTITION_TABLE_ENTRY structure.

Simplify also some aspects of the code:

- for MBR code, avoid copying around partition entries, but use
  pointers instead;

- more generally, use the actual disk sector size instead of guessing,
  and pass it to the partition interface routines.
2026-04-15 18:19:20 +02:00