CORE-10495 CORE-13672
- Fix how the ERRORLEVEL and the last returned exit code are set by
EXIT and CALL commands, when batch contexts terminate, and when CMD
runs in single-command mode (with /C).
Addendum to commit 26ff2c8e, and reverts commit 7bd33ac4.
See also commit 8cf11060 (r40474).
More information can be found at:
https://ss64.com/nt/exit.htmlhttps://stackoverflow.com/a/34987886/13530036https://stackoverflow.com/a/34937706/13530036
- Move the actual execution of the CMD command-line (in /C or /K
single-command mode) from Initialize() to _tmain(), to put it on par
with the ProcessInput() interactive mode.
- Make ProcessInput() also return the last command's exit code.
We note two things, when CMD searches for the corresponding label in the
batch file:
- the first character of the line is always ignored, unless it's a colon;
- the escape caret ^ is supported and interpreted.
Fixes some cmd_winetests.
- The ':EOF' label feature is available only when extensions are enabled.
- Anything that follows the ':EOF' label, separated by at least one
whitespace character, is ignored, and the batch file terminates.
- To this purpose use the ParseErrorEx() that correctly sets the
bParseError flag, and return the partially-parsed command so that
it gets echoed as well for diagnostics purposes (Windows-compatible).
- Any other parameters specified after (or before) the '/?' switch for
the FOR and IF commands, are considered fatal syntax errors as well,
thus we employ the ParseErrorEx() as well.
CORE-13713 CORE-13736
- In case execution of all batch contexts is stopped (by selecting "All"
at the Ctrl-C/Ctrl-Break prompt), notify as well the CheckCtrlBreak()
signal handler once there are no more batch contexts (this in effect
resets the internal 'bLeaveAll' static flag in CheckCtrlBreak).
This is an adaptation of the fix present in FreeCOM 1.5, first
described in https://gcfl.net/FreeDOS/command.com/bugs074g.html .
- Introduce a ParseErrorEx() helper that sets the 'bParseError' flag and
displays a customized syntax-error message, only for the first syntax
error encountered. Implement ParseError() around the *Ex function.
- In batch mode, echo the original pre-parsed batch file line if a parse
error has been encountered.
- When running a compound command - including IF, FOR, command blocks -,
and that control flow is modified by any CALL/GOTO/EXIT command,
detect this while running the compound command so as to stop it and go
back to the main batch execution loop, that will then set up the actual
new command to run.
- In GOTO, do not process any more parts of a compound command only when
we have found a valid label.
- Use a common large string buffer for temporary command substitutions/expansions,
instead of having such a buffer in the local stack of the parsing and
echoing functions that may be called recursively. Since CMD executes
synchronously we know that this common buffer can only be used once at
a time.
- Also do a small code cleanup in ParseIf(), ParseFor() and ParseCommandPart().
Add a MSCMD_ECHO_COMMAND_COMPAT define to be able to switch back to our
older but less broken behaviour at compile-time.
- Append a trailing space to commands when those have a parameter,
as well as after a command-block closing parenthesis.
- Space around redirection strings need to be switched around.
- Use ConOutPuts() instead of ConOutPrintf() for displaying strings that
are not printf formatted.
- When echo-ing/unparsing FOR command, any possible FOR variables
present in the FOR parenthesized list (before the "do" part) should be
substituted as well.
- Change the messagebox's icon type from warning icon to question icon, because this is done in Windows Regedit too.
- Use two buttons (Yes and No) or three buttons (Yes, No, and Cancel) depending on the file count.
CORE-15494
Co-authored-by: Stanislav Motylkov <x86corez@gmail.com>
The CMD_LINE_CACHE index (idx) does not update when programs are closed.
Compare it with the process id (pid) in the cache and determine the pid
by the index in the same cache.
CORE-17115
Make the meta key in the OSK have modifier key behaviour.
Changed all the .rc files in the OSK so that the meta key doesn't release on it's own and needs a second click to release.
CORE-17161
Also update the includes.
It will allow to use those declarations globally where they are required (e. g. for SvchostPushServiceGlobals functions in some services).
No functional changes.
To avoid leaking private data into logs by default.
Some testers may consider their DNS-suffix private data.
And DnsIntCacheAddEntry() logs that via Record->pName.
- Resize the window slightly when compiled with REMOVE_ADVANCED to avoid deadspace at the bottom of the window.
- Skip over the non-printable characters by starting with character ' ' + 1.
- Instead of iterating over every cell, simply compute the cell x and y using the CellSize.
- Modify behaviour of charmap to allow large character render on mouse move, only hiding the larger character on double click.
- Simplify math for moving window to be on desktop.
Added FIXME to highlight this doesn't work well on multi-monitor setups.
Changed xPos and yPos to LONG since negative numbers are valid on multi-monitor setups.
- Do not draw invalid glyphs on the map (can happen when switching fonts or filtering existing font).
- Do not allow mouse-over of invalid glyphs.
- Fix bug that caused the Help button to remain enabled as it was being modified before it was even created.
- Do a better job at finding the correct glyph under the mouse.
- Ensure the active cell is cleared correctly.
- Invalidate the rect around the previously active cell to ensure it gets redrawn as inactive.
- Fix bug from CORE-10518 (initial active cell was not being invalidated on scroll).
- Do not try to copy a character to the output if there is no active cell selected.
- Populate the advanced portion of the screen with several built-in code pages (the list is hardcoded so that we don't enumerate everything).
- Add functionality to filter the character map by a code page (called a character set in this program).
- Some fonts list 0x0000 as drawable, even when it isn't, so ignore any valid glyphs that contain it.
- Add download source in settings dialog, and apply it when download .cab file
- Now user should specify full rappmgr.cab URL
- Check if URL is vaild in settings dialog
- Move source settings to the end of struct (will refactor settings to one value per option later)
Implementation of functional code for log properties page in order to allow user to :
- Make modification and have them taken into account when properties page is closed / apply is used;
- Set defaults (including correction of default max size);
- Delete content of log;
- Make "Apply" button functional based on user inputs;
- Correct default value during installation (duration, size).
- Improve InitPropertiesDlg() error;
- Fix SavePropertiesDlg(): When the event log key does not exist, it is not recreated by the event log viewer.
- GetDisplayNameFileAndID(): Show the error also when opening the event log key fails.
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
* - Fix of missing invalid handle check
- Fix of Address & status bar incorrect display after rename
- Refactoring of Treeview WM_NOTIFY code, for better consistency with WM_NOTIFY management for ListView
* Fix following review (space in #define)
* Cleanup following review
* fix following review
* Fix of round 3 of review comments
* UpdateAdress kept in its original location
* fix
* fix (extern missing)
* both extern removed
* Review comments
Error message being added in order to support CORE-17048
- Print message on failed memory allocations.
- Functions return error code instead of exit code.
- Convert error code to exit code in the main function only.
- Always free the allocated memory.
- Fix bug from previous commit: Use _tprintf instead _putts to print messages.
In addition to that, add the missing function prototypes in the DLL dialog header of Utilman, add missing IN/OUT annotations and remove CheckUtilityState() prototype which is barely used (it's not implemented either).
## Purpose
[SYSDM]
- When closing System Properties page, log show
(win32ss/user/ntuser/windc.c:749) err: [00060138] GetDC() without ReleaseDC()!
because GetDC() is called (multiple times) without properly calling ReleaseDC() as required in order to release a device context.
- This module also lacks some error management in case null DC are provided (on error).
- LiveCD Userinit, based on SYSDM is affected too.
[DESK]
- Fix missing ReleaseDC related to the spectrum (color depth)
## Proposed changes
- ReleaseDC() added.
- Error management in case of null DC.
- Overall alignement of LiveCD Userinit and SYSDM.
- When exporting registry keys (to .reg files) some variables from the heap are not free'd while the debug log indicates "HEAP: Trying to free an invalid address".
- This is due to the export_registry_key() function that calls
HeapFree() for reg_key_name. But this variable is an argument provided by the caller, which is always a statically defined array of WCHAR.
- Meanwhile reg_key_name_buf is never free'd and cause a memory leak each time the function gets called.
- Implement error message for all failure condition of RAPPS Download
- Implement logging for failure conditions not needing user complementary awareness (cancellation)
- Support for localization
CORE-16851
Purpose
=======
- Current design does not warn user nor logs DEBUG traces when Service Start/Stop command fails or reach timeout.
- Current Service Start/Stop progress window are WS_EX_TOOLWINDOW which reduce lisibility, is a ReactOS specificity without good reason.
Proposed changes
================
- DPRINT1 traces added on failure cases.
- Error Message box presented to user upon failure with explicit root cause identification.
- Change Dialog definition to standard window.
- Move translations to netmsg.dll.
- Keep italian translation as a comment because netmsg.dll does not have an italian translation yet.
- Remove obsolete resource files.
Previously the code had a mixture of 'sz', 'wsz', 'lp' and 'lpwsz' Hungarian annotation prefixes which could bring confusions about the nature of the annotated variables. From now on all of these variables have a well defined annotation. Furthermore, add a missing argument annotation to LaunchProcess().
Doing this causes deadlocks, the process runs out of worker threads and
the system runs out of memory by allocating too many I/O completion ports
when using ntdll.dll from Windows.
The left x-margin was inconsistent within 'General'-tab
and tabbing through multiple tabs looked unprofessional
because 'General'-tab had much smaller left-margin.
- Disable the 'Permissions' item in the main menu, when 'My Computer' is selected.
- Enable the 'Permissions' item in the tree view context menu.
CORE-16889
Windows XP and Server 2003 Utility Manager has a dedicated library for the resources and other stuff. Utility Manager is just a simple process that loads it. Hence create a library for the program, UManDlg.dll, and move the resources and other stuff there.
In addition to that, use ExtractIconW to get the icon resource from the program (the DLL doesn't share icons by default) and remove the icon resource from the "About" dialog window. Also change the encoding type of other translation files to UTF-8 (which were previously set with UTF-8 with BOM).