changeset 16987:6bbf0e9974c9

argp: make HAVE_DECL usage consistent Autoconf guarantees that AC_CHECK_DECLS always defines the corresponding HAVE_DECL_*. But our hand-coded use of AC_CHECK_DECL did not define the macro to 0, leading to a false positive complaint: https://lists.gnu.org/archive/html/coreutils/2012-06/msg00037.html By sticking to conventions, we avoid the false positive. * lib/argp-parse.c (__argp_parse): Check contents of HAVE_DECL macros, not whether they are defined. * m4/argp.m4 (gl_ARGP): Always define HAVE_DECL_* macros, per convention with other declaration checks. Reported by Karel Zak, with suggestions from Paul Eggert.
author Eric Blake <eblake@redhat.com>
date Fri, 13 Jul 2012 11:50:59 -0600
parents a9fb76376f4b
children ef9bd8b01585
files ChangeLog lib/argp-parse.c m4/argp.m4
diffstat 3 files changed, 18 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Jul 13 12:49:36 2012 -0600
+++ b/ChangeLog	Fri Jul 13 11:50:59 2012 -0600
@@ -1,5 +1,12 @@
 2012-07-13  Eric Blake  <eblake@redhat.com>
 
+	argp: make HAVE_DECL usage consistent
+	* lib/argp-parse.c (__argp_parse): Check contents of HAVE_DECL
+	macros, not whether they are defined.
+	* m4/argp.m4 (gl_ARGP): Always define HAVE_DECL_* macros, per
+	convention with other declaration checks.
+	Reported by Karel Zak, with suggestions from Paul Eggert.
+
 	stat-time: relax license to LGPLv2+
 	* modules/stat-time (License): Relax, with consent of all authors.
 
--- a/lib/argp-parse.c	Fri Jul 13 12:49:36 2012 -0600
+++ b/lib/argp-parse.c	Fri Jul 13 11:50:59 2012 -0600
@@ -880,11 +880,11 @@
 #ifndef _LIBC
   if (!(flags & ARGP_PARSE_ARGV0))
     {
-#ifdef HAVE_DECL_PROGRAM_INVOCATION_NAME
+#if HAVE_DECL_PROGRAM_INVOCATION_NAME
       if (!program_invocation_name)
         program_invocation_name = argv[0];
 #endif
-#ifdef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
+#if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
       if (!program_invocation_short_name)
         program_invocation_short_name = __argp_base_name (argv[0]);
 #endif
--- a/m4/argp.m4	Fri Jul 13 12:49:36 2012 -0600
+++ b/m4/argp.m4	Fri Jul 13 11:50:59 2012 -0600
@@ -1,4 +1,4 @@
-# argp.m4 serial 13
+# argp.m4 serial 14
 dnl Copyright (C) 2003-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,
@@ -10,18 +10,14 @@
   AC_REQUIRE([AC_C_RESTRICT])
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
 
-  AC_CHECK_DECL([program_invocation_name],
-                [AC_DEFINE([HAVE_DECL_PROGRAM_INVOCATION_NAME], [1],
-                           [Define if program_invocation_name is declared])],
-                [AC_DEFINE([GNULIB_PROGRAM_INVOCATION_NAME], [1],
-                           [Define to 1 to add extern declaration of program_invocation_name to argp.h])],
-                [[#include <errno.h>]])
-  AC_CHECK_DECL([program_invocation_short_name],
-                [AC_DEFINE([HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME], [1],
-                           [Define if program_invocation_short_name is declared])],
-                [AC_DEFINE([GNULIB_PROGRAM_INVOCATION_SHORT_NAME], [1],
-                           [Define to 1 to add extern declaration of program_invocation_short_name to argp.h])],
-                [[#include <errno.h>]])
+  AC_CHECK_DECLS([program_invocation_name], [],
+                 [AC_DEFINE([GNULIB_PROGRAM_INVOCATION_NAME], [1],
+                            [Define to 1 to add extern declaration of program_invocation_name to argp.h])],
+                 [[#include <errno.h>]])
+  AC_CHECK_DECLS([program_invocation_short_name], [],
+                 [AC_DEFINE([GNULIB_PROGRAM_INVOCATION_SHORT_NAME], [1],
+                            [Define to 1 to add extern declaration of program_invocation_short_name to argp.h])],
+                 [[#include <errno.h>]])
 
   # Check if program_invocation_name and program_invocation_short_name
   # are defined elsewhere. It is improbable that only one of them will