1*44b3caf2SPatrick WilliamsFrom b21a9d4f10a066cac76bb345d31fdd24afcf3e6f Mon Sep 17 00:00:00 2001
2*44b3caf2SPatrick WilliamsFrom: Fathi Boudra <fathi.boudra@linaro.org>
3*44b3caf2SPatrick WilliamsDate: Tue, 9 Apr 2024 08:47:37 +0200
4*44b3caf2SPatrick WilliamsSubject: [PATCH] musl: basename: use portable implementation for basename API
5*44b3caf2SPatrick Williams
6*44b3caf2SPatrick Williamsmusl has removed the non-prototype declaration of basename from string.h which
7*44b3caf2SPatrick Williamsnow results in build errors with newer clang compilers.
8*44b3caf2SPatrick Williams
9*44b3caf2SPatrick WilliamsImplement GNU basename behavior using strchr which is portable across libcs.
10*44b3caf2SPatrick Williams
11*44b3caf2SPatrick WilliamsFixes:
12*44b3caf2SPatrick Williams| ../../git/tools/mountcomposefs.c:43:20:
13*44b3caf2SPatrick Williams| error: call to undeclared function 'basename'; ISO C99 and later do not
14*44b3caf2SPatrick Williams| support implicit function declarations [-Wimplicit-function-declaration]
15*44b3caf2SPatrick Williams|    43 |         const char *bin = basename(argv0);
16*44b3caf2SPatrick Williams|       |                           ^
17*44b3caf2SPatrick Williams| ../../git/tools/mountcomposefs.c:43:14:
18*44b3caf2SPatrick Williams| error: incompatible integer to pointer conversion initializing 'const char *'
19*44b3caf2SPatrick Williams| with an expression of type 'int' [-Wint-conversion]
20*44b3caf2SPatrick Williams|    43 |         const char *bin = basename(argv0);
21*44b3caf2SPatrick Williams|       |                     ^     ~~~~~~~~~~~~~~~
22*44b3caf2SPatrick Williams
23*44b3caf2SPatrick WilliamsFor reference:
24*44b3caf2SPatrick Williamshttps://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
25*44b3caf2SPatrick Williams
26*44b3caf2SPatrick WilliamsCloses: https://github.com/containers/composefs/issues/272
27*44b3caf2SPatrick Williams
28*44b3caf2SPatrick WilliamsSigned-off-by: Fathi Boudra <fathi.boudra@linaro.org>
29*44b3caf2SPatrick Williams
30*44b3caf2SPatrick WilliamsUpstream-Status: Submitted [https://github.com/containers/composefs/pull/273]
31*44b3caf2SPatrick Williams---
32*44b3caf2SPatrick Williams libcomposefs/lcfs-utils.h |    6 ++++++
33*44b3caf2SPatrick Williams tools/mkcomposefs.c       |    2 +-
34*44b3caf2SPatrick Williams tools/mountcomposefs.c    |    3 ++-
35*44b3caf2SPatrick Williams 3 files changed, 9 insertions(+), 2 deletions(-)
36*44b3caf2SPatrick Williams
37*44b3caf2SPatrick Williams--- a/tools/mountcomposefs.c
38*44b3caf2SPatrick Williams+++ b/tools/mountcomposefs.c
39*44b3caf2SPatrick Williams@@ -37,10 +37,11 @@
40*44b3caf2SPatrick Williams #include <linux/fsverity.h>
41*44b3caf2SPatrick Williams
42*44b3caf2SPatrick Williams #include "libcomposefs/lcfs-mount.h"
43*44b3caf2SPatrick Williams+#include "libcomposefs/lcfs-utils.h"
44*44b3caf2SPatrick Williams
45*44b3caf2SPatrick Williams static void usage(const char *argv0)
46*44b3caf2SPatrick Williams {
47*44b3caf2SPatrick Williams-	const char *bin = basename(argv0);
48*44b3caf2SPatrick Williams+	const char *bin = gnu_basename(argv0);
49*44b3caf2SPatrick Williams 	fprintf(stderr,
50*44b3caf2SPatrick Williams 		"usage: %s [-t type] [-o opt[,opts..]] IMAGE MOUNTPOINT\n"
51*44b3caf2SPatrick Williams 		"Example:\n"
52*44b3caf2SPatrick Williams--- a/libcomposefs/lcfs-utils.h
53*44b3caf2SPatrick Williams+++ b/libcomposefs/lcfs-utils.h
54*44b3caf2SPatrick Williams@@ -161,4 +161,10 @@ static inline void *steal_pointer(void *
55*44b3caf2SPatrick Williams /* type safety */
56*44b3caf2SPatrick Williams #define steal_pointer(pp) (0 ? (*(pp)) : (steal_pointer)(pp))
57*44b3caf2SPatrick Williams
58*44b3caf2SPatrick Williams+static inline const char *gnu_basename(const char *filename)
59*44b3caf2SPatrick Williams+{
60*44b3caf2SPatrick Williams+	const char *p = strrchr(filename, '/');
61*44b3caf2SPatrick Williams+	return p ? p+1 : filename;
62*44b3caf2SPatrick Williams+}
63*44b3caf2SPatrick Williams+
64*44b3caf2SPatrick Williams #endif
65*44b3caf2SPatrick Williams--- a/tools/mkcomposefs.c
66*44b3caf2SPatrick Williams+++ b/tools/mkcomposefs.c
67*44b3caf2SPatrick Williams@@ -315,7 +315,7 @@ static int fill_store(struct lcfs_node_s
68*44b3caf2SPatrick Williams
69*44b3caf2SPatrick Williams static void usage(const char *argv0)
70*44b3caf2SPatrick Williams {
71*44b3caf2SPatrick Williams-	const char *bin = basename(argv0);
72*44b3caf2SPatrick Williams+	const char *bin = gnu_basename(argv0);
73*44b3caf2SPatrick Williams 	fprintf(stderr,
74*44b3caf2SPatrick Williams 		"Usage: %s [OPTIONS] SOURCE IMAGE\n"
75*44b3caf2SPatrick Williams 		"Options:\n"
76