Commit Graph

754 Commits

Author SHA1 Message Date
Michael Stefaniuc 04413abcc7 cmd: Use the ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 23:02:30 +02:00
Fabian Maurer d175419f0b cmd: Handle quotes when parsing the folders in the PATH environment variable.
Semicolons are also allowed inside a path, as long as they are quoted.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45552
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 13:14:10 +02:00
Jason Edmeades 6cb520476a cmd: Fix statements after 'else' inside for loops.
When inside a for loop, an 'if' statement is processed and the true part
taken. Once all the commands in the true are processed, the else part is
parsed, and a flag set to skip all commands in the else part. Unfortunately
this flag is left on even when the if statement ends, meaning subsequent
commands are also skipped.

Signed-off-by: Jason Edmeades <us@edmeades.me.uk>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-16 09:19:20 +02:00
Jason Edmeades dce5f89e48 cmd: Expand the storage space for qualifiers.
When parsing a command, after the first '/' we store the characters away
in quals. The command itself can be MAXSTRING in bytes, but the quals was
limited to MAX_PATH. This is incorrect, as you can provide very long
qualifiers as well. Expand the space to allow the maximum size possible.

Signed-off-by: Jason Edmeades <us@edmeades.me.uk>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-16 09:19:04 +02:00
Jason Edmeades 4030a95209 cmd: Handle special case tokens=* in for /f.
for /f allows a special syntax of tokens=* (rather than tokens=1* for example)
which just means put the whole line into the next variable). Note the handling of
the 'next variable' was wrong in the case of it being 'A' or 'a' as the wrap
calculation was wrong, but this only affected using this new syntax.

Signed-off-by: Jason Edmeades <us@edmeades.me.uk>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-16 09:18:23 +02:00
Jason Edmeades f634fe15db cmd: Fix handle leak in if exists.
Fixes regression in f53d57c854.

Signed-off-by: Jason Edmeades <us@edmeades.me.uk>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-16 09:16:48 +02:00
Jason Edmeades ab46a89c3b cmd: Fix issue in WCMD_assoc highlighted by valgrind.
In an error condition, the wrong variable was being used for an insert,
resulting in a read from uninitialized data. This could be triggered for
example by 'ftype jason=', and the error message should have included
jason but instead was just ''.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=38849
Signed-off-by: Jason Edmeades <us@edmeades.me.uk>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-05 11:38:58 +02:00
Jason Edmeades 254dc78c2c cmd: Call and goto finds the next matching label.
A call or a goto will find the next matching label not the first one in the
file. This means it could be later in the file or it could be earlier in the
file, so make goto (which 'call' also uses) first scan from current file
position to the end of the file, and subsequently from the start of the file
to the wrap point.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42823
Signed-off-by: Jason Edmeades <us@edmeades.me.uk>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-05 11:38:13 +02:00
Jason Edmeades daee8b753c cmd: Support "c:<space>" etc when changing drive letters.
This allows whitespace and any other text on the line when changing drive letters.
Mostly I expect it crops up when commands are concatenated and the readability
whitespace is added to the end of the command. For example C: & dir results in
"C: " and "dir" as the two commands. We cannot unconditionally remove whitespace
as some commands rely on it.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40694
Signed-off-by: Jason Edmeades <us@edmeades.me.uk>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-05 11:29:44 +02:00
Jason Edmeades 15215bd071 cmd: Fix subdirectory prefix in for loops.
A for loop can be working through a wildcarded subdirectory, but when
processing the first file in the subdirectory, it stores the prefix in
a static variable which gets overwritten during the 'for' body
processing.

Signed-off-by: Jason Edmeades <us@edmeades.me.uk>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-25 21:44:48 +02:00
Jason Edmeades f53d57c854 cmd: Add support for wildcards in if exist.
Signed-off-by: Jason Edmeades <us@edmeades.me.uk>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-25 21:44:48 +02:00
Michael Stefaniuc ea6cc7245c cmd/tests: Use the available ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 09:28:44 +02:00
Bernhard Übelacker f95b85a856 cmd: Avoid having first parameter to start.exe ignored.
Signed-off-by: Bernhard Übelacker <bernhardu@mailbox.org>
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-27 17:07:48 +02:00
Fabian Maurer e62000c5c0 cmd.exe: Parse parameters in "FOR /F" properly.
We must not remove the quotes from parameters, or strings like
"param=value" will get parsed incorrectly.

Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-07 22:22:53 +01:00
Andrey Gusev b84fb5974f cmd: Remove redundant comparison.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-09 16:01:42 +01:00
Alistair Leslie-Hughes 21ade8538d cmd: Implement builtin mklink command.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-14 20:45:44 +01:00
Alexandre Julliard bcb6bf98e0 cmd: Use WINAPIV calling convention for variadic functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-02 10:20:52 +01:00
Dmitry Timoshkov 586e171d6f cmd: '$E' in the prompt should be interpreted as an escape code (0x1b).
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-21 10:37:47 +02:00
Bas Weelinck 9baceabb88 cmd: Detect and handle start console title.
Signed-off-by: Bas Weelinck <bas.weelinck@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-17 22:21:12 +02:00
André Hentschel c9903aedcb cmd: Remove dead assignments (clang).
Signed-off-by: André Hentschel <nerv@dawncrow.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-31 08:52:28 +01:00
Francois Gouget a29c5bab22 cmd/tests: A spelling fix in a comment.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-09 12:10:23 +01:00
Lauri Kenttä 21dd04670c cmd: Fix memory leak in WCMD_reduce.
Signed-off-by: Lauri Kenttä <lauri.kentta@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-19 20:33:15 +01:00
Lauri Kenttä 064508c0dd cmd: Fix copying when the dest is one of the sources.
"COPY a+b a" appends b to a.
"COPY a+b b" skips b from the sources.

