[exim-cvs] Config conflict checking vs. USE_SQLITE

Startseite
Nachricht löschen
Nachricht beantworten
Autor: Exim Git Commits Mailing List
Datum:  
To: exim-cvs
Betreff: [exim-cvs] Config conflict checking vs. USE_SQLITE
Gitweb: https://git.exim.org/exim.git/commitdiff/3ad9bd22ff9074736f35b60a9f9085ab5c3a5c38
Commit:     3ad9bd22ff9074736f35b60a9f9085ab5c3a5c38
Parent:     8769407d774157072e36d23bc6cc831cadacb6bb
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Sat Jun 8 14:16:48 2024 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Sun Jun 9 11:15:53 2024 +0100


    Config conflict checking vs. USE_SQLITE
---
 src/src/hintsdb.h       | 30 ++++++++++++++++++++++--------
 src/src/lookups/dbmdb.c |  2 +-
 2 files changed, 23 insertions(+), 9 deletions(-)


diff --git a/src/src/hintsdb.h b/src/src/hintsdb.h
index 643395e13..7335ef842 100644
--- a/src/src/hintsdb.h
+++ b/src/src/hintsdb.h
@@ -33,8 +33,8 @@ The API is:
     exim_dbscan        (get, and bump cursor)
     exim_dbdelete_cursor
     exim_datum_init
-    exim_datum_size_get
-    exim_datum_data_get
+    exim_datum_size_get/set
+    exim_datum_data_get/set
     exim_datum_free
   Defines:
     EXIM_DB        access handle
@@ -49,6 +49,17 @@ The users of this API are:
   hintsdb utilities    exim_dbutil.c and exim_dbmvuild.c
   dbmdb lookup        lookups/dbmdb,c
   autoreply transport    transports/autoreply.c
+
+Note that the dbmdb lookup use, bypassing the dbfn.c layer,
+means that no file-locking is done.
+XXX This feels like a layering violation; I don't see it commented on
+anywhere.
+
+Future: consider re-architecting to support caching of the open-handle
+for hintsdb uses (the dbmdb use gets that already).  This would need APIs
+for transaction locks.  Perhaps merge the implementation with the lookups
+layer, in some way, for the open-handle caching (since that manages closes
+required by Exim's process transisitions)?
 */


#ifndef HINTSDB_H
@@ -56,6 +67,9 @@ The users of this API are:


#ifdef USE_SQLITE
+# if defined(USE_DB) || defined(USE_GDBM) || defined(USE_TDB)
+# error USE_SQLITE conflict with alternate definition
+# endif

/* ********************* sqlite3 interface ************************ */

@@ -323,7 +337,7 @@ exim_datum_free(EXIM_DATUM * dp)

#elif defined(USE_TDB)

-# if defined(USE_DB) || defined(USE_GDBM)
+# if defined(USE_DB) || defined(USE_GDBM) || defined(USE_SQLITE)
# error USE_TDB conflict with alternate definition
# endif

@@ -460,7 +474,7 @@ d->dptr = NULL;

#elif defined USE_DB

-# if defined(USE_TDB) || defined(USE_GDBM)
+# if defined(USE_TDB) || defined(USE_GDBM) || defined(USE_SQLITE)
# error USE_DB conflict with alternate definition
# endif

@@ -791,9 +805,9 @@ exim_datum_free(EXIM_DATUM * d)
/********************* gdbm interface definitions **********************/

#elif defined USE_GDBM
-/*XXX TODO: exim's locfile not needed */
+/*XXX TODO: exim's lockfile not needed? */

-# if defined(USE_TDB) || defined(USE_DB)
+# if defined(USE_TDB) || defined(USE_DB) || defined(USE_SQLITE)
# error USE_GDBM conflict with alternate definition
# endif

@@ -935,8 +949,8 @@ exim_datum_free(EXIM_DATUM * d)



-/* If none of USE_DB, USG_GDBM, or USE_TDB are set, the default is the NDBM
-interface (which seems to be a wrapper for GDBM) */
+/* If none of USE_DB, USG_GDBM, USE_SQLITE or USE_TDB are set,
+the default is the NDBM interface (which seems to be a wrapper for GDBM) */


/********************* ndbm interface definitions **********************/
diff --git a/src/src/lookups/dbmdb.c b/src/src/lookups/dbmdb.c
index 1b3dc031e..d68110b12 100644
--- a/src/src/lookups/dbmdb.c
+++ b/src/src/lookups/dbmdb.c
@@ -49,7 +49,7 @@ dbmdb_check(void *handle, const uschar *filename, int modemask, uid_t *owners,
{
int rc;

-#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM)
+#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM) || defined(USE_SQLITE)
rc = lf_check_file(-1, filename, S_IFREG, modemask, owners, owngroups,
"dbm", errmsg);
#else

--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-cvs.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-cvs-unsubscribe@???
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/