diff options
author | Tor Arntsen <tor@spacetec.no> | 2010-05-27 16:58:15 +0200 |
---|---|---|
committer | Kamil Dudka <kdudka@redhat.com> | 2010-05-27 18:15:17 +0200 |
commit | b4f0e1291f2095d4d2be0842ddfcd57895c750a6 (patch) | |
tree | d0f171b6cdd9e6b1a4da5adc18f090f6a6f3648e | |
parent | dd8568739c2b67ad069d59a8afcce9e6d3305d5f (diff) | |
download | curl-b4f0e1291f2095d4d2be0842ddfcd57895c750a6.tar.gz |
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>
-rw-r--r-- | CHANGES | 6 | ||||
-rw-r--r-- | lib/setup_once.h | 30 |
2 files changed, 29 insertions, 7 deletions
@@ -6,13 +6,17 @@ Changelog +Kamil Dudka (27 May 2010) +- Tor Arntsen changed the alternative definition of bool to use enum instead + of unsigned char. + +Daniel Stenberg (25 May 2010) - Julien Chaffraix fixed the warning seen when compiling lib/rtmp.c: one unused variables, several unused arguments and some missing #include. - Julien Chaffraix fixed 2 OOM errors: a missing NULL-check in lib/http_negociate.c and a potential NULL dereferencing in lib/splay.c -Daniel Stenberg (25 May 2010) - Howard Chu brought a patch that makes the LDAP code much cleaner, nicer and in general being a better libcurl citizen. If a new enough OpenLDAP version is detect, the new and shiny lib/openldap.c code is then used instead of the 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 |