Something I've wanted to do for a long time is remove the homegrown definition of libcdio's bool type.
The Open Group Base Specifications Issue 6 of the IEEE Std 1003.1 2004 Edition has this listed. See http://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdbool.h.html and that says this is alinged with the ISO C standard. 15 years later I think it is pretty safe to assume that every system we support now has <stdbool.h>. We dropped support for BSDI, and OS/2 a while ago now. The problem of our homegrown stdbool came up July a year ago in https://lists.gnu.org/archive/html/libcdio-devel/2018-07/msg00043.html. I am sorry this has taken a while to get around to, but better late than never. So unless there are objections, the next libcdio release will require a C that has <stddbool.h>. Right now I have committed this in branch stdbool-h. However the changes were pretty small so here is a diff: diff --git a/configure.ac b/configure.ac index d57bdbec..8186827c 100644 --- a/configure.ac +++ b/configure.ac @@ -194,7 +194,8 @@ AC_DEFINE(LIBCDIO_CONFIG_H, 1, dnl headers AC_HEADER_STDC -AC_CHECK_HEADERS(alloca.h errno.h fcntl.h glob.h limits.h pwd.h stdbool.h) +AC_CHECK_HEADERS(stdbool.h, [], [AC_MSG_ERROR(["Couldn't find or include stdbool.h"])]) +AC_CHECK_HEADERS(alloca.h errno.h fcntl.h glob.h limits.h pwd.h) AC_CHECK_HEADERS(stdarg.h stdbool.h stdio.h sys/cdio.h sys/param.h \ sys/time.h sys/timeb.h sys/utsname.h) AC_STRUCT_TIMEZONE diff --git a/include/cdio/types.h b/include/cdio/types.h index fd735786..dc0f90cf 100644 --- a/include/cdio/types.h +++ b/include/cdio/types.h @@ -27,6 +27,8 @@ #ifdef __cplusplus extern "C" { +#else +# include <stdbool.h> #endif /* __cplusplus */ /* If <sys/types.h> is not available on your platform please @@ -103,27 +105,6 @@ typedef uint8_t ubyte; # endif #endif -#ifndef __cplusplus - -/* All the stdbool.h seem to define those */ -#ifndef __bool_true_false_are_defined -#define __bool_true_false_are_defined 1 - -#undef bool -#undef true -#undef false - -#ifdef _Bool -#define bool _Bool -#else -#define bool unsigned char -#endif -#define true 1 -#define false 0 - -#endif /* __bool_true_false_are_defined */ -#endif /*C++*/ - /* some GCC optimizations -- gcc 2.5+ */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)