diff src/database.c @ 4991:97c45e3ad810

implement configure test for whether ndbm.h prototypes are broken -------------------- ChangeLog entries follow: -------------------- ChangeLog addition: 2010-02-06 Ben Wing <ben@xemacs.org> * configure: * configure.ac (AC_LANG): * configure.ac (TAB): Add AC_LANG(C++) defs in a way very similar to AC_LANG(C), inserting our own flags, compiler, etc. When using g++, if we found ndbm, check whether we can compile a file using g++ and ndbm.h, calling some DBM routines. Currently, this fails because the prototypes in ndbm.h are incomplete, omitting the arguments, which doesn't work with g++. When ndbm.h is bad, we don't include it and instead provide our own prototypes; otherwise, we define TRUST_NDBM_H_PROTOTYPES, which signals to use the ones in ndbm.h. src/ChangeLog addition: 2010-02-06 Ben Wing <ben@xemacs.org> * config.h.in: Add undef for TRUST_NDBM_H_PROTOTYPES. * database.c: * database.c (struct): Use TRUST_NDBM_H_PROTOTYPES to determine whether to include ndbm.h or to specify our own prototypes, in place of CYGWIN_HEADERS (or more generally, any random list of systems). * depend: Regenerate.
author Ben Wing <ben@xemacs.org>
date Sat, 06 Feb 2010 03:26:34 -0600
parents 4aebb0131297
children b5df3737028a
line wrap: on
line diff
--- a/src/database.c	Fri Feb 05 11:53:57 2010 -0600
+++ b/src/database.c	Sat Feb 06 03:26:34 2010 -0600
@@ -85,26 +85,28 @@
 #endif /* HAVE_BERKELEY_DB */
 
 #ifdef HAVE_DBM
-#ifdef CYGWIN_HEADERS
+# ifdef TRUST_NDBM_H_PROTOTYPES
+#  include NDBM_H_FILE
+# else /* not TRUST_NDBM_H_PROTOTYPES */
+
+/* The prototypes in gdbm/ndbm.h currently are broken when compiling
+using C++, since they are of the form `datum dbm_firstkey()', without any
+args given. */
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
 #endif
 
-/* As of Cygwin 1.7.0, the prototypes in ndbm.h are broken when compiling
-using C++, since they are of the form `datum dbm_firstkey()', without any
-args given. */
 /* Parameters to dbm_store for simple insertion or replacement. */
 #define  DBM_INSERT  0
 #define  DBM_REPLACE 1
 
-
 /* The data and key structure.  This structure is defined for compatibility. */
-typedef struct {
-        char *dptr;
-        int   dsize;
-      } datum;
-
+typedef struct
+{
+  char *dptr;
+  int   dsize;
+} datum;
 
 /* The file information header. This is good enough for most applications. */
 typedef struct {int dummy[10];} DBM;
@@ -123,9 +125,7 @@
 }
 #endif
 
-#else
-#include NDBM_H_FILE
-#endif
+# endif /* (not) TRUST_NDBM_H_PROTOTYPES */
 Lisp_Object Qdbm;
 #endif /* HAVE_DBM */