(do_include): Don't turn newline markers into spaces when expanding an

include file name.

From-SVN: r8629
This commit is contained in:
Richard Kenner 1994-12-08 14:33:33 -05:00
parent b6d9014380
commit 53afc2565c

View File

@ -4061,7 +4061,6 @@ do_include (buf, limit, op, keyword)
int retried = 0; /* Have already tried macro int retried = 0; /* Have already tried macro
expanding the include line*/ expanding the include line*/
FILE_BUF trybuf; /* It got expanded into here */
int angle_brackets = 0; /* 0 for "...", 1 for <...> */ int angle_brackets = 0; /* 0 for "...", 1 for <...> */
int pcf = -1; int pcf = -1;
char *pcfbuf; char *pcfbuf;
@ -4198,10 +4197,32 @@ get_filename:
error ("`#%s' expects \"FILENAME\" or <FILENAME>", keyword->name); error ("`#%s' expects \"FILENAME\" or <FILENAME>", keyword->name);
return 0; return 0;
} else { } else {
trybuf = expand_to_temp_buffer (buf, limit, 0, 0); /* Expand buffer and then remove any newline markers.
We can't just tell expand_to_temp_buffer to omit the markers,
since it would put extra spaces in include file names. */
FILE_BUF trybuf = expand_to_temp_buffer (buf, limit, 1, 0);
U_CHAR *src = trybuf.buf;
buf = (U_CHAR *) alloca (trybuf.bufp - trybuf.buf + 1); buf = (U_CHAR *) alloca (trybuf.bufp - trybuf.buf + 1);
bcopy ((char *) trybuf.buf, (char *) buf, trybuf.bufp - trybuf.buf); limit = buf;
limit = buf + (trybuf.bufp - trybuf.buf); while (src != trybuf.bufp) {
switch ((*limit++ = *src++)) {
case '\n':
limit--;
src++;
break;
case '\'':
case '\"':
{
U_CHAR *src1 = skip_quoted_string (src - 1, trybuf.bufp, 0,
NULL_PTR, NULL_PTR, NULL_PTR);
while (src != src1)
*limit++ = *src++;
}
break;
}
}
*limit = 0;
free (trybuf.buf); free (trybuf.buf);
retried++; retried++;
goto get_filename; goto get_filename;