Skip to content

Commit

Permalink
setup_once: use enum type for 'bool' on non-C99 platforms
Browse files Browse the repository at this point in the history
An enum will catch non-bool assignments to bool on platforms with
a strict compiler, e.g MIPSPro.

Signed-off-by: Kamil Dudka <[email protected]>
  • Loading branch information
Tor Arntsen authored and kdudka committed May 27, 2010
1 parent dd85687 commit b4f0e12
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 7 deletions.
6 changes: 5 additions & 1 deletion CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
30 changes: 24 additions & 6 deletions lib/setup_once.h
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down

0 comments on commit b4f0e12

Please sign in to comment.