diff -u dansguardian-2.9.9.4/debian/changelog dansguardian-2.9.9.4/debian/changelog
--- dansguardian-2.9.9.4/debian/changelog
+++ dansguardian-2.9.9.4/debian/changelog
@@ -1,3 +1,11 @@
+dansguardian (2.9.9.4-1+lenny1+volatile1) lenny-volatile; urgency=low
+
+  * Non-maintainer upload.
+  * Rebuild against volatile's libclamav6.
+  * 50_clamav095_support.dpatch: Add to enable support for clamav >= 0.95
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk>  Mon, 12 Apr 2010 23:25:44 +0100
+
 dansguardian (2.9.9.4-1+lenny1) testing-proposed-updates; urgency=low
 
   [ Thomas Viehmann ]
diff -u dansguardian-2.9.9.4/debian/patches/00list dansguardian-2.9.9.4/debian/patches/00list
--- dansguardian-2.9.9.4/debian/patches/00list
+++ dansguardian-2.9.9.4/debian/patches/00list
@@ -5,0 +6 @@
+50_clamav095_support.dpatch
only in patch2:
unchanged:
--- dansguardian-2.9.9.4.orig/debian/patches/50_clamav095_support.dpatch
+++ dansguardian-2.9.9.4/debian/patches/50_clamav095_support.dpatch
@@ -0,0 +1,171 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 50_clamav095_support.dpatch by Imre Gergely <gimre@narancs.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Adds support for clamav 0.95
+
+@DPATCH@
+diff -urNad dansguardian-2.9.9.7~/src/contentscanners/clamav.cpp dansguardian-2.9.9.7/src/contentscanners/clamav.cpp
+--- dansguardian-2.9.9.7~/src/contentscanners/clamav.cpp	2008-06-10 12:41:41.000000000 +0300
++++ dansguardian-2.9.9.7/src/contentscanners/clamav.cpp	2009-04-19 09:47:39.000000000 +0300
+@@ -69,9 +69,11 @@
+ 	// virus database root node
+ 	// Update to support ClamAV 0.90
+ 	// Based on patch supplied by Aecio F. Neto
+-	struct cl_engine *root;
++	struct cl_engine *engine;
++#ifndef CL_INIT_DEFAULT
+ 	// archive limit options
+ 	struct cl_limits limits;
++#endif
+ 
+ #ifdef HAVE_CLAMAV_SHM
+ 	// use POSIX shared memory
+@@ -100,7 +102,11 @@
+ // destroy plugin
+ int clamavinstance::quit()
+ {
+-	cl_free(root);
++#ifdef CL_INIT_DEFAULT
++	cl_engine_free(engine);
++#else
++	cl_free(engine);
++#endif
+ 	return DGCS_OK;
+ }
+ 
+@@ -164,7 +170,11 @@
+ 		return DGCS_SCANERROR;
+ 	}
+ 
+-	rc = cl_scandesc(fd, &vn, NULL, root, &limits, CL_SCAN_STDOPT);
++#ifdef CL_INIT_DEFAULT
++	rc = cl_scandesc(fd, &vn, NULL, engine, CL_SCAN_STDOPT);
++#else
++	rc = cl_scandesc(fd, &vn, NULL, engine, &limits, CL_SCAN_STDOPT);
++#endif
+ 	close(fd);
+ 
+ #ifdef HAVE_CLAMAV_SHM
+@@ -189,7 +199,11 @@
+ {
+ 	lastmessage = lastvirusname = "";
+ 	const char *vn = NULL;
+-	int rc = cl_scanfile(filename, &vn, NULL, root, &limits, CL_SCAN_STDOPT );
++#ifdef CL_INIT_DEFAULT
++	int rc = cl_scanfile(filename, &vn, NULL, engine, CL_SCAN_STDOPT );
++#else
++	int rc = cl_scanfile(filename, &vn, NULL, engine, &limits, CL_SCAN_STDOPT );
++#endif
+ 	return doRC(rc, vn);
+ }
+ 
+@@ -220,6 +234,7 @@
+ // initialise libclamav
+ int clamavinstance::init(void* args)
+ {
++	int rc;
+ 	// always include these lists
+ 	if (!readStandardLists()) {
+ 		return DGCS_ERROR;
+@@ -244,18 +259,41 @@
+ 		return DGCS_ERROR;
+ 	}
+ 
+-	// set clam's own temp dir
+-	if (cv["tempdir"].length() > 0)
+-		cl_settempdir(cv["tempdir"].toCharArray(), 0);
+-
+ #ifdef DGDEBUG
+ 	std::cout << "Scanbuffmethod: " << smethod << std::endl;
+ 	std::cout << "Scanbuffdir: " << memdir << std::endl;
+ 	std::cout << "Tempdir: " << cv["tempdir"] << std::endl;
+ #endif
+ 
++#ifdef CL_INIT_DEFAULT
++	if ( (rc = cl_init(CL_INIT_DEFAULT)) != CL_SUCCESS ) {
++		return DGCS_ERROR;
++    	}
++	if ( !(engine = cl_engine_new()) ) {
++		return DGCS_ERROR;
++    	}
++
+ 	// set file, recursion and compression ratio limits for scanning archives
+-	root = NULL;
++	if ( (rc = cl_engine_set_num(engine, CL_ENGINE_MAX_FILES, (long long)cv["maxfiles"].toInteger())) ) {
++		return DGCS_ERROR;
++	}
++	if ( (rc = cl_engine_set_num(engine, CL_ENGINE_MAX_FILESIZE, (long long)o.max_content_filecache_scan_size + 1024 * 1024)) ) {
++		return DGCS_ERROR;
++	}
++	if ( (rc = cl_engine_set_num(engine, CL_ENGINE_MAX_RECURSION, (long long)cv["maxreclevel"].toInteger())) ) {
++		return DGCS_ERROR;
++	}
++	if ( (rc = cl_engine_set_num(engine, CL_ENGINE_MAX_SCANSIZE, (long long)cv["maxscansize"].toInteger() * 1024)) ) {
++		return DGCS_ERROR;
++	}
++// FIXME: need debug output code here
++	if (cv["tempdir"].length() > 0)
++        	if ( (rc = cl_engine_set_str(engine, CL_ENGINE_TMPDIR, cv["tempdir"].toCharArray())) ) {
++                	return DGCS_ERROR;
++        	}
++#else
++	// set file, recursion and compression ratio limits for scanning archives
++	engine = NULL;
+ 	limits.maxfiles = cv["maxfiles"].toInteger();
+ 	limits.maxfilesize = o.max_content_filecache_scan_size + 1024 * 1024;
+ 	limits.maxreclevel = cv["maxreclevel"].toInteger();
+@@ -264,12 +302,35 @@
+ 	std::cerr << "maxfiles: " << limits.maxfiles << " maxfilesize: " << limits.maxfilesize
+ 		<< " maxreclevel: " << limits.maxreclevel << " maxscansize: " << limits.maxscansize << std::endl;
+ #endif
++	if (cv["tempdir"].length() > 0)
++		cl_settempdir(cv["tempdir"].toCharArray(), 0);
++
++#endif
+ 
+ 	// load virus database
+-	unsigned int virnum = 0;
+-	int rc = cl_load(cl_retdbdir(), &root, &virnum, CL_DB_STDOPT);
++	unsigned int sigs = 0;
++#ifdef CL_INIT_DEFAULT
++	if ( (rc = cl_load(cl_retdbdir(), engine, &sigs, 0)) != CL_SUCCESS ) {
++		if (!is_daemonised)
++                	std::cerr << "Error loading clamav db: " << cl_strerror(rc) << std::endl;
++                syslog(LOG_ERR, "Error loading clamav db: %s", cl_strerror(rc));
++		return DGCS_ERROR;
++	}
+ #ifdef DGDEBUG
+-	std::cout << "engine: " << root << " virnum: " << virnum << std::endl;
++        std::cout << "engine: " << engine << " sigs: " << sigs << std::endl;
++#endif
++	if ( (rc = cl_engine_compile(engine)) != CL_SUCCESS ) {
++        	if (!is_daemonised)
++                	std::cerr << "Error preparing clamav engine: " << cl_strerror(rc) << std::endl;
++                syslog(LOG_ERR, "Error preparing clamav engine: %s", cl_strerror(rc));
++                return DGCS_ERROR;
++	}
++	return DGCS_OK;
++	
++#else
++	rc = cl_load(cl_retdbdir(), &engine, &sigs, CL_DB_STDOPT);
++#ifdef DGDEBUG
++	std::cout << "engine: " << engine << " sigs: " << sigs << std::endl;
+ #endif
+ 	if (rc != 0) {
+ 		if (!is_daemonised)
+@@ -277,7 +338,7 @@
+ 		syslog(LOG_ERR, "Error loading clamav db: %s", cl_strerror(rc));
+ 		return DGCS_ERROR;
+ 	}
+-	rc = cl_build(root);
++	rc = cl_build(engine);
+ 	if (rc != 0) {
+ 		if (!is_daemonised)
+ 			std::cerr << "Error building clamav db: " << cl_strerror(rc) << std::endl;
+@@ -285,4 +346,5 @@
+ 		return DGCS_ERROR;
+ 	}
+ 	return DGCS_OK;
++#endif
+ }
