https://bugs.winehq.org/show_bug.cgi?id=44338
Bug ID: 44338 Summary: cmd: Brackets are no deliminiter in the condition part of the if command. Product: Wine Version: 3.0-rc5 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: cmd Assignee: wine-bugs@winehq.org Reporter: bernhardu@mailbox.org Distribution: ---
Created attachment 60213 --> https://bugs.winehq.org/attachment.cgi?id=60213 cmd: Change parsing of the if command to avoid parsing the operators.
Found while trying to look into #44236. There a batch script is executed that contains lines as this: --- if (%1)==(p) start /W " " "%SFDIR%WSFplot" wr2300.t35 3 ---
This returns an error like this: --- Syntax error Can't recognize 'p' as an internal or external command, or batch script. ---
It looks like native does handle the brackets differently when contained inside the condition part of the if command.
Attached is a patch that tries to skip the parsing in WCMD_ReadAndParseLine of that part. Therefore it moves most of the content of WCMD_if into a helper and calls that to estimate how long the condition part is.