aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTor Arntsen <tor@spacetec.no>2010-05-27 16:58:15 +0200
committerKamil Dudka <kdudka@redhat.com>2010-05-27 18:15:17 +0200
commitb4f0e1291f2095d4d2be0842ddfcd57895c750a6 (patch)
treed0f171b6cdd9e6b1a4da5adc18f090f6a6f3648e /lib
parentdd8568739c2b67ad069d59a8afcce9e6d3305d5f (diff)
setup_once: use enum type for 'bool' on non-C99 platforms
An enum will catch non-bool assignments to bool on platforms with a strict compiler, e.g MIPSPro. Signed-off-by: Kamil Dudka <kdudka@redhat.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/setup_once.h30
1 files changed, 24 insertions, 6 deletions
diff --git a/lib/setup_once.h b/lib/setup_once.h
index cdc0ecf64..fff115b8f 100644
--- a/lib/setup_once.h
+++ b/lib/setup_once.h
@@ -261,24 +261,42 @@ struct timeval {
/*
- * Typedef to 'unsigned char' if bool is not an available 'typedefed' type.
+ * 'bool' exists on platforms with <stdbool.h>, i.e. C99 platforms.
+ * On non-C99 platforms there's no bool, so define an enum for that.
+ * On C99 platforms 'false' and 'true' also exist. Enum uses a
+ * global namespace though, so use bool_false and bool_true.
*/
#ifndef HAVE_BOOL_T
-typedef unsigned char bool;
-#define HAVE_BOOL_T
+ typedef enum {
+ bool_false = 0,
+ bool_true = 1
+ } bool;
+
+/*
+ * Use a define to let 'true' and 'false' use those enums. There
+ * are currently no use of true and false in libcurl proper, but
+ * there are some in the examples. This will cater for any later
+ * code happening to use true and false.
+ */
+# define false bool_false
+# define true bool_true
+# define HAVE_BOOL_T
#endif
/*
- * Default definition of uppercase TRUE and FALSE.
+ * Redefine TRUE and FALSE too, to catch current use. With this
+ * change, 'bool found = 1' will give a warning on MIPSPro, but
+ * 'bool found = TRUE' will not. Change tested on IRIX/MIPSPro,
+ * AIX 5.1/Xlc, Tru64 5.1/cc, w/make test too.
*/
#ifndef TRUE
-#define TRUE 1
+#define TRUE true
#endif
#ifndef FALSE
-#define FALSE 0
+#define FALSE false
#endif