Signed-off-by: Lauri Kenttä <lauri.kentta@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-06 18:57:12 +01:00
Lauri Kenttä 048a80ffe4 cmd: Compare handles to INVALID_HANDLE_VALUE, not NULL.
Signed-off-by: Lauri Kenttä <lauri.kentta@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-06 15:02:35 +01:00
Lauri Kenttä 29cb86a722 cmd/tests: Treat compressed file as broken in %~ai test.
Signed-off-by: Lauri Kenttä <lauri.kentta@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-05 11:44:56 +01:00
Flávio J. Saraiva c0a5b1eab9 cmd/tests: Add tests for chaining rules of pipe and else.
Signed-off-by: Flávio J. Saraiva <flaviojs2005@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-29 12:22:36 +01:00
Flávio J. Saraiva df500b3a37 cmd/tests: Add test for chaining rules.
brackets precede '&&', '||' and '&'
'&&' precedes '||' and '&'
'||' precedes '&'
'a && b || c & d' is equivalent to '(((a && b) || c) & d)'

Signed-off-by: Flávio J. Saraiva <flaviojs2005@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-21 21:53:16 +01:00
Flávio J. Saraiva a4161801f3 cmd/tests: 'no echo' character with chains and brackets.
The @ character chains until we leave the current depth.
The @ character can be applied to brackets.

Signed-off-by: Flávio J. Saraiva <flaviojs2005@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-17 10:21:57 -06:00
Carlos Rafael Ramirez 55be713d76 cmd: When 'if' condition is not met, ignore the next commands in the list.
Signed-off-by: Carlos Rafael Ramirez <crramirez@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-01 20:32:56 +01:00
Piotr Caban f333bf47a8 ntdll: Keep drive letter size in RtlGetFullPathName_U when full path is specified.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:12:11 +09:00
Marcus Meissner 0d4c399623 cmd: Avoid potential buffer overflow (Coverity).
Signed-off-by: Marcus Meissner <marcus@jet.franken.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-20 20:06:39 +09:00
Francois Gouget 003fb4b139 cmd: Fix a spelling erro in a TRACE() message.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-25 18:48:18 +09:00
Francois Gouget f90871cbfd cmd/tests: Slash spelling fix.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-28 16:26:54 +09:00
Bernhard Übelacker 9a08714c02 include: Implement todo_wine_if for usage in wine tests.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-09 20:09:27 +09:00
Sebastian Lackner c634f34aae cmd: Fix sharing permissions of piped output files.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-08 00:45:49 +09:00
Hugh McMaster 05bc632add cmd: Do not overwrite a user-specified Prompt variable.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-09 00:53:40 +09:00
Francois Gouget 413c6f60cf Assorted spelling fixes.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-02 12:59:52 +09:00
Francois Gouget 46e94c8d19 cmd/tests: Fix the builtin tests when the current directory contains a space.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-23 23:35:11 +09:00
Francois Gouget 50cb282c8c cmd/tests: Fix the %~a check on Windows >= 8.
Starting with Windows 8 %~a reports two new attributes, most likely to
match the new +X and +V attrib options (integrity and no_scrub_data
respectively).

Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-20 12:25:44 +09:00
Francois Gouget 9dee791516 cmd/tests: Use net session to verify we have sufficient privileges.
Modifying the associations requires holding administrator+elevated privileges.
'net session' is the standard way of checking that in batch files.

Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-19 00:21:45 +09:00
Francois Gouget a9513cf446 cmd/tests: Fix handling of synchronization line mismatches.
If the synchronization line does not match assume that we skipped some tests.

Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-19 00:21:37 +09:00
Hugh McMaster 16cb9c4cb7 cmd: 'del' should set %errorlevel% to zero, not one, on error.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-17 22:56:40 +09:00
Hugh McMaster ca8b3843ab cmd: Set colour attributes when clearing the screen with 'cls'.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-16 17:51:25 +09:00
Frédéric Delanoy e6042cf6a6 cmd/tests: Simplify boolean expressions (PVS-Studio).
Signed-off-by: Frédéric Delanoy <frederic.delanoy@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-14 12:51:23 +09:00
Frédéric Delanoy 23e7b5a6b0 cmd: Simplify boolean expressions (PVS-Studio).
Signed-off-by: Frédéric Delanoy <frederic.delanoy@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-14 12:51:17 +09:00
Thomas Faller 1d09a35878 cmd: Implement 'echo/'. 2015-08-19 08:39:26 +09:00
Andrey Gusev 5cdcd4493f Assorted spelling and typos fixes. 2015-08-18 15:00:13 +09:00
Alex Henrie 660021d0fc cmd: Consistently wrap lines to 75 characters.
75 characters is the maximum length of a line before gettext breaks it,
so this convention will cause each translatable string to fit snugly
into the po files. It's also about what we were doing anyway, just not
consistently.

