diff options
author | Ron Yorston <rmy@pobox.com> | 2024-09-14 08:59:46 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2024-09-14 08:59:46 +0100 |
commit | b21546ddbea20447054e60c893b64849f54be7d9 (patch) | |
tree | 2d9127babcef813acb1c7ca60eeb7a8ba9cf3a49 | |
parent | 0b87e69888e52ce5ca797560124564efc794414c (diff) | |
download | busybox-w32-b21546ddbea20447054e60c893b64849f54be7d9.tar.gz busybox-w32-b21546ddbea20447054e60c893b64849f54be7d9.tar.bz2 busybox-w32-b21546ddbea20447054e60c893b64849f54be7d9.zip |
make: fix test for include with no pathnames
In POSIX 2024 the behaviour of an include line with no pathnames
is unspecified. The test for this condition was incorrect in
certain circumstances.
Files containing dependencies may be generated by the compiler and
included in the makefile. On an initial build no dependency files
will be present and the include line is made to ignore errors. In
this case the test for no pathnames returned true, even though many
pathnames may have been present.
Fix the problem by always setting 'makefile' even if the named
file can't be opened.
-rw-r--r-- | miscutils/make.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/miscutils/make.c b/miscutils/make.c index 1e7b77ddb..bd3b23f21 100644 --- a/miscutils/make.c +++ b/miscutils/make.c | |||
@@ -2083,11 +2083,11 @@ input(FILE *fd, int ilevel) | |||
2083 | make(newname(p), 1); | 2083 | make(newname(p), 1); |
2084 | opts &= ~OPT_include; | 2084 | opts &= ~OPT_include; |
2085 | } | 2085 | } |
2086 | makefile = p; | ||
2086 | if ((ifd = fopen(p, "r")) == NULL) { | 2087 | if ((ifd = fopen(p, "r")) == NULL) { |
2087 | if (!minus) | 2088 | if (!minus) |
2088 | error("can't open include file '%s'", p); | 2089 | error("can't open include file '%s'", p); |
2089 | } else { | 2090 | } else { |
2090 | makefile = p; | ||
2091 | input(ifd, ilevel + 1); | 2091 | input(ifd, ilevel + 1); |
2092 | fclose(ifd); | 2092 | fclose(ifd); |
2093 | } | 2093 | } |