summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-29 09:55:37 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-29 09:55:37 +0000
commit7a6f27cf9fba010215f34abc7a0efc2fc99b2b87 (patch)
tree6c1519cd4279f52654641be70274f383faa16745
parent01c4bd876d20302ce2113967ce7a1202805f4e23 (diff)
downloadppe42-gcc-7a6f27cf9fba010215f34abc7a0efc2fc99b2b87.tar.gz
ppe42-gcc-7a6f27cf9fba010215f34abc7a0efc2fc99b2b87.zip
2009-04-29 Pascal Obry <obry@adacore.com>
* initialize.c: Do not expand quoted arguments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146941 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/initialize.c25
2 files changed, 24 insertions, 5 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 968ec55e1a6..fd56ece2503 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2009-04-29 Pascal Obry <obry@adacore.com>
+
+ * initialize.c: Do not expand quoted arguments.
+
2009-04-29 Emmanuel Briot <briot@adacore.com>
* prj-ext.adb, prj.adb, prj.ads: Fix memory leaks.
diff --git a/gcc/ada/initialize.c b/gcc/ada/initialize.c
index 8ad15bd8e91..705cbf20e3c 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);
}
}
OpenPOWER on IntegriCloud