From 80f20b8e4e552eaa6b5b96aa8745c5935406c1b0 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Tue, 17 Mar 2020 16:06:30 +0000 Subject: [PATCH] getopt varies too much between platforms, and we already use compat/getopt.c for Linux so just use it everywhere. --- compat.h | 2 -- configure.ac | 40 ++++++---------------------------------- 2 files changed, 6 insertions(+), 36 deletions(-) diff --git a/compat.h b/compat.h index 70801d0d..b7ec5a69 100644 --- a/compat.h +++ b/compat.h @@ -370,7 +370,6 @@ int utf8proc_mbtowc(wchar_t *, const char *, size_t); int utf8proc_wctomb(char *, wchar_t); #endif -#ifndef HAVE_GETOPT /* getopt.c */ extern int BSDopterr; extern int BSDoptind; @@ -384,6 +383,5 @@ int BSDgetopt(int, char *const *, const char *); #define optopt BSDoptopt #define optreset BSDoptreset #define optarg BSDoptarg -#endif #endif /* COMPAT_H */ diff --git a/configure.ac b/configure.ac index 74600233..e29ebdc7 100644 --- a/configure.ac +++ b/configure.ac @@ -128,6 +128,12 @@ AC_FUNC_STRNLEN # Look for clock_gettime. Must come before event_init. AC_SEARCH_LIBS(clock_gettime, rt) +# Always use our getopt because 1) glibc's doesn't enforce argument order 2) +# musl does not set optarg to NULL for flags without arguments (although it is +# not required to, but it is helpful) 3) there are probably other weird +# implementations. +AC_LIBOBJ(getopt) + # Look for libevent. PKG_CHECK_MODULES( LIBEVENT, @@ -427,40 +433,6 @@ else AC_LIBOBJ(unvis) fi -# Look for getopt. glibc's getopt does not enforce argument order and the ways -# of making it do so are stupid, so just use our own instead. -AC_CHECK_FUNC(getopt, found_getopt=yes, found_getopt=no) -if test "x$found_getopt" != xno; then - AC_MSG_CHECKING(if getopt is suitable) - AC_EGREP_CPP( - yes, - [ - #include - #ifdef __GLIBC__ - yes - #endif - ], - [ - found_getopt=no - AC_MSG_RESULT(no) - ], - AC_MSG_RESULT(yes)) -fi -if test "x$found_getopt" != xno; then - AC_CHECK_DECLS( - [optarg, optind, optreset], - , - found_getopt=no, - [ - #include - ]) -fi -if test "x$found_getopt" != xno; then - AC_DEFINE(HAVE_GETOPT) -else - AC_LIBOBJ(getopt) -fi - # Look for fdforkpty and forkpty in libutil. AC_SEARCH_LIBS(fdforkpty, util, found_fdforkpty=yes, found_fdforkpty=no) if test "x$found_fdforkpty" = xyes; then