From: Ralf Wildenhues Date: Wed, 25 Apr 2007 21:18:41 +0000 (+0000) Subject: * lib/argz_.h: ensure error_t definition is obtained in same X-Git-Tag: cvs-readonly~503 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=add4efebe59ba75bb5125193dff318be97be8ba9;p=gnulib.git * lib/argz_.h: ensure error_t definition is obtained in same mechanism system argz.h would have. * m4/argz.m4 (gl_FUNC_ARGZ): add new test to check if $host's argz facilities are known bad. Err on the side of caution if cross-compiling. --- diff --git a/ChangeLog b/ChangeLog index b5615eec4..4d7ba2437 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-04-25 Charles Wilson + Ralf Wildenhues + + * lib/argz_.h: ensure error_t definition is obtained in same + mechanism system argz.h would have. + * m4/argz.m4 (gl_FUNC_ARGZ): add new test to check if $host's + argz facilities are known bad. Err on the side of caution if + cross-compiling. + 2007-04-25 Eric Blake * lib/fpurge.c (includes): Use stdlib.h for free. diff --git a/lib/argz_.h b/lib/argz_.h index 376fd4a59..83acf884d 100644 --- a/lib/argz_.h +++ b/lib/argz_.h @@ -1,6 +1,6 @@ /* lt__argz.h -- internal argz interface for non-glibc systems - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004, 2007 Free Software Foundation, Inc. Written by Gary V. Vaughan, 2004 NOTE: The canonical source of this file is maintained with the @@ -32,6 +32,8 @@ or obtained by writing to the Free Software Foundation, Inc., #define LT__ARGZ_H 1 #include +#define __need_error_t +#include #include #if defined(LTDL) diff --git a/m4/argz.m4 b/m4/argz.m4 index 2014c61d8..bb7a6abb4 100644 --- a/m4/argz.m4 +++ b/m4/argz.m4 @@ -1,13 +1,13 @@ # Portability macros for glibc argz. -*- Autoconf -*- # -# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. # Written by Gary V. Vaughan # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 4 argz.m4 +# serial 5 argz.m4 AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ @@ -27,6 +27,50 @@ AC_CHECK_TYPES([error_t], ARGZ_H= AC_CHECK_FUNCS([argz_append argz_create_sep argz_insert argz_next \ argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])]) + +dnl if have system argz functions, allow forced use of +dnl libltdl-supplied implementation (and default to do so +dnl on "known bad" systems). Could use a runtime check, but +dnl (a) detecting malloc issues is notoriously unreliable +dnl (b) only known system that declares argz functions, +dnl provides them, yet they are broken, is cygwin +dnl releases prior to 16-Mar-2007 (1.5.24 and earlier) +dnl So, it's more straightforward simply to special case +dnl this for known bad systems. +AS_IF([test -z "$ARGZ_H"], + [AC_CACHE_CHECK( + [if argz actually works], + [lt_cv_sys_argz_works], + [case $host_os in #( + *cygwin*) + lt_cv_sys_argz_works=no + if test "$cross_compiling" != no; then + lt_cv_sys_argz_works="guessing no" + else + save_IFS=$IFS + IFS=-. + set x `uname -r | $SED -e 's/^\([[0-9\.]]*\).*/\1/'` + IFS=$save_IFS + lt_os_major=$[]{2-0} + lt_os_minor=$[]{3-0} + lt_os_micro=$[]{4-0} + if test "$lt_os_major" -gt 1 || + { test "$lt_os_major" -eq 1 && + { test "$lt_os_minor" -gt 5 || + { test "$lt_os_minor" -eq 5 && + test "$lt_os_micro" -gt 24; }; }; }; then + lt_cv_sys_argz_works=yes + fi + fi + ;; #( + *) lt_cv_sys_argz_works=yes ;; + esac]) + AS_IF([test $lt_cv_sys_argz_works != yes], + [AC_DEFINE([SYSTEM_ARGZ_IS_BROKEN], 1, + [This value is set to 1 to indicate that the system argz facility does not work]) + ARGZ_H=argz.h + AC_LIBOBJ([argz])])]) + AC_SUBST([ARGZ_H]) ])