]> xenbits.xensource.com Git - libvirt.git/commitdiff
cfg.mk: use a single regex for all non-reentrant functions
authorJán Tomko <jtomko@redhat.com>
Tue, 14 Jun 2016 12:27:51 +0000 (14:27 +0200)
committerJán Tomko <jtomko@redhat.com>
Wed, 15 Jun 2016 13:00:56 +0000 (15:00 +0200)
The prohibit_nonreentrant syntax-check rule spawns a new shell
for every non-reentrant function we know, to make it easier
to mention the function name in the error message, with the _r
appended.

Since the line with the offending function is already printed
and some of the functions on our list do not have a _r counterpart,
compile them into one big regex and use a more generic error message
to save time.

Makefile.nonreentrant
cfg.mk

index 78e26e31a88ec28628ecde08f6257af9e92c71a7..5cc64c0d5059f6c0010d910b2b1f3d77d8ca5bc9 100644 (file)
@@ -113,3 +113,11 @@ NON_REENTRANT += inet_nsap_ntoa
 NON_REENTRANT += inet_ntoa
 NON_REENTRANT += inet_ntop
 NON_REENTRANT += inet_pton
+
+# Separate two nothings by space to get one space in a variable
+space =
+space +=
+# The space needs to be in a variable otherwise it would be ignored.
+# And there must be no spaces around the commas because they would
+# not be ignored, logically.
+NON_REENTRANT_RE=$(subst $(space),|,$(NON_REENTRANT))
diff --git a/cfg.mk b/cfg.mk
index 2939458379a97ae63eee49d34df3c697ba7cffa6..d75ae0e2164f5bb6ad28c4982c6b78218b429563 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -440,18 +440,11 @@ sc_prohibit_PATH_MAX:
        halt='dynamically allocate paths, do not use PATH_MAX'  \
          $(_sc_search_regexp)
 
-# Use a subshell for each function, to give the optimal warning message.
 include $(srcdir)/Makefile.nonreentrant
 sc_prohibit_nonreentrant:
-       @fail=0 ; \
-       for i in $(NON_REENTRANT) ; \
-       do \
-           (prohibit="\\<$$i *\\("                                     \
-            halt="use $${i}_r, not $$i"                                \
-            $(_sc_search_regexp)                                       \
-           ) || fail=1;                                                \
-       done ; \
-       exit $$fail
+       @prohibit="\\<(${NON_REENTRANT_RE}) *\\("                       \
+       halt="use re-entrant functions (usually ending with _r)"        \
+         $(_sc_search_regexp)
 
 sc_prohibit_select:
        @prohibit='\<select *\('                                        \