diff options
author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-11-17 23:41:05 +0000 |
---|---|---|
committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-11-17 23:41:05 +0000 |
commit | 0dca3fc5a97c04b062544a3fc52b1aa11904a18f (patch) | |
tree | 89d82f0d1d519fee5404b8f4408b759215cd1029 /gcc/cccp.c | |
parent | 6b2983193696f01f66b70cad47c801218d469c52 (diff) | |
download | ppe42-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.c | 30 |
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++; |