mirror of
https://github.com/reactos/reactos.git
synced 2025-02-20 15:35:04 +00:00
[SHELL32][SHELL32_APITEST] Improve CommandLineToArgvW (#5055)
This PR will reduce the failures of CommandLineToArgvW testcase of shell32_apitest. - Use isspace and isblank in shell32!CommandLineToArgvW. - Strengthen shell32_apitest:CommandLineToArgvW testcase. CORE-17787
This commit is contained in:
parent
647b67c1ac
commit
324cda0835
2 changed files with 44 additions and 8 deletions
|
@ -134,11 +134,11 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
|
|||
else
|
||||
{
|
||||
/* The executable path ends at the next space, no matter what */
|
||||
while (*s && *s!=' ' && *s!='\t')
|
||||
while (*s && !isspace(*s))
|
||||
s++;
|
||||
}
|
||||
/* skip to the first argument, if any */
|
||||
while (*s==' ' || *s=='\t')
|
||||
while (isblank(*s))
|
||||
s++;
|
||||
if (*s)
|
||||
argc++;
|
||||
|
@ -147,10 +147,10 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
|
|||
qcount=bcount=0;
|
||||
while (*s)
|
||||
{
|
||||
if ((*s==' ' || *s=='\t') && qcount==0)
|
||||
if (isblank(*s) && qcount==0)
|
||||
{
|
||||
/* skip to the next argument and count it if any */
|
||||
while (*s==' ' || *s=='\t')
|
||||
while (isblank(*s))
|
||||
s++;
|
||||
if (*s)
|
||||
argc++;
|
||||
|
@ -218,7 +218,7 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
|
|||
else
|
||||
{
|
||||
/* The executable path ends at the next space, no matter what */
|
||||
while (*d && *d!=' ' && *d!='\t')
|
||||
while (*d && !isspace(*d))
|
||||
d++;
|
||||
s=d;
|
||||
if (*s)
|
||||
|
@ -227,8 +227,9 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
|
|||
/* close the executable path */
|
||||
*d++=0;
|
||||
/* skip to the first argument and initialize it if any */
|
||||
while (*s==' ' || *s=='\t')
|
||||
while (isblank(*s))
|
||||
s++;
|
||||
|
||||
if (!*s)
|
||||
{
|
||||
/* There are no parameters so we are all done */
|
||||
|
@ -242,7 +243,7 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
|
|||
qcount=bcount=0;
|
||||
while (*s)
|
||||
{
|
||||
if ((*s==' ' || *s=='\t') && qcount==0)
|
||||
if (isblank(*s) && qcount==0)
|
||||
{
|
||||
/* close the argument */
|
||||
*d++=0;
|
||||
|
@ -251,7 +252,7 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
|
|||
/* skip to the next one and initialize it if any */
|
||||
do {
|
||||
s++;
|
||||
} while (*s==' ' || *s=='\t');
|
||||
} while (isblank(*s));
|
||||
if (*s)
|
||||
argv[argc++]=d;
|
||||
}
|
||||
|
|
|
@ -45,15 +45,50 @@ START_TEST(CommandLineToArgvW)
|
|||
DoEntry(__LINE__, L"test.exe\t", 1);
|
||||
DoEntry(__LINE__, L"test.exe\r", 1);
|
||||
DoEntry(__LINE__, L"test.exe\n", 1);
|
||||
DoEntry(__LINE__, L"test.exe\v", 1);
|
||||
DoEntry(__LINE__, L"test.exe\f", 1);
|
||||
DoEntry(__LINE__, L"test.exe\u3000", 1);
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"", 1);
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\" ", 1);
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"\t", 1);
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"\r", 2, L"\r");
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"\n", 2, L"\n");
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"\v", 2, L"\v");
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"\f", 2, L"\f");
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"\u3000", 2, L"\u3000");
|
||||
DoEntry(__LINE__, L"test.exe a", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe\ta", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe\ra", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe\na", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe\va", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe\fa", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe\u3000" L"a", 1);
|
||||
DoEntry(__LINE__, L"test.exe a", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe \ta", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe \ra", 2, L"\ra");
|
||||
DoEntry(__LINE__, L"test.exe \na", 2, L"\na");
|
||||
DoEntry(__LINE__, L"test.exe \va", 2, L"\va");
|
||||
DoEntry(__LINE__, L"test.exe \fa", 2, L"\fa");
|
||||
DoEntry(__LINE__, L"test.exe a ", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe a\t", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe a\r", 2, L"a\r");
|
||||
DoEntry(__LINE__, L"test.exe a\n", 2, L"a\n");
|
||||
DoEntry(__LINE__, L"test.exe a\v", 2, L"a\v");
|
||||
DoEntry(__LINE__, L"test.exe a\f", 2, L"a\f");
|
||||
DoEntry(__LINE__, L"test.exe \"a\" ", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe \"a\"\t", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe \"a\"\r", 2, L"a\r");
|
||||
DoEntry(__LINE__, L"test.exe \"a\"\n", 2, L"a\n");
|
||||
DoEntry(__LINE__, L"test.exe \"a\"\v", 2, L"a\v");
|
||||
DoEntry(__LINE__, L"test.exe \"a\"\f", 2, L"a\f");
|
||||
DoEntry(__LINE__, L"test.exe \u3000" L"a", 2, L"\u3000" L"a");
|
||||
DoEntry(__LINE__, L"test.exe \"a b\"", 2, L"a b");
|
||||
DoEntry(__LINE__, L"test.exe \"a\tb\"", 2, L"a\tb");
|
||||
DoEntry(__LINE__, L"test.exe \"a\rb\"", 2, L"a\rb");
|
||||
DoEntry(__LINE__, L"test.exe \"a\nb\"", 2, L"a\nb");
|
||||
DoEntry(__LINE__, L"test.exe \"a\vb\"", 2, L"a\vb");
|
||||
DoEntry(__LINE__, L"test.exe \"a\fb\"", 2, L"a\fb");
|
||||
DoEntry(__LINE__, L"test.exe \"a\u3000" L"b\"", 2, L"a\u3000" L"b");
|
||||
DoEntry(__LINE__, L"test.exe a b c", 4, L"a", L"b", L"c");
|
||||
DoEntry(__LINE__, L"test.exe a b \"c", 4, L"a", L"b", L"c");
|
||||
DoEntry(__LINE__, L"test.exe \"a b\" \"c d\"", 3, L"a b", L"c d");
|
||||
|
|
Loading…
Reference in a new issue