summaryrefslogtreecommitdiffstats
path: root/gcc/cccp.c
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1997-11-17 23:41:05 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1997-11-17 23:41:05 +0000
commit0dca3fc5a97c04b062544a3fc52b1aa11904a18f (patch)
tree89d82f0d1d519fee5404b8f4408b759215cd1029 /gcc/cccp.c
parent6b2983193696f01f66b70cad47c801218d469c52 (diff)
downloadppe42-gcc-0dca3fc5a97c04b062544a3fc52b1aa11904a18f.tar.gz
ppe42-gcc-0dca3fc5a97c04b062544a3fc52b1aa11904a18f.zip
From Tom Tromey
* cccp.c (deps_output): Properly quote file names for make. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16555 138bc75d-0d04-0410-961f-82ee72b054a4
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 7db33d0c00f..3a8a07687af 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++;
OpenPOWER on IntegriCloud