diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-29 09:55:37 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-29 09:55:37 +0000 |
commit | 7a6f27cf9fba010215f34abc7a0efc2fc99b2b87 (patch) | |
tree | 6c1519cd4279f52654641be70274f383faa16745 | |
parent | 01c4bd876d20302ce2113967ce7a1202805f4e23 (diff) | |
download | ppe42-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/initialize.c | 25 |
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); } } |