##
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 <sys/stat.h>
#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)
])
## 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
DB_ENV *db_env = nullptr;
typedef DBT DB_ENTRY;
-#elif USE_TRIVIALDB
+#elif HAVE_LIBTDB
TDB_CONTEXT *db = nullptr;
typedef TDB_DATA DB_ENTRY;
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);
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());
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
{
#if USE_BERKLEYDB
return data->size;
-#elif USE_TRIVIALDB
+#elif HAVE_LIBTDB
return data->dsize;
#endif
}
{
#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);
{
#if USE_BERKLEYDB
db->del(db, nullptr, &key, 0);
-#elif USE_TRIVIALDB
+#elif HAVE_LIBTDB
tdb_delete(db, key);
#endif
}
{
#if USE_BERKLEYDB
memcpy(dst, src->data, sz);
-#elif USE_TRIVIALDB
+#elif HAVE_LIBTDB
memcpy(dst, src->dptr, sz);
#endif
}
key.size = len;
DBT data = {};
-#elif USE_TRIVIALDB
+#elif HAVE_LIBTDB
TDB_DATA key = {};
key.dptr = reinterpret_cast<decltype(key.dptr)>(const_cast<char*>(details));
key.dsize = 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<decltype(key.dptr)>(details);
key.dsize = len;
data.dptr = reinterpret_cast<decltype(data.dptr)>(&now);
#if USE_BERKLEYDB
key.data = static_cast<decltype(key.data)>(details);
key.size = len;
-#elif USE_TRIVIALDB
+#elif HAVE_LIBTDB
key.dptr = reinterpret_cast<decltype(key.dptr)>(details);
key.dsize = len;
#endif
## 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])
## 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"])