Files
gentoo/dev-util/fuzz/files/fuzz-0.6-musl.patch
NHOrus 1d042be2d8 dev-util/fuzz: fix compilation on musl
Missing include for string.h, glibc transitively included strcmp
Removed different getopt definition for non-glibc situation:
we are all living in POSIX-land (Somewhat. Hopefully. Mostly.) and
definitions for getopt are the same on musl and glibc.

Closes: https://bugs.gentoo.org/944111
Closes: https://bugs.gentoo.org/934059
Signed-off-by: NHOrus <jy6x2b32pie9@yahoo.com>
Closes: https://github.com/gentoo/gentoo/pull/40514
Signed-off-by: Sam James <sam@gentoo.org>
2025-02-13 12:41:19 +00:00

35 lines
1.2 KiB
Diff

Fix missing include on musl, as strcmp is not transitively included
Remove arg-less declaration for non-glibc case: we have POSIX here,
getopt has same prototype in glibc and in musl
https://bugs.gentoo.org/934059
https://bugs.gentoo.org/944111
--- a/getopt.c
+++ b/getopt.c
@@ -43,6 +43,7 @@
#endif
#include <stdio.h>
+#include <string.h>
/* Comment out all this code if we are using the GNU C Library, and are not
actually compiling the library itself. This code is part of the GNU C
--- a/getopt.h
+++ b/getopt.h
@@ -99,14 +99,12 @@
#define optional_argument 2
#if defined (__STDC__) && __STDC__
-#ifdef __GNU_LIBRARY__
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
+/* But in Gentoo we have glibc and musl, and they have same POSIX
+ definition */
extern int getopt (int argc, char *const *argv, const char *shortopts);
-#else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-#endif /* __GNU_LIBRARY__ */
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
const struct option *longopts, int *longind);
extern int getopt_long_only (int argc, char *const *argv,