diff options
author | Pascal Obry <obry@adacore.com> | 2009-04-29 09:55:37 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-04-29 11:55:37 +0200 |
commit | 6d47b1e3e982e90a53c20a3f6a7a7ed3cd78132d (patch) | |
tree | 6c1519cd4279f52654641be70274f383faa16745 /gcc/ada/initialize.c | |
parent | d45871da6e9ec5907510d65834ab69e781b3afa5 (diff) | |
download | gcc-6d47b1e3e982e90a53c20a3f6a7a7ed3cd78132d.zip gcc-6d47b1e3e982e90a53c20a3f6a7a7ed3cd78132d.tar.gz gcc-6d47b1e3e982e90a53c20a3f6a7a7ed3cd78132d.tar.bz2 |
initialize.c: Do not expand quoted arguments.
2009-04-29 Pascal Obry <obry@adacore.com>
* initialize.c: Do not expand quoted arguments.
From-SVN: r146941
Diffstat (limited to 'gcc/ada/initialize.c')
-rw-r--r-- | gcc/ada/initialize.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/gcc/ada/initialize.c b/gcc/ada/initialize.c index 8ad15bd..705cbf20 100644 --- a/gcc/ada/initialize.c +++ b/gcc/ada/initialize.c @@ -130,6 +130,7 @@ __gnat_initialize (void *eh ATTRIBUTE_UNUSED) int last; int argc_expanded = 0; TCHAR result [MAX_PATH]; + int quoted; wargv = CommandLineToArgvW (GetCommandLineW(), &wargc); @@ -146,9 +147,12 @@ __gnat_initialize (void *eh ATTRIBUTE_UNUSED) for (k=1; k<wargc; k++) { - /* Check for wildcard expansion. */ - if (_tcsstr (wargv[k], _T("?")) != 0 || - _tcsstr (wargv[k], _T("*")) != 0) + quoted = (wargv[k][0] == _T('\'')); + + /* Check for wildcard expansion if the argument is not quoted. */ + if (!quoted + && (_tcsstr (wargv[k], _T("?")) != 0 || + _tcsstr (wargv[k], _T("*")) != 0)) { /* Wilcards are present, append all corresponding matches. */ WIN32_FIND_DATA FileData; @@ -173,8 +177,19 @@ __gnat_initialize (void *eh ATTRIBUTE_UNUSED) } else { - /* No wildcard. Store parameter as-is. */ - append_arg (&argc_expanded, wargv[k], &gnat_argv, &last); + /* No wildcard. Store parameter as-is. Remove quote if + needed. */ + if (quoted) + { + int len = _tcslen (wargv[k]); + + /* Remove ending quote */ + wargv[k][len-1] = _T('\0'); + append_arg + (&argc_expanded, &wargv[k][1], &gnat_argv, &last); + } + else + append_arg (&argc_expanded, wargv[k], &gnat_argv, &last); } } |