diff options
| author | Ron Yorston <rmy@pobox.com> | 2024-03-11 09:12:47 +0000 |
|---|---|---|
| committer | Ron Yorston <rmy@pobox.com> | 2024-03-11 09:20:47 +0000 |
| commit | 1eee84b800408e53e659ff303eaa08ee09d67c3b (patch) | |
| tree | 052da978f08edf8915e10fafe9d9813a9b57d6f1 /miscutils | |
| parent | 912d65cba97db3d27a747decb1c1635aece8bb90 (diff) | |
| download | busybox-w32-1eee84b800408e53e659ff303eaa08ee09d67c3b.tar.gz busybox-w32-1eee84b800408e53e659ff303eaa08ee09d67c3b.tar.bz2 busybox-w32-1eee84b800408e53e659ff303eaa08ee09d67c3b.zip | |
make: allow '#' to be escaped with a backslash
POSIX doesn't allow the '#' comment marker to be escaped, though
some implementations do.
As a non-POSIX extension allow '#' to be escaped with a preceding
backslash.
It isn't necessary to escape '#' in macro expansions or command
lines: these cases are covered by an existing extension. Commit
0aceca867 (make: comments in macro expansions and command lines)
Adds 16-32 bytes.
(pdpmake GitHub issue 38)
Diffstat (limited to 'miscutils')
| -rw-r--r-- | miscutils/make.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/miscutils/make.c b/miscutils/make.c index 841daa93e..87f17aad7 100644 --- a/miscutils/make.c +++ b/miscutils/make.c | |||
| @@ -1373,9 +1373,17 @@ process_line(char *s) | |||
| 1373 | 1373 | ||
| 1374 | // Strip comment | 1374 | // Strip comment |
| 1375 | // don't treat '#' in macro expansion as a comment | 1375 | // don't treat '#' in macro expansion as a comment |
| 1376 | if (!posix) | 1376 | // nor '#' outside macro expansion preceded by backslash |
| 1377 | t = find_char(s, '#'); | 1377 | if (!posix) { |
| 1378 | else | 1378 | char *u = s; |
| 1379 | while ((t = find_char(u, '#')) && t > u && t[-1] == '\\') { | ||
| 1380 | for (u = t; *u; ++u) { | ||
| 1381 | u[-1] = u[0]; | ||
| 1382 | } | ||
| 1383 | *u = '\0'; | ||
| 1384 | u = t; | ||
| 1385 | } | ||
| 1386 | } else | ||
| 1379 | t = strchr(s, '#'); | 1387 | t = strchr(s, '#'); |
| 1380 | if (t) | 1388 | if (t) |
| 1381 | *t = '\0'; | 1389 | *t = '\0'; |
