Mercurial > hg > xemacs-beta
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 */