reactos/base/shell
Hermès Bélusca-Maïto 17e094cd34
[CMD] SET: Diverse fixes for the arithmetic-expression parser (/A option).
- Detect whether a division by zero is done, and fail if so.

- Detect whether an invalid number is provided:
  * If _tcstol() fails with errno == ERANGE, we've got an overflow or
    underflow.
  * If the next character where _tcstol() is not a whitespace but is a
    character compatible with the first character of an identifier, the
    number is invalid.

- Add + to the list of existing unary operators (!,~,-), and parse them
  where many of these are present. Indeed, expressions like: +3, -+-+3,
  !!-+3 (or with other unary ops, etc.) are valid.

- Operators constituted of more than one characters, can contain
  whitespace separating their constituting characters.
  Thus, "a + = 3" is equivalent to "a += 3" (and the same for -=, *=,
  /=, %=, &=, |= and ^=), and "a < < 3" is equivalent to "a << 3" (and
  the same for >>, <<= and >>=).

- After evaluating everything, if unparsed data remains, fail and bail out.

- Return Windows' CMD-compatible errorlevels.

See https://ss64.com/nt/set.html for more details.

Fixes some cmd_winetests.
2020-09-23 00:22:48 +02:00
..
cmd [CMD] SET: Diverse fixes for the arithmetic-expression parser (/A option). 2020-09-23 00:22:48 +02:00
explorer [EXPLORER] Registry key not closed on error (#3136) 2020-09-08 21:55:45 +02:00
filebrowser [FILEBROWSER] 2018-11-27 10:33:45 +02:00
progman [PROGMAN][CRT][USER32] Do not use LoadLibraryEx() NT6+ flags (#3152) 2020-09-13 23:42:09 +02:00
rshell [RSHELL] Disable exceptions in atl when compiling without exceptions 2019-04-18 19:21:39 +02:00
CMakeLists.txt