Commit Graph
1479 Commits
Author SHA1 Message Date
Hermès Bélusca-Maïto 0695ecbfd6 [CMD] FOR: Additional Windows' CMD compatibility "fixes" for FOR /F token parsing command.
This compatibility behaviour implements the buggy behaviour of FOR /F
token parsing that can be observed in Windows' CMD, and that is tested
by the cmd_winetests.
It can be disabled at compile time via the MSCMD_FOR_QUIRKS define.

It fixes additional cmd_winetests, in concert with commit cb2a9c31.

Explanation of the implemented buggy behaviour
==============================================

In principle, the "tokens=x,y,m-n[*]" option describes a list of token
numbers (must be between 1 and 31) that will be assigned into variables.
Theoretically this option does not cumulate: only the latest 'tokens='
specification should be taken into account.

However things are not that simple in practice. First, not all of the
"tokens=" option state is reset when more than one specification is
provided. Second, when specifying a token range, e.g. "1-5", Windows'
CMD just ignores without error ranges that are not specified in
increasing order. Thus for example, a range "5-1" is ignored without
error. Then, token numbers strictly greater than 31 are just ignored,
and if they appear in a range, the whole range is ignored.

Another bug is the following one: suppose that the 'tokens'
specification reads:
  "tokens=1-5,1-30" , or: "tokens=1-5,3" ,
i.e. more than one range, that overlap partially. Then the actual total
number of variables will not be of the larger range size, but will be
the sum, instead.
Thus, in the first example, a total of 5 + 30 == 35 variables (> 31) is
allocated, while in the second example, a total of 5 + 1 == 6 variables
is allocated, even if they won't all store data !!
In the first example, only the first 30 FOR variables will be used, and
the 5 others will contain an empty string. In the second example, only
the first 5 FOR variables will be used, and the other one will be empty.

We also see that due to that, the "Variables" buffer of fixed size
cannot always be used (since it can contain at most 32 variables).

Last but not least, when more than one "tokens=" specification is
provided, for example:
  "tokens=1-31 tokens=1-20"
a total number of 31 FOR variables (because 31 is the max of 31 and 20)
is allocated, **but** only 20 are actually used, and the 11 others
return an empty string.

