     (see ISO C 99 6.3.1.1.(2)).  So we add a negative value to the
     enum; this ensures that '_Bool' promotes to 'int'.  */
 -#if !(defined __cplusplus || defined __BEOS__)
-+#if !(defined __cplusplus || (defined (__BEOS__) && !defined(__HAIKU__))
++#if defined __cplusplus || defined __BEOS__ && !defined__HAIKU__
  # if !@HAVE__BOOL@
  #  if defined __SUNPRO_C && (__SUNPRO_C < 0x550 || __STDC__ == 1)
      /* Avoid stupid "warning: _Bool is a keyword in ISO C99".  */

diff -urN cvs-1.12.13/lib/getpass.c cvs-1.12.13-haiku/lib/getpass.c
--- cvs-1.12.13/lib/getpass.c	2005-09-19 21:12:21.000000000 +0000
+++ cvs-1.12.13-haiku/lib/getpass.c	2008-09-29 12:14:49.000000000 +0000

     }
diff -urN cvs-1.12.13/lib/stdbool_.h cvs-1.12.13-haiku/lib/stdbool_.h
--- cvs-1.12.13/lib/stdbool_.h	2005-05-23 17:44:32.000000000 +0000
+++ cvs-1.12.13-haiku/lib/stdbool_.h	2008-09-29 13:38:31.000000000 +0000
@@ -55,7 +55,7 @@
 
 /* BeOS <sys/socket.h> already #defines false 0, true 1.  We use the same
    definitions below, but temporarily we have to #undef them.  */
-#ifdef __BEOS__
+#if defined __BEOS__ && !defined __HAIKU__
 # include <OS.h> /* defines bool but not _Bool */
 # undef false
 # undef true
