Mercurial > hg > xemacs-beta
comparison 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 |
comparison
equal
deleted
inserted
replaced
4983:fbcf988fbb33 | 4991:97c45e3ad810 |
---|---|
83 Lisp_Object Qqueue; | 83 Lisp_Object Qqueue; |
84 #endif | 84 #endif |
85 #endif /* HAVE_BERKELEY_DB */ | 85 #endif /* HAVE_BERKELEY_DB */ |
86 | 86 |
87 #ifdef HAVE_DBM | 87 #ifdef HAVE_DBM |
88 #ifdef CYGWIN_HEADERS | 88 # ifdef TRUST_NDBM_H_PROTOTYPES |
89 # include NDBM_H_FILE | |
90 # else /* not TRUST_NDBM_H_PROTOTYPES */ | |
91 | |
92 /* The prototypes in gdbm/ndbm.h currently are broken when compiling | |
93 using C++, since they are of the form `datum dbm_firstkey()', without any | |
94 args given. */ | |
89 | 95 |
90 #if defined(__cplusplus) || defined(c_plusplus) | 96 #if defined(__cplusplus) || defined(c_plusplus) |
91 extern "C" { | 97 extern "C" { |
92 #endif | 98 #endif |
93 | 99 |
94 /* As of Cygwin 1.7.0, the prototypes in ndbm.h are broken when compiling | |
95 using C++, since they are of the form `datum dbm_firstkey()', without any | |
96 args given. */ | |
97 /* Parameters to dbm_store for simple insertion or replacement. */ | 100 /* Parameters to dbm_store for simple insertion or replacement. */ |
98 #define DBM_INSERT 0 | 101 #define DBM_INSERT 0 |
99 #define DBM_REPLACE 1 | 102 #define DBM_REPLACE 1 |
100 | 103 |
101 | |
102 /* The data and key structure. This structure is defined for compatibility. */ | 104 /* The data and key structure. This structure is defined for compatibility. */ |
103 typedef struct { | 105 typedef struct |
104 char *dptr; | 106 { |
105 int dsize; | 107 char *dptr; |
106 } datum; | 108 int dsize; |
107 | 109 } datum; |
108 | 110 |
109 /* The file information header. This is good enough for most applications. */ | 111 /* The file information header. This is good enough for most applications. */ |
110 typedef struct {int dummy[10];} DBM; | 112 typedef struct {int dummy[10];} DBM; |
111 | 113 |
112 int dbm_clearerr(DBM *); | 114 int dbm_clearerr(DBM *); |
121 | 123 |
122 #if defined(__cplusplus) || defined(c_plusplus) | 124 #if defined(__cplusplus) || defined(c_plusplus) |
123 } | 125 } |
124 #endif | 126 #endif |
125 | 127 |
126 #else | 128 # endif /* (not) TRUST_NDBM_H_PROTOTYPES */ |
127 #include NDBM_H_FILE | |
128 #endif | |
129 Lisp_Object Qdbm; | 129 Lisp_Object Qdbm; |
130 #endif /* HAVE_DBM */ | 130 #endif /* HAVE_DBM */ |
131 | 131 |
132 Lisp_Object Vdatabase_coding_system; | 132 Lisp_Object Vdatabase_coding_system; |
133 | 133 |