aboutsummaryrefslogtreecommitdiff
path: root/gcc/cccp.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>1997-11-17 23:41:05 +0000
committerJim Wilson <wilson@gcc.gnu.org>1997-11-17 15:41:05 -0800
commitd5b793624729a55f928a3d16de25c256e7c1bd37 (patch)
tree89d82f0d1d519fee5404b8f4408b759215cd1029 /gcc/cccp.c
parentde1ea87ac2b6db8105be0f4fa1c13e5d9e76a9f1 (diff)
downloadgcc-d5b793624729a55f928a3d16de25c256e7c1bd37.zip
gcc-d5b793624729a55f928a3d16de25c256e7c1bd37.tar.gz
gcc-d5b793624729a55f928a3d16de25c256e7c1bd37.tar.bz2
From Tom Tromey
* cccp.c (deps_output): Properly quote file names for make. From-SVN: r16555
Diffstat (limited to 'gcc/cccp.c')
-rw-r--r--gcc/cccp.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/gcc/cccp.c b/gcc/cccp.c
index 7db33d0..3a8a076 100644
--- a/gcc/cccp.c
+++ b/gcc/cccp.c
@@ -9950,6 +9950,8 @@ deps_output (string, spacer)
int spacer;
{
int size = strlen (string);
+ int i;
+ char *p;
if (size == 0)
return;
@@ -9966,17 +9968,35 @@ deps_output (string, spacer)
spacer = 0;
}
- if (deps_size + size + 8 > deps_allocated_size) {
- deps_allocated_size = (deps_size + size + 50) * 2;
+ if (deps_size + 2 * size + 8 > deps_allocated_size) {
+ deps_allocated_size = (deps_size + 2 * size + 50) * 2;
deps_buffer = xrealloc (deps_buffer, deps_allocated_size);
}
if (spacer == ' ') {
deps_buffer[deps_size++] = ' ';
deps_column++;
}
- bcopy (string, &deps_buffer[deps_size], size);
- deps_size += size;
- deps_column += size;
+
+ for (i = 0; i < size; ++i)
+ {
+ if (string[i] == '$')
+ {
+ deps_buffer[deps_size++] = '$';
+ deps_column++;
+ }
+ else
+ {
+ p = strchr ("~[]*?()\\ ", string[i]);
+ if (p != NULL)
+ {
+ deps_buffer[deps_size++] = '\\';
+ deps_column++;
+ }
+ }
+ deps_buffer[deps_size++] = string[i];
+ deps_column++;
+ }
+
if (spacer == ':') {
deps_buffer[deps_size++] = ':';
deps_column++;