summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2005-05-10 19:09:23 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2005-05-10 19:09:23 +0000
commit7a0461caab80bd2aad3ff05e51030cd588437522 (patch)
tree59c55e921c83751346ea793f7f3e74630bca5dfd
parentb323c059793160170fab7e1fb04072bfc2be9253 (diff)
downloadcoreutils-7a0461caab80bd2aad3ff05e51030cd588437522.tar.xz
(gl_GETOPT): Check for Solaris 10 bug, not decl, when possible.
-rw-r--r--m4/getopt.m425
1 files changed, 22 insertions, 3 deletions
diff --git a/m4/getopt.m4 b/m4/getopt.m4
index d7bd3191c..79c699162 100644
--- a/m4/getopt.m4
+++ b/m4/getopt.m4
@@ -1,4 +1,4 @@
-# getopt.m4 serial 8
+# getopt.m4 serial 9
dnl Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -39,8 +39,27 @@ AC_DEFUN([gl_GETOPT],
dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
dnl option string (as of 2005-05-05).
if test -z "$GETOPT_H"; then
- AC_CHECK_DECL([getopt_clip], [GETOPT_H=getopt.h], [],
- [#include <getopt.h>])
+ AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_gnu_getopt],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([#include <getopt.h>],
+ [[
+ char *myargv[3];
+ myargv[0] = "conftest";
+ myargv[1] = "-+";
+ myargv[2] = 0;
+ return getopt (2, myargv, "+a") != '?';
+ ]])],
+ [gl_cv_func_gnu_getopt=yes],
+ [gl_cv_func_gnu_getopt=no],
+ [dnl cross compiling - pessimistically guess based on decls
+ dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+ dnl option string (as of 2005-05-05).
+ AC_CHECK_DECL([getopt_clip],
+ [gl_cv_func_gnu_getopt=no], [gl_cv_func_gnu_getopt=yes],
+ [#include <getopt.h>])])])
+ if test "$gl_cv_func_gnu_getopt" = "no"; then
+ GETOPT_H=getopt.h
+ fi
fi
if test -n "$GETOPT_H"; then