diff options
author | Clément Chigot <chigot@adacore.com> | 2022-06-16 13:43:26 +0200 |
---|---|---|
committer | Clément Chigot <chigot@adacore.com> | 2022-06-28 16:53:23 +0200 |
commit | fadaf8f7f99f8fe81aa8403c5d90c95cae5bd2ec (patch) | |
tree | 4b038d634af1070ec944354a2979b8cab0622bb1 /binutils/resrc.c | |
parent | dbcbf67ca565ec29f13a2302dcdf9b01ef7832ca (diff) | |
download | binutils-fadaf8f7f99f8fe81aa8403c5d90c95cae5bd2ec.zip binutils-fadaf8f7f99f8fe81aa8403c5d90c95cae5bd2ec.tar.gz binutils-fadaf8f7f99f8fe81aa8403c5d90c95cae5bd2ec.tar.bz2 |
windres: add quotes around preprocessor cmd if needed
This patch ensures that the gcc binary called by windres is quoted if
needed. Otherwise, errors can occur if the gcc is under a folder having
a name containing a space (eg "Program Files").
binutils/
* resrc.c (DEFAULT_PREPROCESSOR): Split into...
(DEFAULT_PREPROCESSOR_CMD): that...
(DEFAULT_PREPROCESSOR_ARGS): and that.
(look_for_default): Add quotes around the command if needed.
(read_rc_file): Adapt to new defines.
Diffstat (limited to 'binutils/resrc.c')
-rw-r--r-- | binutils/resrc.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/binutils/resrc.c b/binutils/resrc.c index 42afdc1..fff77f4 100644 --- a/binutils/resrc.c +++ b/binutils/resrc.c @@ -75,7 +75,8 @@ /* The default preprocessor. */ -#define DEFAULT_PREPROCESSOR "gcc -E -xc -DRC_INVOKED" +#define DEFAULT_PREPROCESSOR_CMD "gcc" +#define DEFAULT_PREPROCESSOR_ARGS "-E -xc -DRC_INVOKED" /* We read the directory entries in a cursor or icon file into instances of this structure. */ @@ -378,17 +379,13 @@ static FILE * look_for_default (char *cmd, const char *prefix, int end_prefix, const char *preprocargs, const char *filename) { - char *space; int found; struct stat s; const char *fnquotes = (filename_need_quotes (filename) ? "\"" : ""); strcpy (cmd, prefix); - sprintf (cmd + end_prefix, "%s", DEFAULT_PREPROCESSOR); - space = strchr (cmd + end_prefix, ' '); - if (space) - *space = 0; + sprintf (cmd + end_prefix, "%s", DEFAULT_PREPROCESSOR_CMD); if ( #if defined (__DJGPP__) || defined (__CYGWIN__) || defined (_WIN32) @@ -410,10 +407,16 @@ look_for_default (char *cmd, const char *prefix, int end_prefix, } } - strcpy (cmd, prefix); + if (filename_need_quotes (cmd)) + { + char *cmd_copy = xmalloc (strlen (cmd)); + strcpy (cmd_copy, cmd); + sprintf (cmd, "\"%s\"", cmd_copy); + free (cmd_copy); + } - sprintf (cmd + end_prefix, "%s %s %s%s%s", - DEFAULT_PREPROCESSOR, preprocargs, fnquotes, filename, fnquotes); + sprintf (cmd + strlen (cmd), " %s %s %s%s%s", + DEFAULT_PREPROCESSOR_ARGS, preprocargs, fnquotes, filename, fnquotes); if (verbose) fprintf (stderr, _("Using `%s'\n"), cmd); @@ -490,10 +493,9 @@ read_rc_file (const char *filename, const char *preprocessor, { char *dash, *slash, *cp; - preprocessor = DEFAULT_PREPROCESSOR; - cmd = xmalloc (strlen (program_name) - + strlen (preprocessor) + + strlen (DEFAULT_PREPROCESSOR_CMD) + + strlen (DEFAULT_PREPROCESSOR_ARGS) + strlen (preprocargs) + strlen (filename) + strlen (fnquotes) * 2 |