archivers/rpm4: fix build with clang 15

During an exp-run for llvm 15 (see bug 265425), it turned out that
archivers/rpm4 failed to build with clang 15:

  tools/rpmuncompress.c:101:23: warning: call to undeclared function 'basename'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
              const char *bn = basename(fn);
                               ^
  tools/rpmuncompress.c:101:18: error: incompatible integer to pointer conversion initializing 'const char *' with an expression of type 'int' [-Wint-conversion]
              const char *bn = basename(fn);
                          ^    ~~~~~~~~~~~~

This is because basename(3) is defined in <libgen.h>. After this include
is added to rpmuncompress.c, link errors still occur:

  ld: error: undefined symbol: WIFEXITED
  >>> referenced by rpmuncompress.c
  >>>               tools/rpmuncompress.o:(main)

  ld: error: undefined symbol: WEXITSTATUS
  >>> referenced by rpmuncompress.c
  >>>               tools/rpmuncompress.o:(main)

This is because WIFEXITED() and WEXITSTATUS() are macros defined in
<sys/wait.h>.

PR:		268341
Approved by:	rodrigo (maintainer)
MFH:		2022Q4
This commit is contained in:
Dimitry Andric 2022-12-12 21:30:27 +01:00
parent 8161d12fcc
commit b06956644e

View File

@ -1,9 +1,12 @@
--- tools/rpmuncompress.c.orig 2022-08-30 11:42:23 UTC
+++ tools/rpmuncompress.c
@@ -1,5 +1,6 @@
@@ -1,7 +1,9 @@
#include "system.h"
+#include <sys/wait.h>
#include <popt.h>
#include <errno.h>
+#include <libgen.h>
#include <stdio.h>
#include <string.h>