[PATCH] programs/notepad: Only skip valid command options
Bruno Jesus
00cpxxx at gmail.com
Mon Jan 30 21:31:33 CST 2017
Tested against XP notepad, fixes bug https://bugs.winehq.org/show_bug.cgi?id=27580
This also allows opening unix style paths.
Examples that now match:
notepad /paaa.txt = "aaa.txt" not found
notepad /p /p aaa.txt = "/p aaa.txt" not found
notepad /etc/passwd2 = "/etc/passwd2" not found
notepad ok.txt /p = file not found
Signed-off-by: Bruno Jesus <00cpxxx at gmail.com>
---
programs/notepad/main.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/programs/notepad/main.c b/programs/notepad/main.c
index 20e887b..6f567a9 100644
--- a/programs/notepad/main.c
+++ b/programs/notepad/main.c
@@ -615,7 +615,7 @@ static int AlertFileDoesNotExist(LPCWSTR szFileName)
static void HandleCommandLine(LPWSTR cmdline)
{
- WCHAR delimiter;
+ WCHAR delimiter, *ptr;
BOOL opt_print = FALSE;
/* skip white space */
@@ -630,22 +630,29 @@ static void HandleCommandLine(LPWSTR cmdline)
if (*cmdline == delimiter) cmdline++;
- while (*cmdline == ' ' || *cmdline == '-' || *cmdline == '/')
+ ptr = cmdline;
+ while (*ptr == ' ' || *ptr == '-' || *ptr == '/')
{
WCHAR option;
- if (*cmdline++ == ' ') continue;
+ if (*ptr++ == ' ') continue;
- option = *cmdline;
- if (option) cmdline++;
- while (*cmdline == ' ') cmdline++;
+ option = *ptr;
+ if (option) ptr++;
+ while (*ptr == ' ') ptr++;
switch(option)
{
case 'p':
case 'P':
- opt_print = TRUE;
+ {
+ if (!opt_print)
+ {
+ opt_print = TRUE;
+ cmdline = ptr;
+ }
break;
+ }
}
}
--
2.9.3
More information about the wine-patches
mailing list