our space handling patch conflicts with https://sourceware.org/bugzilla/show_bug.cgi?id=26865 which results in ffmpg failing to build with something like "fatal error: config.h: No such file or directory" Drop that patch and backport https://sourceware.org/bugzilla/show_bug.cgi?id=4356 instead which seems to do something similar. Fixes the ffmpeg build.
67 lines
1.6 KiB
Diff
67 lines
1.6 KiB
Diff
From cc3edc52747fd8b184ee48f1b0cc1ac0aca7832e Mon Sep 17 00:00:00 2001
|
|
From: Eli Zaretskii <eliz@gnu.org>
|
|
Date: Thu, 28 Jan 2021 14:57:33 +0000
|
|
Subject: [PATCH] Improve windres's handling of pathnames containing special
|
|
characters on Windows platforms.
|
|
|
|
PR 4356
|
|
* windres.c (quot): Use double quotes to protect strings on
|
|
Windows platforms.
|
|
---
|
|
binutils/ChangeLog | 6 ++++++
|
|
binutils/windres.c | 31 ++++++++++++++++++++++++++++---
|
|
2 files changed, 34 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/binutils/windres.c b/binutils/windres.c
|
|
index 41d1e928a54..b35661cb9f5 100644
|
|
--- a/binutils/windres.c
|
|
+++ b/binutils/windres.c
|
|
@@ -703,19 +703,44 @@ quot (const char *string)
|
|
const char *src;
|
|
char *dest;
|
|
|
|
- if ((buflen < slen * 2 + 2) || ! buf)
|
|
+ if ((buflen < slen * 2 + 3) || ! buf)
|
|
{
|
|
- buflen = slen * 2 + 2;
|
|
+ buflen = slen * 2 + 3;
|
|
free (buf);
|
|
buf = (char *) xmalloc (buflen);
|
|
}
|
|
|
|
- for (src=string, dest=buf; *src; src++, dest++)
|
|
+#if defined (_WIN32) && !defined (__CYGWIN__)
|
|
+ /* For Windows shells, quote "like this". */
|
|
+ {
|
|
+ bfd_boolean quoted = FALSE;
|
|
+
|
|
+ dest = buf;
|
|
+ if (strchr (string, ' '))
|
|
+ {
|
|
+ quoted = TRUE;
|
|
+ *dest++ = '"';
|
|
+ }
|
|
+
|
|
+ for (src = string; *src; src++, dest++)
|
|
+ {
|
|
+ /* Escape-protect embedded double quotes. */
|
|
+ if (quoted && *src == '"')
|
|
+ *dest++ = '\\';
|
|
+ *dest = *src;
|
|
+ }
|
|
+
|
|
+ if (quoted)
|
|
+ *dest++ = '"';
|
|
+ }
|
|
+#else
|
|
+ for (src = string, dest = buf; *src; src++, dest++)
|
|
{
|
|
if (*src == '(' || *src == ')' || *src == ' ')
|
|
*dest++ = '\\';
|
|
*dest = *src;
|
|
}
|
|
+#endif
|
|
*dest = 0;
|
|
return buf;
|
|
}
|