Commit Graph

88810 Commits

Author SHA1 Message Date
Hermès Bélusca-Maïto
e505a8dbaa [MKSHELLLINK] Support creating Unicode-aware shortcuts (#8936)
Support the creation of shortcuts that can use Unicode versions of
their name (description), relative path, working directory, command-
line arguments, and icon location.
This option can be selected at runtime with a switch.

Additionally:

- Ensure that `wchar_t` is 16-bit wide.

- Introduce and use a "poor-man" ANSI-to-UTF16LE `my_mbstowcs()` routine
  to convert the ANSI strings, for the Unicode scenario mentioned above.
  We cannot use the host mbstowcs() routine, since on *nix systems the
  iconv library being used may have been compiled with a 32-bit `wchar_t`
  (even if the tool is compiled with: `-fshort-wchar -fwide-exec-charset=UTF-16LE`),
  as this is the case with the GitHub actions build bots.
2026-05-13 22:16:04 +02:00
Hermès Bélusca-Maïto
b36fd06b70 [MKSHELLLINK] Don't care about the DOS name of PIDL path elements (#8936)
Keep the old code just for reference purposes.
2026-05-13 22:16:03 +02:00
Hermès Bélusca-Maïto
d6f4c0887a [MKSHELLLINK] Fix a bug in the special shell folder handling code (#8936)
Addendum to commit 7b081be46d (PR #7158).

CORE-15156, CORE-19691, CORE-19692

Since commit 7b081be46d (PR #7158), one can create shell links that
point to a file in a subdirectory of SystemRoot (e.g. X:\reactos) or
SystemRoot\system32 using a shell "special shell folder" syntax, for
example:
  `shell:windows\Readme.txt` (--> X:\reactos\Readme.txt) ,
  `shell:windows\system32\cmd.exe` , or:
  `shell:system\cmd.exe` (--> X:\reactos\system32\cmd.exe) .

An `EXP_SPECIAL_FOLDER` data block allows parts of a shortcuts pidl
to be overridden by such a special folder.

- In these cases, try to build the shortcut pidl such that it faithfully
  mirrors the intended path. For example, when using `shell:system\cmd.exe`,
  resolve the `shell:system` part to `X:\reactos\system32` instead of
  just `X:\reactos` ; this helps understanding what happens when
  spelunking into such a shell link. This also helps when converting
  such a path to one containing unexpanded environment variables, for
  the purposes of making the Windows explorer shell show the correct
  shortcut target path, or resolve it independently of the SystemRoot
  being used; and, to be able to use the path for the shortcut icon.

- Get rid of the `index`/`specialindex` variables.
  These were used for making the `EXP_SPECIAL_FOLDER` data block point
  to the correct path suffix part that follows the special path prefix
  in the ID list.

  Hardcoding its value caused problems when the special path prefix is
  made to contain more path elements than just "X:\reactos". For example,
  "X:\reactos\system32" in the case of the `shell:system` prefix.
  Instead, retrieve the length of the special path prefix, then, compare
  it with the length of the path elements being parsed in the loop.

  ----

  This problem was made explicit when the the following code path is run:
  ```
  shell32!CShellLink.cpp:CShellLink::Load(IStream *stm)
  --> ILCombine(folder, m_pPidl + pSpecial->cbOffset)
  ```
2026-05-13 22:16:03 +02:00
Hermès Bélusca-Maïto
55092de280 [MKSHELLLINK] Enhance the code (#8936)
- Use the `bool` type from `stdbool.h`

- Update "Specification" URL, using instead the
  "[MS-SHLLINK]: Shell Link (.LNK) Binary File Format"

- Document which structures in `undocshell.h` correspond to those
  in MKSHELLLINK.

- Add `SLDF_*` constants from PSDK `shlobj.h` for consumption, and
  alias the tool-specific `LINK_*` ones to these.

- The first member of the `LNK_HEADER`/`SHELL_LINK_HEADER` structure
  is not a signature, but its size.
  Fix the `FILETIME` fields ordering. The `IconIndex` member is signed.
  The `HotKey` member is a 16-bits value.

- The third member of the `ID_LIST_GUID`/`tagGUIDStruct` structure is
  not "dummy", but is a sort-order. Add also some known corresponding
  values, and unhardcode the value used in the code.

- Make the `is_path_separator()` return a `bool`, and use the helper
  more thoroughly in the code.

- Improve the help/usage text shown by the tool.

- In case an invalid/unknown argument is encountered, set the `bHelp`
  flag just after showing the error, so as to display the tool usage
  and bail out early.

- Improve/clarify some code comments.

- Update the file header notice.
2026-05-13 22:16:02 +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
Serge Gautherie
00df1d5837 [GITHUB] build.yml: Update GitHub Actions dependencies (#8997)
Default Node.js version will be changed from 20 to 22 and Node.js 20 will be removed from runner images: https://github.com/actions/runner-images/issues/14029

> This change will be rolled out beginning May 19, 2026 and will complete by May 26, 2026.

- actions/cache: v4 to v5.
- actions/upload-artifact: v5 to v7
2026-05-13 20:56:42 +03:00
Timo Kreuzer
313be0c83e [MLANG] Fix class registration regression
See CORE-20611
2026-05-12 09:43:02 +00:00
Hermès Bélusca-Maïto
a4b6fe9630 [SYSSETUP] Revamp the Finish page, adapted from the 1st-stage setup
Also, disable the "Back" button for the Welcome and Install processing pages.
2026-05-12 00:28:02 +02:00
Hermès Bélusca-Maïto
fe4ea0ded4 [SYSSETUP] Fix some wizard pages
- Remove hardcoded FONT resource attributes (fallback to defaults).

- Unify per-language CAPTIONs of wizard pages.

- Unify the Welcome page title control sizes with those of
  the Finish page and what's used in the 1st-stage GUI setup.
  Unify these also across translations.
2026-05-12 00:28:01 +02:00
Hermès Bélusca-Maïto
51c32094af [SETUP:REACTOS] GUI setup: Revamp the Finish/Reboot page; re-enable auto-reboot
Add also an Abort page that is displayed when the user cancels the
1st-stage setup, or when an error occurs and installation is aborted.

- Rewrite the text, change the layout;

- When the installer is started without any Win32 shell, or the
  installation is running in unattended mode, the Finish/Abort
  pages only offer to restart the computer with a 15-second timeout
  countdown.
  If the user has opened programs with interactive windows in the
  meantime, the timeout countdown just pauses whenever the installer
  window is de-activated/unfocused; it restarts when the window is
  re-activated. (This currently doesn't work in ReactOS due to a bug
  in the `WM_ACTIVATE` message delivery.)

  If, on the contrary, the installer is started by the user when a
  Win32 shell is running, the Finish/Abort page offers to either restart
  the computer "now", or postpone the restart to later (when the user
  manually restarts the computer); no reboot countdown is present there.

- Disable/hide the "Back" button for the Install processing page.
2026-05-12 00:27:57 +02:00
Hermès Bélusca-Maïto
310724e3e1 [SETUP:REACTOS] Improve the DisplayMessageV, SetWindowResTextW, and SetWindowResPrintfVW helpers
- In `SetWindowResTextW()` and `SetWindowResPrintfVW()`, don't assume a
  fixed size of 256 characters max for the retrieved resource strings,
  but allocate a suitably-sized buffer IF the resource string is longer
  than the fixed buffer. (Use the fixed buffer only if the string is shorter.)

- Introduce two helpers `LoadAllocStringW()` and `FormatAllocStringWV()`,
  based on existing code from `DisplayMessageV()`, and use these for
  `DisplayMessageV()`, `SetWindowResTextW()`, and `SetWindowResPrintfVW()`.
2026-05-12 00:26:58 +02:00
Hermès Bélusca-Maïto
630369f893 [SETUP:REACTOS] Fix some translations
- Add missing translations in the Hindi file for:
  `IDD_UPDATEREPAIRPAGE` and `IDD_SUMMARYPAGE` dialogs,
  and `IDS_INSTALLATION_*` and `IDS_PARTITION_*` strings.
  Addendum to commit f5960cea70 (PR #951).

- Update some sentences in the `IDD_UPDATEREPAIRPAGE` dialog.

- Harmonize the length of the `IDD_DEVICEPAGE` dialog comboboxes
  amongst all the translations.
2026-05-12 00:26:58 +02:00
Eric Kohl
425ea0378b [NETSH][REACTOS] Add MatchTagsInCmdLine stub
MatchTagsInCmdLine is similar to PreprocessCommand except that the parameters dwMinArgs and dwMaxArgs are missing.
2026-05-11 22:56:06 +02:00
Timo Kreuzer
a21d19a817 [ACTIVEDS.TLB] Import from Wine-10.0 2026-05-11 18:21:34 +00:00
Timo Kreuzer
5e436637fe [ACTIVEDS] Sync to Wine-10.0
Also add it's COM registration, so it actually works.
2026-05-11 18:21:34 +00:00
Timo Kreuzer
4bf2a30395 [WIDL] Remove a hack that inserted WIN32_LEAN_AND_MEAN into headers
This was supposedly to improve compile times, but it breaks our headers.
2026-05-11 18:21:34 +00:00
Timo Kreuzer
fa433604cf [COMSUPP] Define WIN32_LEAN_AND_MEAN
This is needed to prevent compile errors, when _INC_WINDOWS is defined.
So far WIN32_LEAN_AND_MEAN is wrongly defined by some idl generated headers.
In VS with native headers similar issues exist.
2026-05-11 18:21:34 +00:00
Timo Kreuzer
101f7652df [UUID] Don't use a precompiled header
We cannot use a precompiled header, because it would include headers before including initguid.h, preventing GUIDs to be defined.
2026-05-11 18:21:34 +00:00
Timo Kreuzer
301b783922 [ACTIVEDS_WINETEST] Import from wine-10.0 2026-05-11 18:21:34 +00:00
Timo Kreuzer
a596d654b5 [PSDK] Update some files from wine-10.0
- Import adserr.h
- Sync adshlp.h
- Sync iads.idl
2026-05-11 18:21:34 +00:00
Serge Gautherie
42d178789b [KERNEL32] GetStartupInfoA(): Check other thread result at the latest (#8326)
Give a bit more time to succeed.

- Remove a remnant assignment.
- Check the interesting variable itself and as late as possible.

Follow-up to 0.4.16-dev-1610-g 4f61d2ea04 (#8282).
2026-05-11 14:44:24 +03:00
Ahmed Arif
45303a2782 [PEFIXUP] Recalculate checksums for kernel-mode images (#8969)
lld can leave the PE checksum field zero for reproducible output. This is acceptable for user-mode images, but Windows rejects kernel-mode images without a valid checksum.

Keep preserving linker-produced zero checksums for other images, but force checksum recalculation when pefixup is operating on a kernel-mode image.

This was found while validating Clang-built amd64 kmtest drivers against Windows 7: the same driver source built with GCC loaded, while the Clang/lld-built .sys failed with ERROR_BAD_EXE_FORMAT / 0xC1. Recalculating the PE checksum made the Clang-built driver load and the tests run correctly.
2026-05-11 00:48:41 +03:00
Eric Kohl
f86835f4f0 [IFMON] Improve the output of the 'show address' and 'dump' commands 2026-05-10 19:14:11 +02:00
Serge Gautherie
f00e1cd6aa [NTOS:PNP] IopGetBusTypeGuidIndex(): Remove 1 unwanted ExFreePool()
in a failure case.

CORE-12791
2026-05-10 14:07:51 +00:00
Serge Gautherie
25a6fdf867 [NTOS:MM] Convert some annotations to SAL2 and fix them
And add a specific ASSERT(SectionOffset) in MmMapViewOfSection().
2026-05-10 11:05:30 +00:00
Eric Kohl
54c667caaa [NETCFGX] Fix calls to wcsicmp 2026-05-10 11:58:02 +02:00
Eric Kohl
d55dbfc87f [NETCFGX] Implement INetCfgComponentBindings::SupportsBindingInterface 2026-05-10 10:47:41 +02:00
Eric Kohl
526a79ce02 [NETCFGX] Retrieve remaining interfaces from notify OBJECT_BASED_STORAGE_DEVICE
- Retrieve the INetCfgComponentNotifyBinding, INetCfgComponentNotifyGlobal and
  INetCfgComponentUpperEdge interfaces from notify objects.
- If implemented by a notify object, call
  INetCfgComponentNotifyGlobal::GetSupportedNotifications right after the initialization
  of a notify object.
2026-05-10 02:14:02 +02:00
Doug Lyons
7066dcccae [WINESYNC] Remove reference to winfile which was removed in 2023 (#8972)
Housekeeping only. Remove reference to 'winfile' from WINESYNC.txt.

This was removed from the ReactOS tree in 2023 by Victor Perevertkin.
Reference commit: https://github.com/reactos/reactos/commit/b82353c.
2026-05-09 19:02:12 -05:00
Alex Mendoza
7cba1c80a7 [SHELL32]: Fix E_OUTOFMEMORY not being returned on allocation failure in ASSOCSTR_DEFAULTICON (#8866)
Fix `ASSOCSTR_DEFAULTICON` in `CQueryAssociations::GetString` incorrectly returning **S_OK** instead of **E_OUTOFMEMORY** when HeapAlloc fails.
2026-05-10 00:50:46 +02:00
Alex Mendoza
d8f0c3bef2 [PSDK] Add missing values to _APTTYPEQUALIFIER (#8873)
Add missing `APTTYPEQUALIFIER_APPLICATION_STA` (enum 6) and `APTTYPEQUALIFIER_RESERVED_1` (enum 7) to `_APTTYPEQUALIFIER`.

Documented at:
https://learn.microsoft.com/en-us/windows/win32/api/objidl/ne-objidl-apttypequalifier
2026-05-10 00:48:42 +02:00
Serge Gautherie
aec671a530 [INTEROP_UNITTEST] Clarify output (#8306)
Somewhat help to read and interpret output, as the program is.

- Always output locale with 4 digits
- Always output PART items as s%02d:i%u
- Improve handling module/part errors
- Output string length too
  as a hint that ''s are not actually empty.

CORE-18893
2026-05-10 01:44:43 +03:00
Eric Kohl
ba05130718 [PSDK] Fix a type in netcfgx.h 2026-05-09 23:16:03 +02:00
Václav Zouzalík
b1b9530281 [MSGINA] Update German (de-DE) translation (#8955)
* Update German (de-DE) translation
* Add file header

Co-authored-by: Stanislav Motylkov <x86corez@gmail.com>
2026-05-09 17:08:00 +00:00
Katayama Hirofumi MZ
58fa10d453 [NOTEPAD] Minor formatting (#8965)
Follow-up of #8938.
JIRA issue: N/A
Just indent some lines of a switch block in ReactOS style.
2026-05-09 20:35:51 +09:00
Katayama Hirofumi MZ
a2e1e1d963 [NOTEPAD] Make loading file faster (#8938)
Performance improvement. This PR
will improve the speed of loading
a large file.
JIRA issue: CORE-19898
- Change 2 passes to 1 pass on
  ANSI/UTF-8, omitting precise
  buffer size calculation.
- Change LocalReAlloc calls to
  LocalAlloc.
- ReadText function now returns
  HLOCAL and no longer takes
  phLocal.
2026-05-09 20:24:51 +09:00
Thomas Anderson
71314c23a5 [APPWIZ] Update French (fr-FR) translation (#8951) 2026-05-09 00:09:36 +02:00
Timo Kreuzer
a10eff6e2c [KERNEL32_APITEST] Add tests for GetEnvironmentVariable(A/W) 2026-05-08 20:49:38 +00:00
Timo Kreuzer
00d78f9310 [NTDLL_APITEST] Add tests for RtlQueryEnvironmentVariable(_U) 2026-05-08 20:49:38 +00:00
Timo Kreuzer
414d57b58b [GDI32_WINETEST] Update to wine-10.0 2026-05-08 19:30:33 +00:00
Timo Kreuzer
f85e19ecfb [GDI32] Relax an ASSERT
This prevents an assertion failure in gdi32_winetest
2026-05-08 19:30:33 +00:00
Timo Kreuzer
eb23595829 [SETUPAPI] Add stubs for Vista exports 2026-05-08 19:30:33 +00:00
Timo Kreuzer
156faa5d6a [PSDK] Update devpkey.h from Wine-10.0 2026-05-08 19:30:33 +00:00
Timo Kreuzer
d50588f132 [SDK/WINE] Add some headers from Wine-10.0
- wine/ntgdi.h
- wine/d3dukmdt.h
- wine/ddk/d3dkmthk.h

These are needed for gdi32_winetest
2026-05-08 19:30:33 +00:00
Timo Kreuzer
1f44845067 [SDK] pnp.idl: Guard DEVPROPKEY from redefinition 2026-05-08 19:30:33 +00:00
Timo Kreuzer
4ad3fcbcaf [SDK] setupapi.h: Add SetupDiGetDevicePropertyW 2026-05-08 19:30:33 +00:00
Timo Kreuzer
e7216ce67f [RTL/x64] Improve RtlCaptureContext/RtlRestoreContext
In user mode use fxsave64/fxrstor64, which handle legacy FP, MMX and XMM and MXCSR, in kernel mode save/restore XMM registers and MXCSR manually.
2026-05-08 19:04:31 +00:00
Doug Lyons
17846e97d0 [SYSSETUP] Fix wine gecko install in second stage setup (#8885)
CORE-20422

Restore the ability to download ReactOS's Wine Gecko during the Second Stage Installer.
Reverts a part of commit https://github.com/reactos/reactos/commit/6b9122b.
It reverts all of the changes there to "win32/syssetup/install.c".
2026-05-08 13:49:17 -05:00
Ostap Burtoviy
2c377eba79 [TRANSLATION] Improve Ukrainian (uk-UA) translation (#8756)
Improve Ukrainian translation across several components.

- Replace "настройка" with "налаштування" (russism)
- Translate missing strings.
- Update to modern file headers, also fix typo "Ukraianian" -> "Ukrainian"
2026-05-08 21:24:40 +03:00