The biggest advantage to consistent line wrapping is that translators
will no longer have to guess where they should insert line breaks.

I have rewrapped the Catalan, Czech, Danish, German, Spanish, Finnish,
French, Croatian, Hungarian, Italian, Lithuanian, Norwegian, Dutch,
Polish, Portuguese, Romanian, Russian, Slovene, Swedish, Turkish, and
Ukranian translations so as to not burden their maintainers.

The Bulgarian, Greek, Esperanto, Farsi, Hindi, Malayalam, Oriya, Punjabi,
Romansh, Slovak, Serbian, Telugu, Thai, and Walloon translations did not
need to be rewrapped.

I removed Hebrew "translations" of cmd.rc that were just copies of the
English strings, and marked cmd.rc:142 as fuzzy if the translation
mentioned wine.conf.

Single-line translations that were 80 characters long or less were not
wrapped.

The Arabic, Japanese, Korean, and Chinese translations still need to be
rewrapped.
2015-07-06 14:49:40 +09:00
Thomas Faller 3cda870469 cmd: Fix invalid "else if" execution. 2015-06-25 13:56:40 +09:00
Thomas Faller 4e91fa5f6b cmd: Fix invalid memory access. 2015-06-15 14:49:54 +09:00
Thomas Faller 43dfe76376 cmd: Fix access of uninitialized memory. 2015-06-12 21:22:42 +09:00
Hugh McMaster 27753f2ea6 cmd.exe: Remove redundant call to SetConsoleMode. 2015-05-08 15:07:24 +09:00
Francois Gouget f505e6fb4a Assorted spelling fixes. 2015-03-19 21:54:14 +09:00
Michael Stefaniuc b7c8b62bbf wcmd: Remove an unused variable (PVS-Studio). 2015-02-23 15:26:00 +09:00
Bruno Jesus 5a469f1b87 cmd: Ensure environment variables fit in memory. 2015-01-06 18:20:01 +01:00
Michael Stefaniuc 232390e5b8 cmd: Remove duplicated if-check (PVS-Studio). 2014-11-27 11:43:22 +01:00
Alexandre Julliard 3d3c5ab400 cmd: Add a helper function to check if a path ends with a backslash. 2014-10-30 13:11:27 +09:00
Alistair Leslie-Hughes 213b244cb5 cmd: Dont assume cmd.exe is the first argument. 2014-09-10 12:40:02 +02:00
Gerald Pfeifer 51d217e6df cmd: Remove fslashW. 2014-08-21 12:23:38 +02:00
Alexandre Julliard fd17c93224 cmd: Use array indexing syntax to access array members. 2014-07-16 14:53:18 +02:00
Thomas Faber d4c4f0ab95 cmd: Do not omit mandatory argument to WriteFile. 2014-07-14 17:22:40 +02:00
Frédéric Delanoy 95ae71f3ab Assorted spelling/grammar fixes. 2014-07-01 13:09:13 +02:00
Frédéric Delanoy e9eb86edfb cmd/tests: Don't use "@pwd@\" when expecting a full path. 2014-03-11 19:39:15 +01:00
Frédéric Delanoy f80dd2469f cmd/tests: Correctly determine script path for root directories. 2014-03-11 19:39:05 +01:00
Frédéric Delanoy 0f2bed51bd Assorted spelling fixes. 2014-02-10 15:47:29 +01:00
Alexandre Julliard 99ef0d6ff0 makefiles: Get rid of the MAKE_TEST_RULES variable. 2014-01-02 12:13:16 +01:00
Alexandre Julliard 86b1f94d28 makefiles: Get rid of the MAKE_PROG_RULES variable. 2014-01-02 12:12:57 +01:00
Alexandre Julliard 4f3d71cef3 makefiles: Get rid of the no longer used PO_SRCS variables. 2013-12-15 10:23:04 +01:00
Alexandre Bique 483b7ebebf cmd: Update the string of the ver command. 2013-12-12 19:21:35 +01:00
Alexandre Julliard 5756ee09f3 makefiles: Add makedep pragmas for rc files that contain translations. 2013-11-05 20:38:19 +01:00
Frédéric Delanoy e459131677 cmd: Use BOOL type where appropriate. 2013-10-17 10:45:05 +02:00
Michael Stefaniuc 7641cef0bd cmd/tests: Compile with -D__WINESRC__. 2013-10-16 11:41:20 +02:00
Michael Stefaniuc 0e681027a2 tests: Compile the tests by default with -D__WINESRC__. 2013-10-02 11:04:02 +02:00
Francois Gouget c886ad824a cmd: Standardize the references to directories in the builtin command usage messages. 2013-10-01 19:22:45 +02:00
Francois Gouget b151052be4 cmd: Mention that the % must be doubled for FOR variables in batch files.
Also standardize on the 'Usage:' prefix for usage messages.
2013-10-01 19:16:30 +02:00
Francois Gouget c1eb9cf1b6 cmd: Remove an invalid comment in the FOR a usage message.
The % must be doubled for FOR variables. The removed comment was in fact documenting an old Wine bug.
2013-07-12 18:04:22 +02:00
Marcus Meissner e85d3c7108 cmd: null terminate answer string (Coverity). 2013-07-10 10:53:14 +02:00
Jason Edmeades dd0b719a3a cmd: Avoid infinite loop running batch program. 2013-06-05 17:31:36 +02:00
Jason Edmeades a5b1172e90 cmd: Fix 'for' expansion of wildcards when no args are supplied. 2013-06-05 11:45:23 +02:00
Jason Edmeades 56a33a8c55 cmd: set "var=value" ignores trailing characters. 2013-06-05 11:45:19 +02:00
Jason Edmeades 2b9649d9db cmd: Fix tilda parameter expansion when arg is empty. 2013-06-04 21:01:13 +02:00
Jason Edmeades dc4dd0cb97 cmd: Fix handling of redundant information on goto/labels. 2013-06-04 21:01:13 +02:00
Michael Stefaniuc 6899279bab cmd: Print the debug string instead of the pointer value. 2013-04-17 21:29:20 +02:00
Alexandre Julliard 64ea72b667 cmd: Add a 256x256 icon. 2013-03-27 20:12:27 +01:00
Piotr Caban 743a42b259 cmd: Fixed memory leak in WCMD_run_program. 2013-03-01 18:03:30 +01:00
Francois Gouget a5ff4b8088 Assorted spelling fixes. 2013-01-29 12:13:04 +01:00
Piotr Caban e727e44dfa cmd: Even if FindExecutable fails wait for process to finish in non-interactive mode. 2013-01-17 12:15:28 +01:00
Jason Edmeades 0b00b717b9 cmd: Add beginnings of support for delayed expansion. 2013-01-07 11:15:23 +01:00
Jason Edmeades 3735bf6af5 cmd: Avoid division by zero in set /a with %. 2013-01-07 11:14:24 +01:00
Francois Gouget f963f93964 Assorted spelling fixes. 2013-01-07 11:10:40 +01:00
Ann and Jason Edmeades 95279b87e4 cmd: Add set /a support. 2012-12-21 12:00:19 +01:00
Jason Edmeades 51c4411a15 cmd: Add more tests for set /a. 2012-12-21 11:45:31 +01:00
Jason Edmeades 836f3e4c29 cmd: Convert the set /a tests to validate better. 2012-12-21 11:45:18 +01:00
Frédéric Delanoy 5188f08bf4 cmd: Remove dead assignments (clang). 2012-12-20 12:00:45 +01:00
Frédéric Delanoy 40a69ae868 cmd: Remove dead assignment (clang). 2012-12-19 14:38:59 +01:00
Jason Edmeades 64d7151669 cmd: Wait for command to complete when spawned through cmd /c. 2012-11-30 11:44:09 +01:00
Jason Edmeades fc847f868c cmd: Change what 'ver' issues. 2012-11-28 20:14:54 +01:00
Jason Edmeades d71f5c9483 cmd: Prevent overflow for long command string. 2012-11-27 19:45:38 +01:00
Jason Edmeades d16f4e700b cmd: Add support for NUL in copy. 2012-11-20 11:53:15 +01:00
Jason Edmeades 2e92853091 cmd: Prevent external env vars causing tests to fail. 2012-11-20 11:53:10 +01:00