Correct SunOS and Solaris version number notation to match Sun's usage.
[gnulib.git] / m4 / check-decl.m4
index e8bb16c..b374705 100644 (file)
@@ -1,76 +1,85 @@
-#serial 3
+#serial 18
 
 dnl This is just a wrapper function to encapsulate this kludge.
 dnl Putting it in a separate file like this helps share it between
 dnl different packages.
-AC_DEFUN(jm_CHECK_DECLS,
+AC_DEFUN([jm_CHECK_DECLS],
 [
+  AC_REQUIRE([_jm_DECL_HEADERS])
+  AC_REQUIRE([AC_HEADER_TIME])
   headers='
 #include <stdio.h>
-#ifdef HAVE_STRING_H
+#if HAVE_STRING_H
 # if !STDC_HEADERS && HAVE_MEMORY_H
 #  include <memory.h>
 # endif
 # include <string.h>
 #else
-# ifdef HAVE_STRINGS_H
+# if HAVE_STRINGS_H
 #  include <strings.h>
 # endif
 #endif
-#ifdef HAVE_STDLIB_H
+#if HAVE_STDLIB_H
 # include <stdlib.h>
 #endif
-#ifdef HAVE_UNISTD_H
+#if HAVE_UNISTD_H
 # include <unistd.h>
 #endif
-'
-  if test x = y; then
-    dnl This code is deliberately never run via ./configure.
-    dnl FIXME: this is a gross hack to make autoheader put entries
-    dnl for each of these symbols in the config.h.in.
-    dnl Otherwise, I'd have to update acconfig.h every time I change
-    dnl this list of functions.
-    AC_CHECK_FUNCS(DECL_FREE DECL_LSEEK DECL_MALLOC DECL_MEMCHR DECL_REALLOC \
-                  DECL_STPCPY DECL_STRSTR)
-  fi
-  jm_CHECK_DECLARATIONS($headers, free lseek malloc \
-                        memchr realloc stpcpy strstr)
 
-  # Check for a declaration of localtime_r.
-  jm_CHECK_DECL_LOCALTIME_R
-])
-
-dnl localtime_r is a special case...
-dnl Code that uses the result of this test must use the same cpp
-dnl directives as are used below.  Also include the following declaration
-dnl after the inclusion of time.h.
-dnl
-dnl #if ! defined HAVE_DECL_LOCALTIME_R
-dnl extern struct tm* localtime_r ();
-dnl #endif
-AC_DEFUN(jm_CHECK_DECL_LOCALTIME_R,
-[
-  if test x = y; then
-    dnl This code is deliberately never run via ./configure.
-    dnl FIXME: this is a gross hack to make autoheader put entries
-    dnl for each of these symbols in the config.h.in.
-    dnl Otherwise, I'd have to update acconfig.h every time I change
-    dnl this list of functions.
-    AC_CHECK_FUNCS(DECL_LOCALTIME_R)
-  fi
+#include <sys/types.h>
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
 
-  headers='
-/* Some systems need this in order to declare localtime_r properly.  */
-#ifndef __EXTENSIONS__
-# define __EXTENSIONS__ 1
+#if HAVE_UTMP_H
+# include <utmp.h>
 #endif
 
-#if HAVE_UNISTD_H
-# include <unistd.h>
+#if HAVE_GRP_H
+# include <grp.h>
 #endif
 
-#include <sys/types.h>
-#include <time.h>
+#if HAVE_PWD_H
+# include <pwd.h>
+#endif
 '
-  jm_CHECK_DECLARATIONS($headers, localtime_r)
+
+  AC_CHECK_DECLS([
+    free,
+    getenv,
+    geteuid,
+    getgrgid,
+    getlogin,
+    getpwuid,
+    getuid,
+    getutent,
+    lseek,
+    malloc,
+    memchr,
+    memrchr,
+    nanosleep,
+    realloc,
+    stpcpy,
+    strndup,
+    strnlen,
+    strstr,
+    strtoul,
+    strtoull,
+    ttyname], , , $headers)
+])
+
+dnl FIXME: when autoconf has support for it.
+dnl This is a little helper so we can require these header checks.
+AC_DEFUN([_jm_DECL_HEADERS],
+[
+  AC_REQUIRE([AC_HEADER_STDC])
+  AC_CHECK_HEADERS(grp.h memory.h pwd.h string.h strings.h stdlib.h \
+                   unistd.h sys/time.h utmp.h utmpx.h)
 ])