argp: make HAVE_DECL usage consistent
authorEric Blake <eblake@redhat.com>
Fri, 13 Jul 2012 17:50:59 +0000 (11:50 -0600)
committerEric Blake <eblake@redhat.com>
Fri, 13 Jul 2012 19:38:06 +0000 (13:38 -0600)
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.

ChangeLog
lib/argp-parse.c
m4/argp.m4

index 7377a26..f3633d1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
 
index 3b411d4..6bbb145 100644 (file)
@@ -880,11 +880,11 @@ __argp_parse (const struct argp *argp, int argc, char **argv, unsigned flags,
 #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
index 87c7da6..0d1de3a 100644 (file)
@@ -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_DEFUN([gl_ARGP],
   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