From 47d0c0118bd9648f3b3544e8c0692d5b25aa49e7 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 23 Jun 2012 10:25:56 -0700 Subject: [PATCH] Merge from gnulib. * m4/getopt.m4: Copy new version from gnulib, incorporating: getopt-gnu: Handle suboptimal getopt_long's abbreviation handling. --- ChangeLog | 6 ++++++ m4/getopt.m4 | 44 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 103af723a34..f5ebfd9e650 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-06-23 Paul Eggert + + 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 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 + #include + #include + ]], + [[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 ]) -- 2.39.5