From 4f3f75b7db90017510686a3db3139e7b3b70b6e6 Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Tue, 9 Apr 2024 02:26:59 +0000 Subject: [PATCH] Maintenance: update --with-tdb detection (#1776) --- acinclude/tdb.m4 | 34 +++------------------ src/acl/external/helpers.m4 | 2 ++ src/acl/external/session/ext_session_acl.cc | 22 ++++++------- src/acl/external/session/required.m4 | 5 +-- src/acl/external/time_quota/required.m4 | 5 +-- 5 files changed, 20 insertions(+), 48 deletions(-) diff --git a/acinclude/tdb.m4 b/acinclude/tdb.m4 index be1eb0ec12..d666659944 100644 --- a/acinclude/tdb.m4 +++ b/acinclude/tdb.m4 @@ -6,42 +6,18 @@ ## dnl check for --with-tdb option -AC_DEFUN([SQUID_CHECK_LIBTDB],[ -AC_ARG_WITH(tdb, - AS_HELP_STRING([--without-tdb], - [Do not use Samba TrivialDB. Default: auto-detect]),[ - AS_CASE(["$with_tdb"], - [yes|no|auto],[:], - [ - AS_IF([test ! -d "$withval"], - AC_MSG_ERROR([--with-tdb path ($with_tdb) does not point to a directory]) - ) - LIBTDB_PATH="-L$withval/lib" - CPPFLAGS="-I$withval/include $CPPFLAGS" - ] - ) -]) -AH_TEMPLATE(USE_TRIVIALDB,[Samba TrivialDB support is available]) -AS_IF([test "x$with_tdb" != "xno"],[ +AC_DEFUN_ONCE([SQUID_CHECK_LIBTDB],[ +SQUID_AUTO_LIB(tdb,[Samba TrivialDB],[LIBTDB]) +SQUID_CHECK_LIB_WORKS(tdb,[ SQUID_STATE_SAVE(squid_libtdb_state) LIBS="$LIBS $LIBTDB_PATH" - PKG_CHECK_MODULES([LIBTDB],[tdb],[CPPFLAGS="$CPPFLAGS $LIBTDB_CFLAGS"],[:]) + PKG_CHECK_MODULES([LIBTDB],[tdb],[:],[:]) + CPPFLAGS="$CPPFLAGS $LIBTDB_CFLAGS" AC_CHECK_HEADERS([sys/stat.h tdb.h],,,[ #if HAVE_SYS_STAT_H #include #endif ]) SQUID_STATE_ROLLBACK(squid_libtdb_state) #de-pollute LIBS - - AS_IF([test "x$with_tdb" = "xyes" -a "x$LIBTDB_LIBS" = "x"], - AC_MSG_ERROR([Required TrivialDB library not found]) - ) - AS_IF([test "x$LIBTDB_LIBS" != "x"],[ - CXXFLAGS="$LIBTDB_CFLAGS $CXXFLAGS" - LIBTDB_LIBS="$LIBTDB_PATH $LIBTDB_LIBS" - AC_DEFINE_UNQUOTED(USE_TRIVIALDB, HAVE_TDB_H, [Samba TrivialDB support is available]) - ],[with_tdb=no]) ]) -AC_MSG_NOTICE([Samba TrivialDB library support: ${with_tdb:=auto} ${LIBTDB_PATH} ${LIBTDB_LIBS}]) -AC_SUBST(LIBTDB_LIBS) ]) diff --git a/src/acl/external/helpers.m4 b/src/acl/external/helpers.m4 index ff95c578d7..79ae726244 100644 --- a/src/acl/external/helpers.m4 +++ b/src/acl/external/helpers.m4 @@ -5,6 +5,8 @@ ## Please see the COPYING and CONTRIBUTORS files for details. ## +SQUID_CHECK_LIBTDB + EXTERNAL_ACL_HELPERS="" SQUID_HELPER_FEATURE_CHECK([external_acl_helpers],[yes],[acl/external],[ # NP: we only need this list because m4_include() does not accept variables diff --git a/src/acl/external/session/ext_session_acl.cc b/src/acl/external/session/ext_session_acl.cc index 1d4c4a28a2..da84b5ad9a 100644 --- a/src/acl/external/session/ext_session_acl.cc +++ b/src/acl/external/session/ext_session_acl.cc @@ -68,7 +68,7 @@ DB *db = nullptr; DB_ENV *db_env = nullptr; typedef DBT DB_ENTRY; -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB TDB_CONTEXT *db = nullptr; typedef TDB_DATA DB_ENTRY; @@ -86,7 +86,7 @@ shutdown_db() if (db_env) { db_env->close(db_env, 0); -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB if (tdb_close(db) != 0) { fprintf(stderr, "%s| WARNING: error closing session db '%s'\n", program_name, db_path); exit(EXIT_FAILURE); @@ -113,7 +113,7 @@ static void init_db(void) exit(EXIT_FAILURE); } db_create(&db, db_env, 0); -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB std::string newPath(db_path); newPath.append("session", 7); db_path = xstrdup(newPath.c_str()); @@ -136,7 +136,7 @@ static void init_db(void) db = nullptr; } } -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB #if _SQUID_FREEBSD_ && !defined(O_DSYNC) // FreeBSD lacks O_DSYNC, O_SYNC is closest to correct behaviour #define O_DSYNC O_SYNC @@ -157,7 +157,7 @@ dataSize(DB_ENTRY *data) { #if USE_BERKLEYDB return data->size; -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB return data->dsize; #endif } @@ -167,7 +167,7 @@ fetchKey(/*const*/ DB_ENTRY &key, DB_ENTRY *data) { #if USE_BERKLEYDB return (db->get(db, nullptr, &key, data, 0) == 0); -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB // NP: API says returns NULL on errors, but return is a struct type WTF?? *data = tdb_fetch(db, key); return (data->dptr != nullptr); @@ -179,7 +179,7 @@ deleteEntry(/*const*/ DB_ENTRY &key) { #if USE_BERKLEYDB db->del(db, nullptr, &key, 0); -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB tdb_delete(db, key); #endif } @@ -189,7 +189,7 @@ copyValue(void *dst, const DB_ENTRY *src, size_t sz) { #if USE_BERKLEYDB memcpy(dst, src->data, sz); -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB memcpy(dst, src->dptr, sz); #endif } @@ -202,7 +202,7 @@ static int session_active(const char *details, size_t len) key.size = len; DBT data = {}; -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB TDB_DATA key = {}; key.dptr = reinterpret_cast(const_cast(details)); key.dsize = len; @@ -237,7 +237,7 @@ session_login(/*const*/ char *details, size_t len) data.data = &now; data.size = sizeof(now); db->put(db, nullptr, &key, &data, 0); -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB key.dptr = reinterpret_cast(details); key.dsize = len; data.dptr = reinterpret_cast(&now); @@ -253,7 +253,7 @@ session_logout(/*const*/ char *details, size_t len) #if USE_BERKLEYDB key.data = static_cast(details); key.size = len; -#elif USE_TRIVIALDB +#elif HAVE_LIBTDB key.dptr = reinterpret_cast(details); key.dsize = len; #endif diff --git a/src/acl/external/session/required.m4 b/src/acl/external/session/required.m4 index 9c29801ecf..3617c7ce9a 100755 --- a/src/acl/external/session/required.m4 +++ b/src/acl/external/session/required.m4 @@ -5,10 +5,7 @@ ## Please see the COPYING and CONTRIBUTORS files for details. ## -SQUID_CHECK_LIBTDB -if test "$with_tdb" != "no"; then - BUILD_HELPER="session" -fi +AS_IF([test "x$LIBTDB_LIBS" != "x"],[BUILD_HELPER="session"]) LIBBDB_LIBS= AH_TEMPLATE(USE_BERKLEYDB,[BerkleyDB support is available]) diff --git a/src/acl/external/time_quota/required.m4 b/src/acl/external/time_quota/required.m4 index 12dbd8a0e3..d73fdbb89a 100644 --- a/src/acl/external/time_quota/required.m4 +++ b/src/acl/external/time_quota/required.m4 @@ -5,7 +5,4 @@ ## Please see the COPYING and CONTRIBUTORS files for details. ## -SQUID_CHECK_LIBTDB -if test "$with_tdb" != "no"; then - BUILD_HELPER="time_quota" -fi +AS_IF([test "x$LIBTDB_LIBS" != "x"],[BUILD_HELPER="time_quota"]) -- 2.39.5