summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2012-06-23 10:25:56 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2012-06-23 10:25:56 -0700
commit47d0c0118bd9648f3b3544e8c0692d5b25aa49e7 (patch)
treea2e1d6310e34f7d244a7eee68dd4e3dfbd80ec39
parent711b11e1e3efa0d85e3a54114bf7dbd9a90b5c54 (diff)
downloademacs-47d0c0118bd9648f3b3544e8c0692d5b25aa49e7.tar.gz
Merge from gnulib.
* m4/getopt.m4: Copy new version from gnulib, incorporating: getopt-gnu: Handle suboptimal getopt_long's abbreviation handling.
-rw-r--r--ChangeLog6
-rw-r--r--m4/getopt.m444
2 files changed, 49 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 103af723a34..f5ebfd9e650 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-06-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge from gnulib.
+ * m4/getopt.m4: Copy new version from gnulib, incorporating:
+ getopt-gnu: Handle suboptimal getopt_long's abbreviation handling.
+
2012-06-23 Eli Zaretskii <eliz@gnu.org>
Fix the MS-Windows build broken by 2012-06-22T21:17:42Z!eggert@cs.ucla.edu.
diff --git a/m4/getopt.m4 b/m4/getopt.m4
index be13337726d..c5f15630c95 100644
--- a/m4/getopt.m4
+++ b/m4/getopt.m4
@@ -1,4 +1,4 @@
-# getopt.m4 serial 41
+# getopt.m4 serial 42
dnl Copyright (C) 2002-2006, 2008-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -319,6 +319,48 @@ dnl is ambiguous with environment values that contain newlines.
])
if test "$gl_cv_func_getopt_gnu" = "no"; then
gl_replace_getopt=yes
+ else
+ AC_CACHE_CHECK([for working GNU getopt_long function],
+ [gl_cv_func_getopt_long_gnu],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <getopt.h>
+ #include <stddef.h>
+ #include <string.h>
+ ]],
+ [[static const struct option long_options[] =
+ {
+ { "xtremely-",no_argument, NULL, 1003 },
+ { "xtra", no_argument, NULL, 1001 },
+ { "xtreme", no_argument, NULL, 1002 },
+ { "xtremely", no_argument, NULL, 1003 },
+ { NULL, 0, NULL, 0 }
+ };
+ /* This code fails on OpenBSD 5.0. */
+ {
+ static char program[] = "program";
+ static char xtremel[] = "--xtremel";
+ char *argv[] = { program, xtremel, NULL };
+ int option_index;
+ optind = 1; opterr = 0;
+ if (getopt_long (2, argv, "", long_options, &option_index) != 1003)
+ return 1;
+ }
+ return 0;
+ ]])],
+ [gl_cv_func_getopt_long_gnu=yes],
+ [gl_cv_func_getopt_long_gnu=no],
+ [dnl Cross compiling. Guess no on OpenBSD, yes otherwise.
+ case "$host_os" in
+ openbsd*) gl_cv_func_getopt_long_gnu="guessing no";;
+ *) gl_cv_func_getopt_long_gnu="guessing yes";;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_getopt_long_gnu" in
+ *yes) ;;
+ *) gl_replace_getopt=yes ;;
+ esac
fi
fi
])