And in the specification: "tokens=1-31,* tokens=1-20", a total of
31 + 1 + 20 = 52 variables is initialized, but only the first 20 will
be used, and no "remaining-line" token (the '*' one) is used.
2020-09-21 03:31:01 +02:00
Hermès Bélusca-Maïto e904471023 [CMD] IF: Fix x64 warning C4267. 2020-09-21 03:31:01 +02:00
Oleg Dubinskiy b62948ef77 [RAPPS] Use RegDeleteKeyExW for deleting the apps strings from registry only if it is available in advapi32
Otherwise, use `RegDeleteKeyW` instead, on Windows versions whose don't have the Ex function (XP SP3 x32, Server 2003 SP0 and earlier).
It will fix regression with Rapps startup there, due to that missing function.
CORE-17264
2020-09-20 19:23:06 +02:00
Oleg Dubinskiy 7eb90143f8 [RAPPS] Display custom applications icons for installed applications CORE-17257 (#3144)
* [RAPPS] Display custom applications icons for installed applications
- Implement `RetrieveIcon` helper function in `CInstalledApplicationInfo` class, which retrueves the current app's icon from registry, same as it done for `CAvailableApplicationInfo`.
- Use it for loading the icon in `CAppsListView::AddInstalledApplication` function, via `ExtractIconW`. Load default Rapps icon only when the app has no its custom icon.
- Retrieve `DisplayIcon` value from registry in `CInstalledApps::Enum` function, same as other registry values (like app name, description, etc).Store it in `szDisplayIcon` string, which is used in `CInstalledApplicationInfo::RetrieveIcon` for retrieving the data of that value.
- Increase `LISTVIEW_ICON_SIZE` macro from 24 to 32, so 32x32 icon size is now used instead of 24x24. This makes displayed icons more accurate, since most of apps contain 32x32 icon, so they look a bit distorted with 24x24 size.
2020-09-20 19:19:59 +02:00
Mark Jansen 7119b13a28 [CREATECABFILE] Update rapps example scripts for new usage 2020-09-20 17:30:26 +02:00
Katayama Hirofumi MZ a9f60321f0 [MORE] Implement 'Q' key for 'Quit' (#3210)
Implement 'Quit' action for keyboard key 'Q'. CORE-4019
2020-09-20 07:16:21 +09:00
Hermès Bélusca-Maïto 5d5a1a455c [CMD] FOR: Fix a bug when parsing the "delims=" option in FOR loops.
Suppose the following FOR-loop command, to be run from the command-line
(if using a batch file, double each percent '%' sign):

  FOR %l IN ("a,b,c,d,e" "f,g,h,i,j") DO (
    FOR /F "delims=, tokens=1-3*" %a IN (%l) DO @echo %a-%b-%c-%d
  )

The outermost FOR-loop enumerates the two strings "a,b,c,d,e" and
"f,g,h,i,j" (placed in %l), and parse each of these in turn, splitting
them at each specified delimiter (here only one character) ',' and storing
the results in consecutive tokens %a, %b, %c, %d, with the last token %d
containing all the remaining string (non-split).
The expected result is:

  a-b-c-d,e
  f-g-h-i,j

However, due to the way the delimiters string specified by the "delims="
option is stored (no stack/heap duplication of the FOR-option substring,
but reading from it directly), during the first run of the innermost
FOR-loop, the option string "delims=, tokens=1-3*" was truncated to just
after the ',' due to the erroneous "delims=" parsing, so that when this
FOR-loop ran for a second time (to deal with the second string), the option
string was already erroneously truncated, without the "tokens=..." part,
so that the parsing results were not stored in the tokens and resulting in:

  a-b-c-d,e
  f-%b-%c-%d

instead. The solution is to save where the "delims=" string needs to be
cut, but wait until running the actual FOR-loop to terminate it (and
saving the original character too), run the FOR-loop body, and then
restore the original character where termination took place. This allows
having the FOR-loop option string valid for the next execution of the
FOR-loop.
2020-09-19 19:44:56 +02:00
Hermès Bélusca-Maïto 5cf0517be1 [CMD] Code formatting in SubstituteVar(). 2020-09-19 19:44:55 +02:00
Hermès Bélusca-Maïto cdc8e45b48 [CMD] Fix delayed expansion of variables.
CORE-13682

- Split SubstituteVars() into its main loop and a helper SubstituteVar()
  that just substitutes only one variable.

- Use this new helper as the basis of the proper implementation of the
  delayed expansion of variables.

- Fix a bug introduced in commit 495c82cc, when GetBatchVar() fails.
2020-09-19 19:44:55 +02:00
Hermès Bélusca-Maïto cb2a9c31a6 [CMD] Some fixes for getting the enhanced '%~XXX' batch/FOR variables.
CORE-11857 CORE-13736

It will be followed with a separate fix for the FOR-loop code.
Fixes some cmd_winetests.

A NULL pointer can be returned for a valid existing batch/FOR variable,
in which case the enhanced-variable getter should return an empty string.
This situation can happen e.g. when forcing a FOR-loop to tokenize a
text line with not enough tokens in it.
2020-09-19 19:44:54 +02:00
He Yang fbbc3efd60 [RAPPS] Update help command (#3209)
Add missing FIND and INFO commands to the usage help string.
2020-09-19 15:20:14 +03:00
Aobi Chan CL e160524395 [TRANSLATION] Chinese Traditional translation improvements (#3085)
- Add Chinese Traditional language support for CHARMAP_NEW, DRWTSN32, UTILMAN, CHKDSK.
- Improve translation for CLIPBRD, MSCONFIG(_NEW), NOTEPAD, SHUTDOWN, SNDREC32, WINHLP32, DISKPART, FORMAT, REGSVR32, RUNDLL32, USERINIT, DESK.CPL and TIMEDATE.CPL.
2020-09-18 00:50:27 +02:00
Kyle KatarnandHermès BÉLUSCA - MAÏTO ac2b2ef8c7 [CMD] HISTORY: Fix command output (missing linefeed) (#3205)
CORE-12603

Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2020-09-18 00:17:08 +02:00
Kyle Katarn 579f501215 [RAPPS] Fix of unhandled exception when trying to modify/uninstall without selection (#3185)
CORE-17279
2020-09-15 22:50:12 +02:00
Serge Gautherie a04831677e [PROGMAN][CRT][USER32] Do not use LoadLibraryEx() NT6+ flags (#3152)
CORE-12004
2020-09-13 23:42:09 +02:00
Jose Carlos Jesus b52189873d [TRANSLATION][SCREENSAVERS][SYSSETUP] Add Portuguese (PT) translation (#3156) 2020-09-13 23:14:05 +02:00
Kyle KatarnandHermès BÉLUSCA - MAÏTO f07ace6aa2 [RAPPS][CONSRV] French translation update (#3160)
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2020-09-13 23:12:52 +02:00
Kyle Katarn 860a985f26 [FORMAT] Fix of output text overlap in console when finished (#3177)
At the end of the format operation, text in console got overwritten and leftovers from previous line remained displayed.
2020-09-13 23:02:09 +02:00
Kyle KatarnandHermès BÉLUSCA - MAÏTO 51023e3a2e [FORMAT] French translation fix (#3178)
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2020-09-13 23:01:07 +02:00
Hermès Bélusca-Maïto c58a601602 [CMD] Document the two extra file attributes the enhanced batch/FOR variables %~aX could handle on Windows >= 8.
They are currently specified for documentation purposes (i.e. what
Windows 8+ CMD.EXE can report) but not used yet, since ReactOS does not
support them.
2020-09-13 22:50:11 +02:00
Hermès Bélusca-Maïto 95466904db [CMD] SHIFT: Use _istdigit(). 2020-09-13 22:50:10 +02:00
Hermès Bélusca-Maïto 00ce3c48fe [CMD] Use pointers to const strings in error functions, where applicable. 2020-09-13 22:50:09 +02:00
Hermès Bélusca-Maïto 3f8f3a2bba [CMD] Minor formatting only. 2020-09-13 22:50:09 +02:00
He Yang 5077e400d5 [RAPPS] Update Chinese Simplified (zh-CN) translation (#3155)
Addendum to 7a11c65.
2020-09-13 22:00:08 +03:00
Katayama Hirofumi MZ f1e2c3f70e [MSPAINT] Improve Japanese (ja-JP) translation 3 2020-09-13 17:33:57 +09:00
Katayama Hirofumi MZ b88717f5c4 [MSPAINT] Improve Japanese (ja-JP) translation 2 2020-09-13 17:15:05 +09:00
Katayama Hirofumi MZ bd7ad59a48 [MSPAINT] Improve Japanese (ja-JP) translation 2020-09-13 17:01:49 +09:00
Mark Jansen ee69ca786a [CERTUTIL] Add skeleton application with support for -hashfile 2020-09-11 15:29:28 +02:00
Kyle Katarn d54e50f3dc [EXPLORER] Registry key not closed on error (#3136)
CORE-14519
2020-09-08 21:55:45 +02:00
Kyle KatarnandHermès BÉLUSCA - MAÏTO 2c7ccf4bc9 [SOLITAIRE] French translation update (#3138)
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2020-09-08 21:52:24 +02:00
He Yang e1974d21dc [RAPPS] settings read/write refactor (#3101)
* [RAPPS] move settings-related stuff to a separate file
* [RAPPS] refactor reg read/write
* [RAPPS] add params for Load/SaveSettings, no longer use global vars
2020-09-06 17:10:18 +02:00
He Yang ce0110195b [RAPPS] improve ConInitStdStreams initialization logic (#3098) 2020-09-06 17:10:18 +02:00
He Yang 7a11c65561 [RAPPS] cmdline enhancement (#3087)
* [RAPPS] now command-line option supports begin with both / and -
* [RAPPS] Add help command with /?
* [RAPPS] add /find command
* [RAPPS] add /info option
* [RAPPS] add copyright and contact e-mail
2020-09-06 17:10:18 +02:00
赫杨 997650d424 [RAPPS] Display package name in UI too 2020-09-06 17:10:17 +02:00
赫杨 a4ac3c84b2 [RAPPS] now /INSTALL option use PkgName instead of software name
currently, PkgName is the name of ini file in DB (without suffix)
2020-09-06 17:10:17 +02:00
赫杨 da8810ab88 [RAPPS] add m_szPkgName for AvailableApps 2020-09-06 17:10:17 +02:00
赫杨 c5e111427c [RAPPS] reduce the chance assert failed 2020-09-06 17:10:16 +02:00
赫杨 4c524ee3d5 [RAPPS] some renaming 2020-09-06 17:10:16 +02:00
赫杨 d29fba7f7a [RAPPS] fix the bug that Toolbar is not working 2020-09-06 17:10:16 +02:00
赫杨 36870a02f7 [RAPPS] update some file-header
update some header to newer format, update purpose and add my name to those file I've modified
2020-09-06 17:10:16 +02:00
He Yang 4c7bd34a47 [RAPPS] appview displaymode support (#3008)
* [RAPPS] add function to set view-mode
* [RAPPS] move toolbar and searchbar into appview
* [RAPPS] remove settings and exit button from toolbar
* [RAPPS] add code to switch between list and tile mode
* [RAPPS] add auto-arrange for listview
* [RAPPS] adjust the minimum size of AppView
* [RAPPS] now image list of listview is stored inside the class
* [RAPPS] add list mode, and old list-mode are detail mode now
* [RAPPS] add check for unimplemented view mode
2020-09-06 17:10:08 +02:00
He Yang e44c9b6630 [RAPPS] application-view refactor (#3003)
* [RAPPS] separate application-view from gui.cpp
* [RAPPS] make the code looks more clear
* [RAPPS] fix &  improve tab-order handle
* [RAPPS] now double-click / right-click & install an item will install exactly this app
* [RAPPS] add handling for DWORD timestamp for InstallDate
* [RAPPS] make the code setting column style more clear
* [RAPPS] change the owner of popup-menu
* [RAPPS] now the popup menu (the one when right-click listview) now belongs to application-view
2020-09-06 17:09:21 +02:00
He Yang 10c0ff7416 [RAPPS] listview refactor (#2970)
This makes it easier to maintain the listview, and better separates the application list and listview.

* [RAPPS] fix memory leak when cleanup. some renaming are also done
* [RAPPS] move the code adding apps info inside class CAppsListView
* [RAPPS] add table view, create listview and AppInfoDisplay inside it
* [RAPPS] rename INSTALLED_INFO as CInstalledApplicationInfo
now it corresponds with CAvailableApplicationInfo
* [RAPPS] add CInstalledApps
* [RAPPS] optimize the speed when refreshing listview
* [RAPPS] correctly handle Enum for InstalledApps
* [RAPPS] make check all working properly (this also fixes some bugs)
the old version has some bugs when check all items after switching tags in tree-view
* [RAPPS] add handling for wow64
* [RAPPS] use an inline function to replace INSERT_TEXT macro
* [RAPPS] fix the bug that StatusBar won't update when switching tags
* [RAPPS] now TableView always reset bIsAscending in SetDisplayMode
* [RAPPS] rename TableView to ApplicationView
* [RAPPS] now bIsAscending would be reset when switching column in listview
2020-09-06 17:09:20 +02:00
He Yang 4482d0f455 [RAPPS] move icon to a field in .txt file (#2941)
* [RAPPS] move icon to a field in .txt file
* [RAPPS] add function PathAppendNoDirEscapeW, apply it.
2020-09-06 17:09:20 +02:00
He Yang e636373016 [RAPPS] rename snapshot to screenshot, filename to location (#2939) 2020-09-06 17:09:20 +02:00
赫杨 cfb0963c1f [RAPPS] update broken-img icon 2020-09-06 17:09:20 +02:00
He Yang e506581454 [RAPPS] snapshot url support (#2925)
* [RAPPS] add snapshot url support
* [RAPPS] fix snapshot prev window won't update if size not changed
* [RAPPS] fix crash after cancel download
* [RAPPS] show broken-img if failed to create file / make network request
* [RAPPS] create a snapshots folder if it does not exist
* [RAPPS] add a helper function to perform callback
* [RAPPS] check bIsCancelled when handling ERROR_INVALID_HANDLE
* [RAPPS] remove W suffix for AsyncInetDownload
* [RAPPS] add assert for unknown event
* [RAPPS] Improve AsyncInetDownload error handling
* [RAPPS] move DisplayFailed to private, fix crash when cancelling
* [RAPPS] check for ERROR_INTERNET_OPERATION_CANCELLED
* [RAPPS] improve error logging
* [RAPPS] remove \r in error logging
* [RAPPS] rewrite AsyncInet
2020-09-06 17:09:19 +02:00
He Yang fbf119fde1 [RAPPS] Screenshot preview and other trivial fixes (#2894)
* add one more layer of window
* using Path* API to operate path
* always use rappmgr.cab as file name when downloading db. ignore the URL
* add snapshot preview window
* show a broken-image icon when failed to load image
* add a padding between image and content, and make sure always some space is reserved for richedit
* hide the padding if snapshot window does not have a width
* some work to avoid blinking when window resizing
* add WM_PRINTCLIENT handling
2020-09-06 17:09:19 +02:00
He Yang eacaf65459 [RAPPS] add a layer of window above the richedit (#2871)
* add one more layer of window
* use ATL to create window
* set pLink to NULL to avoid wild pointer
2020-09-06 17:09:12 +02:00
Katayama Hirofumi MZ fb529605a6 [EXPLORER] Implement HSHELL_ACTIVATESHELLWINDOW (#3125)
Implement HSHELL_ACTIVATESHELLWINDOW shell hook.
2020-09-05 18:46:49 +09:00