From 8c5c0a7a48af7652c50bc27a4efdd9cb4f7d95bd Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 24 Mar 2024 21:58:50 -0700 Subject: [PATCH] ipset: Define portable basename function Newer version of musl have removed prototype for basename in string.h [1] which now makes it fail to compile with newer clang 18+ compiler therefore define own basename utility function and not depend on platform for it. [1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7 Upstream-Status: Pending Signed-off-by: Khem Raj --- src/ipset.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ipset.c b/src/ipset.c index 162f477..7b5d580 100644 --- a/src/ipset.c +++ b/src/ipset.c @@ -16,6 +16,16 @@ #include /* ipset library */ #include /* translate to nftables */ +/* basename is implemented differently across different C libraries. This + * implementation matches the one provided by the GNU libc, and does not + * modify its input parameter. + */ +static const char *ipset_basename(const char *path) +{ + const char *base = strrchr(path, '/'); + return base ? base + 1 : path; +} + int main(int argc, char *argv[]) { @@ -32,7 +42,7 @@ main(int argc, char *argv[]) exit(1); } - if (!strcmp(basename(argv[0]), "ipset-translate")) { + if (!strcmp(ipset_basename(argv[0]), "ipset-translate")) { ret = ipset_xlate_argv(ipset, argc, argv); } else { ret = ipset_parse_argv(ipset, argc, argv); -- 2.44.0