aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/initialize.c
diff options
context:
space:
mode:
authorPascal Obry <obry@adacore.com>2009-04-29 09:55:37 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2009-04-29 11:55:37 +0200
commit6d47b1e3e982e90a53c20a3f6a7a7ed3cd78132d (patch)
tree6c1519cd4279f52654641be70274f383faa16745 /gcc/ada/initialize.c
parentd45871da6e9ec5907510d65834ab69e781b3afa5 (diff)
downloadgcc-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.c25
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);
}
}