#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
+#undef NDBM_HEADER_USES_PROTOTYPES
#if defined(I_GDBM_NDBM)
+# ifdef GDBM_NDBM_H_USES_PROTOTYPES
+# define NDBM_HEADER_USES_PROTOTYPES
+START_EXTERN_C
+# endif
# include <gdbm-ndbm.h> /* Debian compatibility version */
#elif defined(I_GDBMNDBM)
+# ifdef GDBMNDBM_H_USES_PROTOTYPES
+# define NDBM_HEADER_USES_PROTOTYPES
+START_EXTERN_C
+# endif
# include <gdbm/ndbm.h> /* RedHat compatibility version */
#elif defined(I_NDBM)
-#include <ndbm.h>
+# ifdef NDBM_H_USES_PROTOTYPES
+# define NDBM_HEADER_USES_PROTOTYPES
+START_EXTERN_C
+# endif
+# include <ndbm.h>
+#endif
+#ifdef NDBM_HEADER_USES_PROTOTYPES
+END_EXTERN_C
#endif
typedef struct {
typedef datum datum_value ;
-#if defined(__cplusplus) && defined(HAS_GDBM)
+#if defined(__cplusplus) && !defined(NDBM_HEADER_USES_PROTOTYPES)
/* gdbm's header file used for compatibility with gdbm */
/* isn't compatible to C++ syntax, so we need these */
/* declarations to make everyone happy. */