]> granicus.if.org Git - sudo/commitdiff
Add configure test for missing errno declaration and only
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 30 Aug 2011 14:05:30 +0000 (10:05 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 30 Aug 2011 14:05:30 +0000 (10:05 -0400)
declare it ourselves if it is missing.

compat/regress/glob/globtest.c
config.h.in
configure
configure.in
include/missing.h
plugins/sudoers/sudoers.h
src/sudo.h
src/sudo_noexec.c

index 0c966fe7c3b60d1bb29963eaef037d7c872d367c..70de67caf120add1a5fc25fb8d98e0e1a09cdeba 100644 (file)
 #endif
 #include <errno.h>
 
-#define MAX_RESULTS    256
+#include "missing.h"
 
-#ifndef errno
-extern int errno;
-#endif
+#define MAX_RESULTS    256
 
 struct gl_entry {
        int flags;
index a0c7045975eb8a0b1deea21a8e389b6c67b8bd2c..d0945540a9bea8386eae108c35e54e51e9f4f535 100644 (file)
 /* Define to 1 if your `DIR' contains dd_fd. */
 #undef HAVE_DD_FD
 
+/* Define to 1 if you have the declaration of `errno', and to 0 if you don't.
+   */
+#undef HAVE_DECL_ERRNO
+
 /* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
    don't. */
 #undef HAVE_DECL_SYS_SIGLIST
index bf25d637a32317e096e3f7eceaad0dcfd292618c..d58a8df98e2ca7013d6a9ebc480995c2e68a724d 100755 (executable)
--- a/configure
+++ b/configure
@@ -17758,6 +17758,22 @@ if test X"$enable_zlib" = X"builtin"; then
 
 fi
 
+ac_fn_c_check_decl "$LINENO" "errno" "ac_cv_have_decl_errno" "
+$ac_includes_default
+#include <errno.h>
+
+"
+if test "x$ac_cv_have_decl_errno" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ERRNO $ac_have_decl
+_ACEOF
+
+
 for ac_func in strsignal
 do :
   ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal"
index f7ca7213225fa0b394dac0f3d77e84cd2da09cfc..d0ce291b5f1af1c502cca96649b00154edddaf61 100644 (file)
@@ -2300,6 +2300,14 @@ if test X"$enable_zlib" = X"builtin"; then
     AC_CONFIG_FILES([zlib/Makefile])
 fi
 
+dnl
+dnl Check for errno declaration in errno.h
+dnl
+AC_CHECK_DECLS([errno], [], [], [
+AC_INCLUDES_DEFAULT
+#include <errno.h>
+])
+
 dnl
 dnl Check for strsignal() or sys_siglist
 dnl
index e7eae3ebab5ff4e103ebc189bb5e3aeecfad63d7..7ac9588cd903b6fec0c600a807029c49dc4366c9 100644 (file)
@@ -202,6 +202,13 @@ void setprogname(const char *);
 #endif /* HAVE___PROGNAME */
 #endif /* !HAVE_GETPROGNAME */
 
+/*
+ * Declare errno if errno.h doesn't do it for us.
+ */
+#if defined(HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
+extern int errno;
+#endif /* !HAVE_DECL_ERRNO */
+
 #ifndef timevalclear
 # define timevalclear(tv)      ((tv)->tv_sec = (tv)->tv_usec = 0)
 #endif
index 3c8c6a1e35456899576e7733d689e29860728394..6e21d9684e9b2a358aceb46b6eb8c13e36dd5c65 100644 (file)
@@ -341,9 +341,4 @@ extern sudo_conv_t sudo_conv;
 extern sudo_printf_t sudo_printf;
 #endif
 
-/* Some systems don't declare errno in errno.h */
-#ifndef errno
-extern int errno;
-#endif
-
 #endif /* _SUDO_SUDOERS_H */
index cbf4860d3e2cb4e957541c62068a2f95ba2146e2..f3155059fdec9346c726770d3f9698ab4a3f4212 100644 (file)
@@ -230,8 +230,4 @@ int get_net_ifs(char **addrinfo);
 /* setgroups.c */
 int sudo_setgroups(int ngids, const GETGROUPS_T *gids);
 
-#ifndef errno
-extern int errno;
-#endif
-
 #endif /* _SUDO_SUDO_H */
index 2c18c601188c776af6e63e978b4c9acc57895bc2..7f050aa3ffa194d3648f5259fe84ca70bd6d3596 100644 (file)
  * few programs actually do that.
  */
 
-#ifndef errno
-extern int errno;
-#endif
-
 #define DUMMY_BODY                             \
 {                                              \
     errno = EACCES;                            \