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>
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>
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>
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>
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>
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>
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>
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>
"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>
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>
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>
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>
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>
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>
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.