|
| From: | Pádraig Brady |
| Subject: | Re: Incorrect use of USE_XATTR in coreutils-8.4 |
| Date: | Fri, 22 Jan 2010 11:57:52 +0000 |
| User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0 |
On 18/01/10 10:32, Pádraig Brady wrote:
On 17/01/10 08:03, Jim Meyering wrote:Thanks! That would fix it, but please retain the 0/1 semantics, in case we ever want to use USE_XATTR in a C (as opposed to cpp) expression. # Map yes,no to 1,0. AC_DEFINE_UNQUOTED([USE_XATTR], [`test $use_xattr = yes&& echo 1 || echo 0`], [Define if you want extended attribute support.]) I know this is not the norm for USE_* variables e.g., in gnulib, but I have come to appreciate being able to use 0/1 cpp symbols in C code (albeit not often), for readability.Also if all variables were defined to something then we could enable -Wundef which would catch this case: #define USE_XATTR yes #if XATTR
Seeing as we're not using -Wundef, I was wondering
whether I could add a syntax-check to catch cases like this.
How about the following? Would it be general enough for
gnulib's maint.mk ?
cheers,
Pádraig.
diff --git a/cfg.mk b/cfg.mk
index b669961..e14155f 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -245,6 +245,14 @@ sc_prohibit_sleep:
msg='prefer xnanosleep over other sleep interfaces' \
$(_prohibit_regexp)
+# "#if HAVE_WHATEVER" will evaluate to false for any non numeric string.
+# That would be flagged by using -Wundef, however gnulib currently
+# tests many undefined macros, and so we can't enable that option.
+# So at least preclude common boolean strings as macro values.
+sc_Wundef_boolean:
+ @grep -Ei '^#define.*(yes|no|true|false)$$' lib/config.h && \
+ { echo 'Please use 0 or 1 for macro values' 1>&2; exit 1; }
+
include $(srcdir)/dist-check.mk
update-copyright-env = \
| [Prev in Thread] | Current Thread | [Next in Thread] |