[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b

Török Edvin edwin at clamav.net
Sun Apr 4 01:06:27 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit 72a03f9bd51308aebc53d2bd5d60c402f925527c
Merge: 80b4b3fb0f1af79349b373f48a2cf8ee8781bf9b c92168612632b891f345ad936fc40a5e27d792b7
Author: Török Edvin <edwin at clamav.net>
Date:   Fri Oct 2 10:04:37 2009 +0300

    Merge branch 'master' into bytecode
    
    * master: (60 commits)
      Fix build when git is not installed and using BSD make.
      Only use -fno-strict-aliasing for gcc-4.3+, to avoid bugs with older compilers (bb #1581).
      libclamav/matcher-bm.c: fix cli_bm_freeoff() (bb#1710)
      bb#1708
      implove poolsize.pl
      win32: s/C_WINDOWS/_WIN32/ in clamd, shared
      libclamav/matcher-ac.c: fix matching of logical sigs (bb#1707)
      libclamav/readdb.c: fix handling of broken .ldb sigs (bb#1701)
      libclamav: new signature blacklisting format (bb#1625)
      killclamd must always succeed (except when there's a stuck clamd).
      Fix typo.
      Better error message when clamd gets killed
      merge win32 patches from sherpya
      remove bogus debug printf
      libclamav/matcher-ac.c: add support for line marker (L) (matches CR, CRLF and boundaries)
      fix EOL in platform.h
      sis.c: fix size check
      fix several problems introduced by the win32 commits
      fix in cli_is_abspath
      win32#3
      ...
    
    Conflicts:
    	.gitignore
    	Makefile.am
    	configure
    	configure.in
    	libclamav/readdb.c

diff --combined .gitignore
index 1e9a47e,5dff031..3544bb1
--- a/.gitignore
+++ b/.gitignore
@@@ -1,20 -1,20 +1,21 @@@
- *.[oa]
- *.l[oa]
  *~
- *.swp
- *.gcno
- *.gcda
- TAGS
- Makefile
+ autom4te.cache/*
+ clamav-config
+ clamav-config.h
+ config.log
+ config.status
  .deps
+ *.gcda
+ *.gcno
+ libclamav.pc
  .libs
- clamav-config*
  libtool
+ *.l[oa]
+ Makefile
+ *.[oa]
+ platform.h
  stamp-h1
+ *.swp
+ TAGS
  target.h
- config.log
- config.status
- libclamav.pc
- unit_tests/*
- autom4te.cache/*
 +libclamav/c++/autom4te.cache/*
diff --combined Makefile.am
index ddefc3d,d0705c7..ac6d86c
--- a/Makefile.am
+++ b/Makefile.am
@@@ -19,8 -19,7 +19,7 @@@
  ACLOCAL_AMFLAGS=-I m4
  
  SUBDIRS = libltdl libclamav clamscan clamd clamdscan freshclam sigtool clamconf database docs etc clamav-milter test unit_tests clamdtop clambc
- 
- EXTRA_DIST = FAQ examples BUGS shared libclamav.pc.in libclamunrar_iface/Makefile.am libclamunrar_iface/Makefile.in UPGRADE COPYING.bzip2 COPYING.lzma COPYING.unrar COPYING.LGPL COPYING.file COPYING.zlib COPYING.getopt COPYING.regex COPYING.sha256
+ EXTRA_DIST = FAQ examples BUGS shared libclamav.pc.in libclamunrar_iface/Makefile.am libclamunrar_iface/Makefile.in UPGRADE COPYING.bzip2 COPYING.lzma COPYING.unrar COPYING.LGPL COPYING.file COPYING.zlib COPYING.getopt COPYING.regex COPYING.sha256 platform.h.in
  
  bin_SCRIPTS=clamav-config
  
@@@ -31,12 -30,11 +30,12 @@@ pkgconfig_DATA = libclamav.p
  distuninstallcheck_listfiles = find . -type f ! -name clamd.conf ! -name freshclam.conf ! -name daily.cvd ! -name main.cvd -print
  DISTCLEANFILES = target.h
  if DISTCHECK_ENABLE_FLAGS
 -DISTCHECK_CONFIGURE_FLAGS=--enable-milter --disable-clamav CFLAGS="-Wno-pointer-sign -Werror-implicit-function-declaration -Werror -Wextra -Wall -Wbad-function-cast -Wcast-align -Wendif-labels -Wfloat-equal -Wformat=2 -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wno-error=missing-prototypes -Wnested-externs -Wno-error=nested-externs -Wpointer-arith -Wstrict-prototypes -Wno-error=strict-prototypes -Wno-switch -Wno-switch-enum -Wundef -Wwrite-strings -Wstrict-overflow=1 -Winit-self -Wmissing-include-dirs -Wstrict-aliasing -Wdeclaration-after-statement -Waggregate-return -Wmissing-format-attribute -Wno-error=missing-format-attribute -Wno-error=type-limits -Wno-error=unused-value -Wno-error=unused-variable -Wcast-qual -Wno-error=cast-qual -Wno-error=sign-compare -Wshadow -Wno-error=shadow -Wno-error=uninitialized -fdiagnostics-show-option -Wno-unused-parameter -Wno-error=unreachable-code -Winvalid-pch -Wno-error=invalid-pch -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-all -Wstack-protector -Wno-error=aggregate-return"
 +DISTCHECK_CONFIGURE_FLAGS=--enable-milter --enable-llvm=yes --enable-all-jit-targets --disable-clamav CFLAGS="-Wno-pointer-sign -Werror-implicit-function-declaration -Werror -Wextra -Wall -Wbad-function-cast -Wcast-align -Wendif-labels -Wfloat-equal -Wformat=2 -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wno-error=missing-prototypes -Wnested-externs -Wno-error=nested-externs -Wpointer-arith -Wstrict-prototypes -Wno-error=strict-prototypes -Wno-switch -Wno-switch-enum -Wundef -Wwrite-strings -Wstrict-overflow=1 -Winit-self -Wmissing-include-dirs -Wstrict-aliasing -Wdeclaration-after-statement -Waggregate-return -Wmissing-format-attribute -Wno-error=missing-format-attribute -Wno-error=type-limits -Wno-error=unused-value -Wno-error=unused-variable -Wcast-qual -Wno-error=cast-qual -Wno-error=sign-compare -Wshadow -Wno-error=shadow -Wno-error=uninitialized -fdiagnostics-show-option -Wno-unused-parameter -Wno-error=unreachable-code -Winvalid-pch -Wno-error=invalid-pch -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-all -Wstack-protector -Wno-error=aggregate-return"
  else
 -DISTCHECK_CONFIGURE_FLAGS=--enable-milter --disable-clamav
 +DISTCHECK_CONFIGURE_FLAGS=--enable-milter --enable-llvm=yes --enable-all-jit-targets --disable-clamav
  endif
  lcov:
  	($(MAKE); cd unit_tests; $(MAKE) lcov)
  quick-check:
  	($(MAKE); cd unit_tests; $(MAKE) quick-check)
 +
diff --combined Makefile.in
index 73c359f,e9c0491..142f85c
--- a/Makefile.in
+++ b/Makefile.in
@@@ -58,7 -58,7 +58,7 @@@ subdir = 
  DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
  	$(srcdir)/Makefile.in $(srcdir)/clamav-config.h.in \
  	$(srcdir)/clamav-config.in $(srcdir)/libclamav.pc.in \
- 	$(top_srcdir)/configure \
+ 	$(srcdir)/platform.h.in $(top_srcdir)/configure \
  	$(top_srcdir)/docs/man/clamav-milter.8.in \
  	$(top_srcdir)/docs/man/clamconf.1.in \
  	$(top_srcdir)/docs/man/clamd.8.in \
@@@ -77,9 -77,9 +77,9 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
  	$(top_srcdir)/m4/argz.m4 $(top_srcdir)/m4/fdpassing.m4 \
  	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
  	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
 -	$(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \
 -	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 -	$(top_srcdir)/m4/lt~obsolete.m4 \
 +	$(top_srcdir)/m4/llvm.m4 $(top_srcdir)/m4/ltdl.m4 \
 +	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 +	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
  	$(top_srcdir)/m4/mmap_private.m4 $(top_srcdir)/m4/resolv.m4 \
  	$(top_srcdir)/configure.in
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@@ -88,7 -88,7 +88,7 @@@ am__CONFIG_DISTCLEAN_FILES = config.sta
   configure.lineno config.status.lineno
  mkinstalldirs = $(install_sh) -d
  CONFIG_HEADER = clamav-config.h
- CONFIG_CLEAN_FILES = clamav-config libclamav.pc \
+ CONFIG_CLEAN_FILES = clamav-config libclamav.pc platform.h \
  	docs/man/clamav-milter.8 docs/man/clamconf.1 docs/man/clamd.8 \
  	docs/man/clamd.conf.5 docs/man/clamdscan.1 docs/man/clamscan.1 \
  	docs/man/freshclam.1 docs/man/freshclam.conf.5 \
@@@ -323,7 -323,6 +323,7 @@@ psdir = @psdir
  sbindir = @sbindir@
  sharedstatedir = @sharedstatedir@
  srcdir = @srcdir@
 +subdirs = @subdirs@
  sys_symbol_underscore = @sys_symbol_underscore@
  sysconfdir = @sysconfdir@
  target = @target@
@@@ -336,7 -335,7 +336,7 @@@ top_builddir = @top_builddir
  top_srcdir = @top_srcdir@
  ACLOCAL_AMFLAGS = -I m4
  SUBDIRS = libltdl libclamav clamscan clamd clamdscan freshclam sigtool clamconf database docs etc clamav-milter test unit_tests clamdtop clambc
- EXTRA_DIST = FAQ examples BUGS shared libclamav.pc.in libclamunrar_iface/Makefile.am libclamunrar_iface/Makefile.in UPGRADE COPYING.bzip2 COPYING.lzma COPYING.unrar COPYING.LGPL COPYING.file COPYING.zlib COPYING.getopt COPYING.regex COPYING.sha256
+ EXTRA_DIST = FAQ examples BUGS shared libclamav.pc.in libclamunrar_iface/Makefile.am libclamunrar_iface/Makefile.in UPGRADE COPYING.bzip2 COPYING.lzma COPYING.unrar COPYING.LGPL COPYING.file COPYING.zlib COPYING.getopt COPYING.regex COPYING.sha256 platform.h.in
  bin_SCRIPTS = clamav-config
  pkgconfigdir = $(libdir)/pkgconfig
  pkgconfig_DATA = libclamav.pc
@@@ -344,11 -343,9 +344,11 @@@
  # don't complain that configuration files and databases are not removed, this is intended
  distuninstallcheck_listfiles = find . -type f ! -name clamd.conf ! -name freshclam.conf ! -name daily.cvd ! -name main.cvd -print
  DISTCLEANFILES = target.h
 - at DISTCHECK_ENABLE_FLAGS_FALSE@DISTCHECK_CONFIGURE_FLAGS = --enable-milter --disable-clamav
 + at DISTCHECK_ENABLE_FLAGS_FALSE@DISTCHECK_CONFIGURE_FLAGS = --enable-milter --enable-llvm=yes --enable-all-jit-targets --disable-clamav
  @DISTCHECK_ENABLE_FLAGS_TRUE at DISTCHECK_CONFIGURE_FLAGS =  \
 - at DISTCHECK_ENABLE_FLAGS_TRUE@	--enable-milter --disable-clamav \
 + at DISTCHECK_ENABLE_FLAGS_TRUE@	--enable-milter --enable-llvm=yes \
 + at DISTCHECK_ENABLE_FLAGS_TRUE@	--enable-all-jit-targets \
 + at DISTCHECK_ENABLE_FLAGS_TRUE@	--disable-clamav \
  @DISTCHECK_ENABLE_FLAGS_TRUE@	CFLAGS="-Wno-pointer-sign \
  @DISTCHECK_ENABLE_FLAGS_TRUE@	-Werror-implicit-function-declaration \
  @DISTCHECK_ENABLE_FLAGS_TRUE@	-Werror -Wextra -Wall \
@@@ -447,6 -444,8 +447,8 @@@ clamav-config: $(top_builddir)/config.s
  	cd $(top_builddir) && $(SHELL) ./config.status $@
  libclamav.pc: $(top_builddir)/config.status $(srcdir)/libclamav.pc.in
  	cd $(top_builddir) && $(SHELL) ./config.status $@
+ platform.h: $(top_builddir)/config.status $(srcdir)/platform.h.in
+ 	cd $(top_builddir) && $(SHELL) ./config.status $@
  docs/man/clamav-milter.8: $(top_builddir)/config.status $(top_srcdir)/docs/man/clamav-milter.8.in
  	cd $(top_builddir) && $(SHELL) ./config.status $@
  docs/man/clamconf.1: $(top_builddir)/config.status $(top_srcdir)/docs/man/clamconf.1.in
diff --combined clamconf/clamconf.c
index 222fa5b,7f8be3c..60a8185
--- a/clamconf/clamconf.c
+++ b/clamconf/clamconf.c
@@@ -34,7 -34,6 +34,7 @@@
  #include "libclamav/str.h"
  #include "libclamav/clamav.h"
  #include "libclamav/others.h"
 +#include "libclamav/bytecode.h"
  
  static struct _cfgfile {
      const char *name;
@@@ -238,7 -237,7 +238,7 @@@ int main(int argc, char **argv
      dir = optget(opts, "config-dir")->strarg;
      printf("Checking configuration files in %s\n", dir);
      for(i = 0; cfgfile[i].name; i++) {
- 	snprintf(path, sizeof(path), "%s/%s", dir, cfgfile[i].name);
+ 	snprintf(path, sizeof(path), "%s"PATHSEP"%s", dir, cfgfile[i].name);
  	path[511] = 0;
  	if(access(path, R_OK)) {
  	    printf("\n%s not found\n", cfgfile[i].name);
@@@ -289,9 -288,7 +289,9 @@@
  	printf("BZIP2 ");
  #endif
      if(have_rar)
 -	printf("RAR");
 +	printf("RAR ");
 +    if (have_clamjit)
 +	printf("JIT");
      printf("\n");
  
      if(!strlen(dbdir)) {
@@@ -307,7 -304,7 +307,7 @@@
      printf("Database directory: %s\n", dbdir);
      flevel = cl_retflevel();
      for(i = 0; dbnames[i]; i++) {
- 	snprintf(path, sizeof(path), "%s/%s", dbdir, dbnames[i]);
+ 	snprintf(path, sizeof(path), "%s"PATHSEP"%s", dbdir, dbnames[i]);
  	path[511] = 0;
  	if(!access(path, R_OK)) {
  	    cvd = cl_cvdhead(path);
diff --combined clamd/Makefile.in
index 1950e00,0f95f47..66bce54
--- a/clamd/Makefile.in
+++ b/clamd/Makefile.in
@@@ -61,9 -61,9 +61,9 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
  	$(top_srcdir)/m4/argz.m4 $(top_srcdir)/m4/fdpassing.m4 \
  	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
  	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
 -	$(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \
 -	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 -	$(top_srcdir)/m4/lt~obsolete.m4 \
 +	$(top_srcdir)/m4/llvm.m4 $(top_srcdir)/m4/ltdl.m4 \
 +	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 +	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
  	$(top_srcdir)/m4/mmap_private.m4 $(top_srcdir)/m4/resolv.m4 \
  	$(top_srcdir)/configure.in
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@@ -82,9 -82,9 +82,9 @@@ am__clamd_SOURCES_DIST = $(top_srcdir)/
  	$(top_srcdir)/shared/network.h clamd.c tcpserver.c tcpserver.h \
  	localserver.c localserver.h session.c session.h thrmgr.c \
  	thrmgr.h server-th.c server.h scanner.c scanner.h others.c \
- 	others.h clamuko.c clamuko.h dazukoio_compat12.c \
- 	dazukoio_compat12.h dazukoio.c dazukoio.h dazuko_xp.h \
- 	dazukoio_xp.h shared.h
+ 	others.h clamuko.c clamuko.h clamukofs.c clamukofs.h \
+ 	dazukoio_compat12.c dazukoio_compat12.h dazukoio.c dazukoio.h \
+ 	dazuko_xp.h dazukoio_xp.h dazukofs.c dazukofs.h shared.h
  @BUILD_CLAMD_TRUE at am_clamd_OBJECTS = output.$(OBJEXT) \
  @BUILD_CLAMD_TRUE@	optparser.$(OBJEXT) getopt.$(OBJEXT) \
  @BUILD_CLAMD_TRUE@	misc.$(OBJEXT) network.$(OBJEXT) \
@@@ -92,9 -92,9 +92,9 @@@
  @BUILD_CLAMD_TRUE@	localserver.$(OBJEXT) session.$(OBJEXT) \
  @BUILD_CLAMD_TRUE@	thrmgr.$(OBJEXT) server-th.$(OBJEXT) \
  @BUILD_CLAMD_TRUE@	scanner.$(OBJEXT) others.$(OBJEXT) \
- @BUILD_CLAMD_TRUE@	clamuko.$(OBJEXT) \
+ @BUILD_CLAMD_TRUE@	clamuko.$(OBJEXT) clamukofs.$(OBJEXT) \
  @BUILD_CLAMD_TRUE@	dazukoio_compat12.$(OBJEXT) \
- @BUILD_CLAMD_TRUE@	dazukoio.$(OBJEXT)
+ @BUILD_CLAMD_TRUE@	dazukoio.$(OBJEXT) dazukofs.$(OBJEXT)
  clamd_OBJECTS = $(am_clamd_OBJECTS)
  clamd_LDADD = $(LDADD)
  AM_V_lt = $(am__v_lt_$(V))
@@@ -278,7 -278,6 +278,7 @@@ psdir = @psdir
  sbindir = @sbindir@
  sharedstatedir = @sharedstatedir@
  srcdir = @srcdir@
 +subdirs = @subdirs@
  sys_symbol_underscore = @sys_symbol_underscore@
  sysconfdir = @sysconfdir@
  target = @target@
@@@ -317,12 -316,16 +317,16 @@@ top_srcdir = @top_srcdir
  @BUILD_CLAMD_TRUE@    others.h \
  @BUILD_CLAMD_TRUE@    clamuko.c \
  @BUILD_CLAMD_TRUE@    clamuko.h \
+ @BUILD_CLAMD_TRUE@    clamukofs.c \
+ @BUILD_CLAMD_TRUE@    clamukofs.h \
  @BUILD_CLAMD_TRUE@    dazukoio_compat12.c \
  @BUILD_CLAMD_TRUE@    dazukoio_compat12.h \
  @BUILD_CLAMD_TRUE@    dazukoio.c \
  @BUILD_CLAMD_TRUE@    dazukoio.h \
  @BUILD_CLAMD_TRUE@    dazuko_xp.h \
  @BUILD_CLAMD_TRUE@    dazukoio_xp.h \
+ @BUILD_CLAMD_TRUE@    dazukofs.c \
+ @BUILD_CLAMD_TRUE@    dazukofs.h \
  @BUILD_CLAMD_TRUE@    shared.h
  
  AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav
@@@ -436,6 -439,8 +440,8 @@@ distclean-compile
  
  @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/clamd.Po at am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/clamuko.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/clamukofs.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dazukofs.Po at am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dazukoio.Po at am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dazukoio_compat12.Po at am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getopt.Po at am__quote@
diff --combined clamd/clamd.c
index ed4fadf,75cc3f5..2dd5708
--- a/clamd/clamd.c
+++ b/clamd/clamd.c
@@@ -18,10 -18,6 +18,6 @@@
   *  MA 02110-1301, USA.
   */
  
- #ifdef	_MSC_VER
- #include <winsock.h>
- #endif
- 
  #if HAVE_CONFIG_H
  #include "clamav-config.h"
  #endif
@@@ -31,16 -27,18 +27,18 @@@
  #include <string.h>
  #ifdef HAVE_UNISTD_H
  #include <unistd.h>
+ #endif
+ #ifndef _WIN32
  #include <sys/time.h>
  #endif
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <fcntl.h>
  #include <time.h>
- #ifdef C_WINDOWS
- #include <direct.h>	/* for chdir */
- #else
+ #ifdef HAVE_PWD_H
  #include <pwd.h>
+ #endif
+ #ifdef HAVE_GRP_H
  #include <grp.h>
  #endif
  #include <signal.h>
@@@ -70,10 -68,6 +68,6 @@@
  #include "others.h"
  #include "shared.h"
  
- #ifndef C_WINDOWS
- #define	closesocket(s)	close(s)
- #endif
- 
  short debug_mode = 0, logok = 0;
  short foreground = 0;
  
@@@ -112,12 -106,7 +106,7 @@@ int main(int argc, char **argv
  	struct stat sb;
  #endif
  
- #ifdef C_WINDOWS
-     if(!pthread_win32_process_attach_np()) {
- 	mprintf("!Can't start the win32 pthreads layer\n");
-         return 1;
-     }
- #else
+ #ifndef _WIN32
      memset(&sa, 0, sizeof(sa));
      sa.sa_handler = SIG_IGN;
      sigaction(SIGHUP, &sa, NULL);
@@@ -166,7 -155,7 +155,7 @@@
      umask(0);
  
      /* drop privileges */
- #if (!defined(C_OS2)) && (!defined(C_WINDOWS))
+ #ifndef _WIN32
      if(geteuid() == 0 && (opt = optget(opts, "User"))->enabled) {
  	if((user = getpwnam(opt->strarg)) == NULL) {
  	    fprintf(stderr, "ERROR: Can't get information about user %s.\n", opt->strarg);
@@@ -223,7 -212,7 +212,7 @@@
      if((opt = optget(opts, "LogFile"))->enabled) {
  	char timestr[32];
  	logg_file = opt->strarg;
- 	if(strlen(logg_file) < 2 || (logg_file[0] != '/' && logg_file[0] != '\\' && logg_file[1] != ':')) {
+ 	if(!cli_is_abspath(logg_file)) {
  	    fprintf(stderr, "ERROR: LogFile requires full path.\n");
  	    ret = 1;
  	    break;
@@@ -286,7 -275,7 +275,7 @@@
  
      logg("#clamd daemon %s (OS: "TARGET_OS_TYPE", ARCH: "TARGET_ARCH_TYPE", CPU: "TARGET_CPU_TYPE")\n", get_version());
  
- #ifndef C_WINDOWS
+ #ifndef _WIN32
      if(user)
  	logg("#Running as user %s (UID %u, GID %u)\n", user->pw_name, user->pw_uid, user->pw_gid);
  #endif
@@@ -400,9 -389,6 +389,9 @@@
      else
  	logg("#Not loading phishing signatures.\n");
  
 +    if(optget(opts,"Bytecode")->enabled)
 +	dboptions |= CL_DB_BYTECODE;
 +
      if(optget(opts,"PhishingScanURLs")->enabled)
  	dboptions |= CL_DB_PHISHING_URLS;
      else
@@@ -432,22 -418,13 +421,13 @@@
      }
  
      if(tcpsock) {
- #ifdef C_WINDOWS
- 	    WSADATA wsaData;
- 
- 	if(WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR) {
- 	    logg("!Error at WSAStartup(): %d\n", WSAGetLastError());
- 	    ret = 1;
- 	    break;
- 	}
- #endif
  	if ((lsockets[nlsockets] = tcpserver(opts)) == -1) {
  	    ret = 1;
  	    break;
  	}
  	nlsockets++;
      }
- 
+ #ifndef _WIN32
      if(localsock) {
  	if ((lsockets[nlsockets] = localserver(opts)) == -1) {
  	    ret = 1;
@@@ -480,6 -457,7 +460,7 @@@
  
      } else
          foreground = 1;
+ #endif
  
      ret = recvloop_th(lsockets, nlsockets, engine, dboptions, opts);
  
@@@ -491,7 -469,7 +472,7 @@@
  	closesocket(lsockets[i]);
      }
  
- #ifndef C_OS2
+ #ifndef _WIN32
      if(nlsockets && localsock) {
  	opt = optget(opts, "LocalSocket");
  	if(unlink(opt->strarg) == -1)
@@@ -501,18 -479,6 +482,6 @@@
      }
  #endif
  
- #ifdef C_WINDOWS
-     if(tcpsock)
- 	WSACleanup();
- 
-     if(!pthread_win32_process_detach_np()) {
- 	logg("!Can't stop the win32 pthreads layer\n");
- 	logg_close();
- 	optfree(opts);
- 	return 1;
-     }
- #endif
- 
      logg_close();
      optfree(opts);
  
diff --combined clamscan/manager.c
index 0891cc7,612b008..5fc07d0
--- a/clamscan/manager.c
+++ b/clamscan/manager.c
@@@ -29,14 -29,10 +29,10 @@@
  #include <ctype.h>
  #include <sys/stat.h>
  #include <sys/types.h>
- #ifdef C_WINDOWS
- #include <sys/utime.h>
- #else
+ #include <dirent.h>
+ #ifndef _WIN32
  #include <sys/wait.h>
  #include <utime.h>
- #endif
- #ifndef C_WINDOWS
- #include <dirent.h>
  #include <sys/time.h>
  #include <sys/resource.h>
  #endif
@@@ -68,15 -64,6 +64,6 @@@
  dev_t procdev;
  #endif
  
- #ifdef C_WINDOWS
- #undef P_tmpdir
- #define P_tmpdir    "C:\\WINDOWS\\TEMP"
- #endif
- 
- #ifndef	O_BINARY
- #define	O_BINARY    0
- #endif
- 
  static int scanfile(const char *filename, struct cl_engine *engine, const struct optstruct *opts, unsigned int options)
  {
    int ret = 0, fd, included, printclean = 1, fsize;
@@@ -129,7 -116,7 +116,7 @@@
  	return 0;
      }
      info.rblocks += fsize / CL_COUNT_PRECISION;
- #ifndef C_WINDOWS
+ #ifndef _WIN32
      if(geteuid())
  	if(checkaccess(filename, NULL, R_OK) != 1) {
  	    if(!printinfected)
@@@ -141,7 -128,7 +128,7 @@@
      logg("*Scanning %s\n", filename);
  
      if((fd = open(filename, O_RDONLY|O_BINARY)) == -1) {
- 	logg("^Can't open file %s\n", filename);
+ 	logg("^Can't open file %s: %s\n", filename, strerror(errno));
  	return 54;
      }
  
@@@ -214,17 -201,15 +201,15 @@@ static int scandirs(const char *dirname
  
      if((dd = opendir(dirname)) != NULL) {
  	while((dent = readdir(dd))) {
- #if !defined(C_INTERIX) && !defined(C_WINDOWS)
  	    if(dent->d_ino)
- #endif
  	    {
  		if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
  		    /* build the full name */
  		    fname = malloc(strlen(dirname) + strlen(dent->d_name) + 2);
- 		    if(!strcmp(dirname, "/"))
- 			sprintf(fname, "/%s", dent->d_name);
+ 		    if(!strcmp(dirname, PATHSEP))
+ 			sprintf(fname, PATHSEP"%s", dent->d_name);
  		    else
- 			sprintf(fname, "%s/%s", dirname, dent->d_name);
+ 			sprintf(fname, "%s"PATHSEP"%s", dirname, dent->d_name);
  
  		    /* stat the file */
  		    if(lstat(fname, &statbuf) != -1) {
@@@ -274,17 -259,9 +259,9 @@@ static int scanstdin(const struct cl_en
  
      if(optget(opts, "tempdir")->enabled) {
  	tmpdir = optget(opts, "tempdir")->strarg;
-     } else {
+     } else
  	/* check write access */
- 	tmpdir = getenv("TMPDIR");
- 
- 	if(tmpdir == NULL)
- #ifdef P_tmpdir
- 	    tmpdir = P_tmpdir;
- #else
- 	    tmpdir = "/tmp";
- #endif
-     }
+ 	tmpdir = cli_gettmpdir();
  
      if(checkaccess(tmpdir, CLAMAVUSER, W_OK) != 1) {
  	logg("!Can't write to temporary directory\n");
@@@ -342,7 -319,7 +319,7 @@@ int scanmanager(const struct optstruct 
  	char *file, cwd[1024], *pua_cats = NULL;
  	const char *filename;
  	const struct optstruct *opt;
- #ifndef C_WINDOWS
+ #ifndef _WIN32
  	struct rlimit rlim;
  #endif
  
@@@ -352,9 -329,6 +329,9 @@@
      if(optget(opts,"phishing-scan-urls")->enabled)
  	dboptions |= CL_DB_PHISHING_URLS;
  
 +    if(optget(opts,"bytecode")->enabled)
 +	dboptions |= CL_DB_BYTECODE;
 +
      if((ret = cl_init(CL_INIT_DEFAULT))) {
  	logg("!Can't initialize libclamav: %s\n", cl_strerror(ret));
  	return 50;
@@@ -479,7 -453,7 +456,7 @@@
  	}
      }
  
- #ifndef C_WINDOWS
+ #ifndef _WIN32
      if(getrlimit(RLIMIT_FSIZE, &rlim) == 0) {
  	if(rlim.rlim_cur < (rlim_t) cl_engine_get_num(engine, CL_ENGINE_MAX_FILESIZE, NULL))
  	    logg("^System limit for file size is lower than engine->maxfilesize\n");
@@@ -619,7 -593,7 +596,7 @@@
  		ret = 56;
  	    } else {
  		for(i = strlen(file) - 1; i > 0; i--) {
- 		    if(file[i] == '/')
+ 		    if(file[i] == *PATHSEP)
  			file[i] = 0;
  		    else
  			break;
diff --combined configure
index f032dff,69455ab..3c35747
--- a/configure
+++ b/configure
@@@ -742,16 -742,12 +742,16 @@@ ac_includes_default="
  # include <unistd.h>
  #endif"
  
 -ac_subst_vars='ltdl_LTLIBOBJS
 +enable_option_checking=no
 +ac_subst_vars='ENABLE_LLVM_FALSE
 +ENABLE_LLVM_TRUE
 +ltdl_LTLIBOBJS
  ltdl_LIBOBJS
  am__EXEEXT_FALSE
  am__EXEEXT_TRUE
  LTLIBOBJS
  LIBOBJS
 +subdirs
  HAVE_CURSES_FALSE
  HAVE_CURSES_TRUE
  CURSES_LIBS
@@@ -930,8 -926,8 +930,8 @@@ ac_subst_files='
  ac_user_opts='
  enable_option_checking
  enable_silent_rules
 -enable_shared
  enable_static
 +enable_shared
  with_pic
  enable_fast_install
  enable_dependency_tracking
@@@ -980,7 -976,6 +980,7 @@@ enable_fdpassin
  enable_clamdtop
  with_libncurses_prefix
  with_libpdcurses_prefix
 +enable_llvm
  '
        ac_precious_vars='build_alias
  host_alias
@@@ -991,8 -986,7 +991,8 @@@ LDFLAG
  LIBS
  CPPFLAGS
  CPP'
 -
 +ac_subdirs_all='
 +libclamav/c++'
  
  # Initialize some variables set by options.
  ac_init_help=
@@@ -1614,8 -1608,8 +1614,8 @@@ Optional Features
    --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
    --enable-silent-rules          less verbose build output (undo: `make V=1')
    --disable-silent-rules         verbose build output (undo: `make V=0')
 +  --enable-static[=PKGS]  build static libraries [default=no]
    --enable-shared[=PKGS]  build shared libraries [default=yes]
 -  --enable-static[=PKGS]  build static libraries [default=yes]
    --enable-fast-install[=PKGS]
                            optimize for fast installation [default=yes]
    --disable-dependency-tracking  speeds up one-time build
@@@ -1652,7 -1646,6 +1652,7 @@@
    --enable-readdir_r		    enable support for readdir_r
    --disable-fdpassing        don't build file descriptor passing support
    --enable-clamdtop       Enable 'clamdtop' tool [default=auto]
 +  --enable-llvm           Enable 'llvm' JIT/verifier support [default=auto]
  
  Optional Packages:
    --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@@ -2570,6 -2563,7 +2570,7 @@@ ac_compiler_gnu=$ac_cv_c_compiler_gn
  
  
  
+ 
  ac_aux_dir=
  for ac_dir in config "$srcdir"/config; do
    for ac_t in install-sh install.sh shtool; do
@@@ -3361,11 -3355,11 +3362,11 @@@ MAKEINFO=${MAKEINFO-"${am_missing_run}m
  AMTAR=${AMTAR-"${am_missing_run}tar"}
  
  
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5
- $as_echo_n "checking how to create a pax tar archive... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
+ $as_echo_n "checking how to create a ustar tar archive... " >&6; }
  # Loop over all known methods to create a tar archive until one works.
- _am_tools='gnutar  pax cpio none'
- _am_tools=${am_cv_prog_tar_pax-$_am_tools}
+ _am_tools='gnutar plaintar pax cpio none'
+ _am_tools=${am_cv_prog_tar_ustar-$_am_tools}
  # Do not fold the above two line into one, because Tru64 sh and
  # Solaris sh will not grok spaces in the rhs of `-'.
  for _am_tool in $_am_tools
@@@ -3380,8 -3374,8 +3381,8 @@@ d
     echo "$as_me:$LINENO: \$? = $ac_status" >&5
     (exit $ac_status); } && break
      done
-     am__tar="$_am_tar --format=posix -chf - "'"$$tardir"'
-     am__tar_="$_am_tar --format=posix -chf - "'"$tardir"'
+     am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
+     am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"'
      am__untar="$_am_tar -xf -"
      ;;
    plaintar)
@@@ -3393,14 -3387,14 +3394,14 @@@
      am__untar='tar xf -'
      ;;
    pax)
-     am__tar='pax -L -x pax -w "$$tardir"'
-     am__tar_='pax -L -x pax -w "$tardir"'
+     am__tar='pax -L -x ustar -w "$$tardir"'
+     am__tar_='pax -L -x ustar -w "$tardir"'
      am__untar='pax -r'
      ;;
    cpio)
-     am__tar='find "$$tardir" -print | cpio -o -H pax -L'
-     am__tar_='find "$tardir" -print | cpio -o -H pax -L'
-     am__untar='cpio -i -H pax -d'
+     am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
+     am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
+     am__untar='cpio -i -H ustar -d'
      ;;
    none)
      am__tar=false
@@@ -3411,7 -3405,7 +3412,7 @@@
  
    # If the value was cached, stop now.  We just wanted to have am__tar
    # and am__untar set.
-   test -n "${am_cv_prog_tar_pax}" && break
+   test -n "${am_cv_prog_tar_ustar}" && break
  
    # tar/untar a dummy directory, and stop if the command works
    rm -rf conftest.dir
@@@ -3434,14 -3428,14 +3435,14 @@@
  done
  rm -rf conftest.dir
  
- if test "${am_cv_prog_tar_pax+set}" = set; then :
+ if test "${am_cv_prog_tar_ustar+set}" = set; then :
    $as_echo_n "(cached) " >&6
  else
-   am_cv_prog_tar_pax=$_am_tool
+   am_cv_prog_tar_ustar=$_am_tool
  fi
  
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5
- $as_echo "$am_cv_prog_tar_pax" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
+ $as_echo "$am_cv_prog_tar_ustar" >&6; }
  
  
  
@@@ -5136,13 -5130,13 +5137,13 @@@ if test "${lt_cv_nm_interface+set}" = s
  else
    lt_cv_nm_interface="BSD nm"
    echo "int some_variable = 0;" > conftest.$ac_ext
-   (eval echo "\"\$as_me:5139: $ac_compile\"" >&5)
 -  (eval echo "\"\$as_me:5133: $ac_compile\"" >&5)
++  (eval echo "\"\$as_me:5140: $ac_compile\"" >&5)
    (eval "$ac_compile" 2>conftest.err)
    cat conftest.err >&5
-   (eval echo "\"\$as_me:5142: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
 -  (eval echo "\"\$as_me:5136: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
++  (eval echo "\"\$as_me:5143: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
    (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
    cat conftest.err >&5
-   (eval echo "\"\$as_me:5145: output\"" >&5)
 -  (eval echo "\"\$as_me:5139: output\"" >&5)
++  (eval echo "\"\$as_me:5146: output\"" >&5)
    cat conftest.out >&5
    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
      lt_cv_nm_interface="MS dumpbin"
@@@ -6337,7 -6331,7 +6338,7 @@@ ia64-*-hpux*
    ;;
  *-*-irix6*)
    # Find out which ABI we are using.
-   echo '#line 6340 "configure"' > conftest.$ac_ext
 -  echo '#line 6334 "configure"' > conftest.$ac_ext
++  echo '#line 6341 "configure"' > conftest.$ac_ext
    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
    (eval $ac_compile) 2>&5
    ac_status=$?
@@@ -7369,27 -7363,34 +7370,27 @@@ don
  
  # Set options
  enable_dlopen=yes
 -
 -
 -
 -
 -  enable_win32_dll=no
 -
 -
 -            # Check whether --enable-shared was given.
 -if test "${enable_shared+set}" = set; then :
 -  enableval=$enable_shared; p=${PACKAGE-default}
 +# Check whether --enable-static was given.
 +if test "${enable_static+set}" = set; then :
 +  enableval=$enable_static; p=${PACKAGE-default}
      case $enableval in
 -    yes) enable_shared=yes ;;
 -    no) enable_shared=no ;;
 +    yes) enable_static=yes ;;
 +    no) enable_static=no ;;
      *)
 -      enable_shared=no
 +     enable_static=no
        # Look at the argument we got.  We use all the common list separators.
        lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
        for pkg in $enableval; do
  	IFS="$lt_save_ifs"
  	if test "X$pkg" = "X$p"; then
 -	  enable_shared=yes
 +	  enable_static=yes
  	fi
        done
        IFS="$lt_save_ifs"
        ;;
      esac
  else
 -  enable_shared=yes
 +  enable_static=no
  fi
  
  
@@@ -7400,32 -7401,27 +7401,32 @@@
  
  
  
 -  # Check whether --enable-static was given.
 -if test "${enable_static+set}" = set; then :
 -  enableval=$enable_static; p=${PACKAGE-default}
 +
 +
 +  enable_win32_dll=no
 +
 +
 +            # Check whether --enable-shared was given.
 +if test "${enable_shared+set}" = set; then :
 +  enableval=$enable_shared; p=${PACKAGE-default}
      case $enableval in
 -    yes) enable_static=yes ;;
 -    no) enable_static=no ;;
 +    yes) enable_shared=yes ;;
 +    no) enable_shared=no ;;
      *)
 -     enable_static=no
 +      enable_shared=no
        # Look at the argument we got.  We use all the common list separators.
        lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
        for pkg in $enableval; do
  	IFS="$lt_save_ifs"
  	if test "X$pkg" = "X$p"; then
 -	  enable_static=yes
 +	  enable_shared=yes
  	fi
        done
        IFS="$lt_save_ifs"
        ;;
      esac
  else
 -  enable_static=yes
 +  enable_shared=yes
  fi
  
  
@@@ -7437,7 -7433,6 +7438,7 @@@
  
  
  
 +
  # Check whether --with-pic was given.
  if test "${with_pic+set}" = set; then :
    withval=$with_pic; pic_mode="$withval"
@@@ -7865,11 -7860,11 +7866,11 @@@ els
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
-    (eval echo "\"\$as_me:7868: $lt_compile\"" >&5)
 -   (eval echo "\"\$as_me:7863: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:7869: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>conftest.err)
     ac_status=$?
     cat conftest.err >&5
-    echo "$as_me:7872: \$? = $ac_status" >&5
 -   echo "$as_me:7867: \$? = $ac_status" >&5
++   echo "$as_me:7873: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
@@@ -8204,11 -8199,11 +8205,11 @@@ els
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
-    (eval echo "\"\$as_me:8207: $lt_compile\"" >&5)
 -   (eval echo "\"\$as_me:8202: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:8208: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>conftest.err)
     ac_status=$?
     cat conftest.err >&5
-    echo "$as_me:8211: \$? = $ac_status" >&5
 -   echo "$as_me:8206: \$? = $ac_status" >&5
++   echo "$as_me:8212: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
@@@ -8309,11 -8304,11 +8310,11 @@@ els
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
-    (eval echo "\"\$as_me:8312: $lt_compile\"" >&5)
 -   (eval echo "\"\$as_me:8307: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:8313: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
-    echo "$as_me:8316: \$? = $ac_status" >&5
 -   echo "$as_me:8311: \$? = $ac_status" >&5
++   echo "$as_me:8317: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
@@@ -8364,11 -8359,11 +8365,11 @@@ els
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
-    (eval echo "\"\$as_me:8367: $lt_compile\"" >&5)
 -   (eval echo "\"\$as_me:8362: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:8368: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
-    echo "$as_me:8371: \$? = $ac_status" >&5
 -   echo "$as_me:8366: \$? = $ac_status" >&5
++   echo "$as_me:8372: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
@@@ -10747,7 -10742,7 +10748,7 @@@ els
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
- #line 10750 "configure"
 -#line 10745 "configure"
++#line 10751 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
@@@ -10843,7 -10838,7 +10844,7 @@@ els
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
- #line 10846 "configure"
 -#line 10841 "configure"
++#line 10847 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
@@@ -11515,7 -11510,7 +11516,7 @@@ els
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
- #line 11518 "configure"
 -#line 11513 "configure"
++#line 11519 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
@@@ -12762,9 -12757,15 +12763,15 @@@ $as_echo "no (${gcc_version})" >&6; 
  $as_echo "ok (${gcc_version})" >&6; }
  				;;
  		esac
- 		# bb #1581 - temporarely add -fno-strict-aliasing so gcc 4.4.0
- 		# works correctly
- 		CFLAGS="$CFLAGS -fno-strict-aliasing"
+ 		case "${gcc_version}" in
+ 		    [56789].* | 4.[3456789].*)
+ 			# bb #1581 - temporarely add -fno-strict-aliasing so gcc 4.4.0
+ 			# works correctly
+ 			CFLAGS="$CFLAGS -fno-strict-aliasing"
+ 			;;
+ 		    *)
+ 			;;
+ 		esac
  	fi
  else
  	CFLAGS="$CFLAGS -O0"
@@@ -19760,29 -19761,7 +19767,29 @@@ els
  fi
  
  
 -ac_config_files="$ac_config_files libclamav/Makefile clamscan/Makefile database/Makefile docs/Makefile clamd/Makefile clamdscan/Makefile clamav-milter/Makefile freshclam/Makefile sigtool/Makefile clamconf/Makefile etc/Makefile test/Makefile unit_tests/Makefile clamdtop/Makefile clambc/Makefile Makefile clamav-config libclamav.pc platform.h docs/man/clamav-milter.8 docs/man/clamconf.1 docs/man/clamd.8 docs/man/clamd.conf.5 docs/man/clamdscan.1 docs/man/clamscan.1 docs/man/freshclam.1 docs/man/freshclam.conf.5 docs/man/sigtool.1 docs/man/clamdtop.1"
 +# Check whether --enable-llvm was given.
 +if test "${enable_llvm+set}" = set; then :
 +  enableval=$enable_llvm; enable_llvm=$enableval
 +else
 +  enable_llvm="auto"
 +fi
 +
 +
 +if test "$enable_llvm" != "no"; then
 +
 +
 +subdirs="$subdirs "
 +
 +
 +
 +subdirfailed=no
 +subdirs="$subdirs libclamav/c++"
 +
 +
 +
 +fi
 +
- ac_config_files="$ac_config_files clamscan/Makefile database/Makefile docs/Makefile clamd/Makefile clamdscan/Makefile clamav-milter/Makefile freshclam/Makefile sigtool/Makefile clamconf/Makefile etc/Makefile test/Makefile unit_tests/Makefile clamdtop/Makefile clambc/Makefile Makefile clamav-config libclamav.pc docs/man/clamav-milter.8 docs/man/clamconf.1 docs/man/clamd.8 docs/man/clamd.conf.5 docs/man/clamdscan.1 docs/man/clamscan.1 docs/man/freshclam.1 docs/man/freshclam.conf.5 docs/man/sigtool.1 docs/man/clamdtop.1"
++ac_config_files="$ac_config_files clamscan/Makefile database/Makefile docs/Makefile clamd/Makefile clamdscan/Makefile clamav-milter/Makefile freshclam/Makefile sigtool/Makefile clamconf/Makefile etc/Makefile test/Makefile unit_tests/Makefile clamdtop/Makefile clambc/Makefile Makefile clamav-config libclamav.pc platform.h docs/man/clamav-milter.8 docs/man/clamconf.1 docs/man/clamd.8 docs/man/clamd.conf.5 docs/man/clamdscan.1 docs/man/clamscan.1 docs/man/freshclam.1 docs/man/freshclam.conf.5 docs/man/sigtool.1 docs/man/clamdtop.1"
  
  cat >confcache <<\_ACEOF
  # This file is a shell script that caches the results of configure
@@@ -20559,8 -20538,8 +20566,8 @@@ double_quote_subst='$double_quote_subst
  delay_variable_subst='$delay_variable_subst'
  macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
  macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
 -enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
  enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
 +enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
  pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
  enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
  host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
@@@ -20816,6 -20795,7 +20823,6 @@@ d
      "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
      "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
      "libltdl/Makefile") CONFIG_FILES="$CONFIG_FILES libltdl/Makefile" ;;
 -    "libclamav/Makefile") CONFIG_FILES="$CONFIG_FILES libclamav/Makefile" ;;
      "clamscan/Makefile") CONFIG_FILES="$CONFIG_FILES clamscan/Makefile" ;;
      "database/Makefile") CONFIG_FILES="$CONFIG_FILES database/Makefile" ;;
      "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
@@@ -20833,6 -20813,7 +20840,7 @@@
      "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
      "clamav-config") CONFIG_FILES="$CONFIG_FILES clamav-config" ;;
      "libclamav.pc") CONFIG_FILES="$CONFIG_FILES libclamav.pc" ;;
+     "platform.h") CONFIG_FILES="$CONFIG_FILES platform.h" ;;
      "docs/man/clamav-milter.8") CONFIG_FILES="$CONFIG_FILES docs/man/clamav-milter.8" ;;
      "docs/man/clamconf.1") CONFIG_FILES="$CONFIG_FILES docs/man/clamconf.1" ;;
      "docs/man/clamd.8") CONFIG_FILES="$CONFIG_FILES docs/man/clamd.8" ;;
@@@ -21579,2596 -21560,12 +21587,2597 @@@ available_tags="
  macro_version=$macro_version
  macro_revision=$macro_revision
  
 +# Whether or not to build static libraries.
 +build_old_libs=$enable_static
 +
  # Whether or not to build shared libraries.
  build_libtool_libs=$enable_shared
  
 +# What type of objects to build.
 +pic_mode=$pic_mode
 +
 +# Whether or not to optimize for fast installation.
 +fast_install=$enable_fast_install
 +
 +# The host system.
 +host_alias=$host_alias
 +host=$host
 +host_os=$host_os
 +
 +# The build system.
 +build_alias=$build_alias
 +build=$build
 +build_os=$build_os
 +
 +# A sed program that does not truncate output.
 +SED=$lt_SED
 +
 +# Sed that helps us avoid accidentally triggering echo(1) options like -n.
 +Xsed="\$SED -e 1s/^X//"
 +
 +# A grep program that handles long lines.
 +GREP=$lt_GREP
 +
 +# An ERE matcher.
 +EGREP=$lt_EGREP
 +
 +# A literal string matcher.
 +FGREP=$lt_FGREP
 +
 +# A BSD- or MS-compatible name lister.
 +NM=$lt_NM
 +
 +# Whether we need soft or hard links.
 +LN_S=$lt_LN_S
 +
 +# What is the maximum length of a command?
 +max_cmd_len=$max_cmd_len
 +
 +# Object file suffix (normally "o").
 +objext=$ac_objext
 +
 +# Executable file suffix (normally "").
 +exeext=$exeext
 +
 +# whether the shell understands "unset".
 +lt_unset=$lt_unset
 +
 +# turn spaces into newlines.
 +SP2NL=$lt_lt_SP2NL
 +
 +# turn newlines into spaces.
 +NL2SP=$lt_lt_NL2SP
 +
 +# How to create reloadable object files.
 +reload_flag=$lt_reload_flag
 +reload_cmds=$lt_reload_cmds
 +
 +# An object symbol dumper.
 +OBJDUMP=$lt_OBJDUMP
 +
 +# Method to check whether dependent libraries are shared objects.
 +deplibs_check_method=$lt_deplibs_check_method
 +
 +# Command to use when deplibs_check_method == "file_magic".
 +file_magic_cmd=$lt_file_magic_cmd
 +
 +# The archiver.
 +AR=$lt_AR
 +AR_FLAGS=$lt_AR_FLAGS
 +
 +# A symbol stripping program.
 +STRIP=$lt_STRIP
 +
 +# Commands used to install an old-style archive.
 +RANLIB=$lt_RANLIB
 +old_postinstall_cmds=$lt_old_postinstall_cmds
 +old_postuninstall_cmds=$lt_old_postuninstall_cmds
 +
 +# A C compiler.
 +LTCC=$lt_CC
 +
 +# LTCC compiler flags.
 +LTCFLAGS=$lt_CFLAGS
 +
 +# Take the output of nm and produce a listing of raw symbols and C names.
 +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
 +
 +# Transform the output of nm in a proper C declaration.
 +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
 +
 +# Transform the output of nm in a C name address pair.
 +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
 +
 +# Transform the output of nm in a C name address pair when lib prefix is needed.
 +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
 +
 +# The name of the directory that contains temporary libtool files.
 +objdir=$objdir
 +
 +# Shell to use when invoking shell scripts.
 +SHELL=$lt_SHELL
 +
 +# An echo program that does not interpret backslashes.
 +ECHO=$lt_ECHO
 +
 +# Used to examine libraries when file_magic_cmd begins with "file".
 +MAGIC_CMD=$MAGIC_CMD
 +
 +# Must we lock files when doing compilation?
 +need_locks=$lt_need_locks
 +
 +# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
 +DSYMUTIL=$lt_DSYMUTIL
 +
 +# Tool to change global to local symbols on Mac OS X.
 +NMEDIT=$lt_NMEDIT
 +
 +# Tool to manipulate fat objects and archives on Mac OS X.
 +LIPO=$lt_LIPO
 +
 +# ldd/readelf like tool for Mach-O binaries on Mac OS X.
 +OTOOL=$lt_OTOOL
 +
 +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
 +OTOOL64=$lt_OTOOL64
 +
 +# Old archive suffix (normally "a").
 +libext=$libext
 +
 +# Shared library suffix (normally ".so").
 +shrext_cmds=$lt_shrext_cmds
 +
 +# The commands to extract the exported symbol list from a shared archive.
 +extract_expsyms_cmds=$lt_extract_expsyms_cmds
 +
 +# Variables whose values should be saved in libtool wrapper scripts and
 +# restored at link time.
 +variables_saved_for_relink=$lt_variables_saved_for_relink
 +
 +# Do we need the "lib" prefix for modules?
 +need_lib_prefix=$need_lib_prefix
 +
 +# Do we need a version for libraries?
 +need_version=$need_version
 +
 +# Library versioning type.
 +version_type=$version_type
 +
 +# Shared library runtime path variable.
 +runpath_var=$runpath_var
 +
 +# Shared library path variable.
 +shlibpath_var=$shlibpath_var
 +
 +# Is shlibpath searched before the hard-coded library search path?
 +shlibpath_overrides_runpath=$shlibpath_overrides_runpath
 +
 +# Format of library name prefix.
 +libname_spec=$lt_libname_spec
 +
 +# List of archive names.  First name is the real one, the rest are links.
 +# The last name is the one that the linker finds with -lNAME
 +library_names_spec=$lt_library_names_spec
 +
 +# The coded name of the library, if different from the real name.
 +soname_spec=$lt_soname_spec
 +
 +# Command to use after installation of a shared archive.
 +postinstall_cmds=$lt_postinstall_cmds
 +
 +# Command to use after uninstallation of a shared archive.
 +postuninstall_cmds=$lt_postuninstall_cmds
 +
 +# Commands used to finish a libtool library installation in a directory.
 +finish_cmds=$lt_finish_cmds
 +
 +# As "finish_cmds", except a single script fragment to be evaled but
 +# not shown.
 +finish_eval=$lt_finish_eval
 +
 +# Whether we should hardcode library paths into libraries.
 +hardcode_into_libs=$hardcode_into_libs
 +
 +# Compile-time system search path for libraries.
 +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 +
 +# Run-time system search path for libraries.
 +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 +
 +# Whether dlopen is supported.
 +dlopen_support=$enable_dlopen
 +
 +# Whether dlopen of programs is supported.
 +dlopen_self=$enable_dlopen_self
 +
 +# Whether dlopen of statically linked programs is supported.
 +dlopen_self_static=$enable_dlopen_self_static
 +
 +# Commands to strip libraries.
 +old_striplib=$lt_old_striplib
 +striplib=$lt_striplib
 +
 +
 +# The linker used to build libraries.
 +LD=$lt_LD
 +
 +# Commands used to build an old-style archive.
 +old_archive_cmds=$lt_old_archive_cmds
 +
 +# A language specific compiler.
 +CC=$lt_compiler
 +
 +# Is the compiler the GNU compiler?
 +with_gcc=$GCC
 +
 +# Compiler flag to turn off builtin functions.
 +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
 +
 +# How to pass a linker flag through the compiler.
 +wl=$lt_lt_prog_compiler_wl
 +
 +# Additional compiler flags for building library objects.
 +pic_flag=$lt_lt_prog_compiler_pic
 +
 +# Compiler flag to prevent dynamic linking.
 +link_static_flag=$lt_lt_prog_compiler_static
 +
 +# Does compiler simultaneously support -c and -o options?
 +compiler_c_o=$lt_lt_cv_prog_compiler_c_o
 +
 +# Whether or not to add -lc for building shared libraries.
 +build_libtool_need_lc=$archive_cmds_need_lc
 +
 +# Whether or not to disallow shared libs when runtime libs are static.
 +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
 +
 +# Compiler flag to allow reflexive dlopens.
 +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
 +
 +# Compiler flag to generate shared objects directly from archives.
 +whole_archive_flag_spec=$lt_whole_archive_flag_spec
 +
 +# Whether the compiler copes with passing no objects directly.
 +compiler_needs_object=$lt_compiler_needs_object
 +
 +# Create an old-style archive from a shared archive.
 +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
 +
 +# Create a temporary old-style archive to link instead of a shared archive.
 +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
 +
 +# Commands used to build a shared archive.
 +archive_cmds=$lt_archive_cmds
 +archive_expsym_cmds=$lt_archive_expsym_cmds
 +
 +# Commands used to build a loadable module if different from building
 +# a shared archive.
 +module_cmds=$lt_module_cmds
 +module_expsym_cmds=$lt_module_expsym_cmds
 +
 +# Whether we are building with GNU ld or not.
 +with_gnu_ld=$lt_with_gnu_ld
 +
 +# Flag that allows shared libraries with undefined symbols to be built.
 +allow_undefined_flag=$lt_allow_undefined_flag
 +
 +# Flag that enforces no undefined symbols.
 +no_undefined_flag=$lt_no_undefined_flag
 +
 +# Flag to hardcode \$libdir into a binary during linking.
 +# This must work even if \$libdir does not exist
 +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 +
 +# If ld is used when linking, flag to hardcode \$libdir into a binary
 +# during linking.  This must work even if \$libdir does not exist.
 +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
 +
 +# Whether we need a single "-rpath" flag with a separated argument.
 +hardcode_libdir_separator=$lt_hardcode_libdir_separator
 +
 +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
 +# DIR into the resulting binary.
 +hardcode_direct=$hardcode_direct
 +
 +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
 +# DIR into the resulting binary and the resulting library dependency is
 +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
 +# library is relocated.
 +hardcode_direct_absolute=$hardcode_direct_absolute
 +
 +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
 +# into the resulting binary.
 +hardcode_minus_L=$hardcode_minus_L
 +
 +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
 +# into the resulting binary.
 +hardcode_shlibpath_var=$hardcode_shlibpath_var
 +
 +# Set to "yes" if building a shared library automatically hardcodes DIR
 +# into the library and all subsequent libraries and executables linked
 +# against it.
 +hardcode_automatic=$hardcode_automatic
 +
 +# Set to yes if linker adds runtime paths of dependent libraries
 +# to runtime path list.
 +inherit_rpath=$inherit_rpath
 +
 +# Whether libtool must link a program against all its dependency libraries.
 +link_all_deplibs=$link_all_deplibs
 +
 +# Fix the shell variable \$srcfile for the compiler.
 +fix_srcfile_path=$lt_fix_srcfile_path
 +
 +# Set to "yes" if exported symbols are required.
 +always_export_symbols=$always_export_symbols
 +
 +# The commands to list exported symbols.
 +export_symbols_cmds=$lt_export_symbols_cmds
 +
 +# Symbols that should not be listed in the preloaded symbols.
 +exclude_expsyms=$lt_exclude_expsyms
 +
 +# Symbols that must always be exported.
 +include_expsyms=$lt_include_expsyms
 +
 +# Commands necessary for linking programs (against libraries) with templates.
 +prelink_cmds=$lt_prelink_cmds
 +
 +# Specify filename containing input files.
 +file_list_spec=$lt_file_list_spec
 +
 +# How to hardcode a shared library path into an executable.
 +hardcode_action=$hardcode_action
 +
 +# ### END LIBTOOL CONFIG
 +
 +_LT_EOF
 +
 +  case $host_os in
 +  aix3*)
 +    cat <<\_LT_EOF >> "$cfgfile"
 +# AIX sometimes has problems with the GCC collect2 program.  For some
 +# reason, if we set the COLLECT_NAMES environment variable, the problems
 +# vanish in a puff of smoke.
 +if test "X${COLLECT_NAMES+set}" != Xset; then
 +  COLLECT_NAMES=
 +  export COLLECT_NAMES
 +fi
 +_LT_EOF
 +    ;;
 +  esac
 +
 +
 +ltmain="$ac_aux_dir/ltmain.sh"
 +
 +
 +  # We use sed instead of cat because bash on DJGPP gets confused if
 +  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
 +  # text mode, it properly converts lines to CR/LF.  This bash problem
 +  # is reportedly fixed, but why not run on old versions too?
 +  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
 +    || (rm -f "$cfgfile"; exit 1)
 +
 +  case $xsi_shell in
 +  yes)
 +    cat << \_LT_EOF >> "$cfgfile"
 +
 +# func_dirname file append nondir_replacement
 +# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
 +# otherwise set result to NONDIR_REPLACEMENT.
 +func_dirname ()
 +{
 +  case ${1} in
 +    */*) func_dirname_result="${1%/*}${2}" ;;
 +    *  ) func_dirname_result="${3}" ;;
 +  esac
 +}
 +
 +# func_basename file
 +func_basename ()
 +{
 +  func_basename_result="${1##*/}"
 +}
 +
 +# func_dirname_and_basename file append nondir_replacement
 +# perform func_basename and func_dirname in a single function
 +# call:
 +#   dirname:  Compute the dirname of FILE.  If nonempty,
 +#             add APPEND to the result, otherwise set result
 +#             to NONDIR_REPLACEMENT.
 +#             value returned in "$func_dirname_result"
 +#   basename: Compute filename of FILE.
 +#             value retuned in "$func_basename_result"
 +# Implementation must be kept synchronized with func_dirname
 +# and func_basename. For efficiency, we do not delegate to
 +# those functions but instead duplicate the functionality here.
 +func_dirname_and_basename ()
 +{
 +  case ${1} in
 +    */*) func_dirname_result="${1%/*}${2}" ;;
 +    *  ) func_dirname_result="${3}" ;;
 +  esac
 +  func_basename_result="${1##*/}"
 +}
 +
 +# func_stripname prefix suffix name
 +# strip PREFIX and SUFFIX off of NAME.
 +# PREFIX and SUFFIX must not contain globbing or regex special
 +# characters, hashes, percent signs, but SUFFIX may contain a leading
 +# dot (in which case that matches only a dot).
 +func_stripname ()
 +{
 +  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
 +  # positional parameters, so assign one to ordinary parameter first.
 +  func_stripname_result=${3}
 +  func_stripname_result=${func_stripname_result#"${1}"}
 +  func_stripname_result=${func_stripname_result%"${2}"}
 +}
 +
 +# func_opt_split
 +func_opt_split ()
 +{
 +  func_opt_split_opt=${1%%=*}
 +  func_opt_split_arg=${1#*=}
 +}
 +
 +# func_lo2o object
 +func_lo2o ()
 +{
 +  case ${1} in
 +    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
 +    *)    func_lo2o_result=${1} ;;
 +  esac
 +}
 +
 +# func_xform libobj-or-source
 +func_xform ()
 +{
 +  func_xform_result=${1%.*}.lo
 +}
 +
 +# func_arith arithmetic-term...
 +func_arith ()
 +{
 +  func_arith_result=$(( $* ))
 +}
 +
 +# func_len string
 +# STRING may not start with a hyphen.
 +func_len ()
 +{
 +  func_len_result=${#1}
 +}
 +
 +_LT_EOF
 +    ;;
 +  *) # Bourne compatible functions.
 +    cat << \_LT_EOF >> "$cfgfile"
 +
 +# func_dirname file append nondir_replacement
 +# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
 +# otherwise set result to NONDIR_REPLACEMENT.
 +func_dirname ()
 +{
 +  # Extract subdirectory from the argument.
 +  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
 +  if test "X$func_dirname_result" = "X${1}"; then
 +    func_dirname_result="${3}"
 +  else
 +    func_dirname_result="$func_dirname_result${2}"
 +  fi
 +}
 +
 +# func_basename file
 +func_basename ()
 +{
 +  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
 +}
 +
 +
 +# func_stripname prefix suffix name
 +# strip PREFIX and SUFFIX off of NAME.
 +# PREFIX and SUFFIX must not contain globbing or regex special
 +# characters, hashes, percent signs, but SUFFIX may contain a leading
 +# dot (in which case that matches only a dot).
 +# func_strip_suffix prefix name
 +func_stripname ()
 +{
 +  case ${2} in
 +    .*) func_stripname_result=`$ECHO "X${3}" \
 +           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
 +    *)  func_stripname_result=`$ECHO "X${3}" \
 +           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
 +  esac
 +}
 +
 +# sed scripts:
 +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
 +my_sed_long_arg='1s/^-[^=]*=//'
 +
 +# func_opt_split
 +func_opt_split ()
 +{
 +  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
 +  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
 +}
 +
 +# func_lo2o object
 +func_lo2o ()
 +{
 +  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
 +}
 +
 +# func_xform libobj-or-source
 +func_xform ()
 +{
 +  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
 +}
 +
 +# func_arith arithmetic-term...
 +func_arith ()
 +{
 +  func_arith_result=`expr "$@"`
 +}
 +
 +# func_len string
 +# STRING may not start with a hyphen.
 +func_len ()
 +{
 +  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
 +}
 +
 +_LT_EOF
 +esac
 +
 +case $lt_shell_append in
 +  yes)
 +    cat << \_LT_EOF >> "$cfgfile"
 +
 +# func_append var value
 +# Append VALUE to the end of shell variable VAR.
 +func_append ()
 +{
 +  eval "$1+=\$2"
 +}
 +_LT_EOF
 +    ;;
 +  *)
 +    cat << \_LT_EOF >> "$cfgfile"
 +
 +# func_append var value
 +# Append VALUE to the end of shell variable VAR.
 +func_append ()
 +{
 +  eval "$1=\$$1\$2"
 +}
 +
 +_LT_EOF
 +    ;;
 +  esac
 +
 +
 +  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
 +    || (rm -f "$cfgfile"; exit 1)
 +
 +  mv -f "$cfgfile" "$ofile" ||
 +    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
 +  chmod +x "$ofile"
 +
 + ;;
 +
 +  esac
 +done # for ac_tag
 +
 +
 +as_fn_exit 0
 +_ACEOF
 +ac_clean_files=$ac_clean_files_save
 +
 +test $ac_write_fail = 0 ||
 +  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
 +
 +
 +# configure is writing to config.log, and then calls config.status.
 +# config.status does its own redirection, appending to config.log.
 +# Unfortunately, on DOS this fails, as config.log is still kept open
 +# by configure, so config.status won't be able to write to it; its
 +# output is simply discarded.  So we exec the FD to /dev/null,
 +# effectively closing config.log, so it can be properly (re)opened and
 +# appended to by config.status.  When coming back to configure, we
 +# need to make the FD available again.
 +if test "$no_create" != yes; then
 +  ac_cs_success=:
 +  ac_config_status_args=
 +  test "$silent" = yes &&
 +    ac_config_status_args="$ac_config_status_args --quiet"
 +  exec 5>/dev/null
 +  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
 +  exec 5>>config.log
 +  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
 +  # would make configure fail if this is the last instruction.
 +  $ac_cs_success || as_fn_exit $?
 +fi
 +
 +
 +
 +#
 +# CONFIG_SUBDIRS section.
 +#
 +if test "$no_recursion" != yes; then
 +
 +  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
 +  # so they do not pile up.
 +  ac_sub_configure_args=
 +  ac_prev=
 +  eval "set x $ac_configure_args"
 +  shift
 +  for ac_arg
 +  do
 +    if test -n "$ac_prev"; then
 +      ac_prev=
 +      continue
 +    fi
 +    case $ac_arg in
 +    -cache-file | --cache-file | --cache-fil | --cache-fi \
 +    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
 +      ac_prev=cache_file ;;
 +    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
 +    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
 +    | --c=*)
 +      ;;
 +    --config-cache | -C)
 +      ;;
 +    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
 +      ac_prev=srcdir ;;
 +    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
 +      ;;
 +    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
 +      ac_prev=prefix ;;
 +    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
 +      ;;
 +    --disable-option-checking)
 +      ;;
 +    *)
 +      case $ac_arg in
 +      *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
 +      esac
 +      as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
 +    esac
 +  done
 +
 +  # Always prepend --prefix to ensure using the same prefix
 +  # in subdir configurations.
 +  ac_arg="--prefix=$prefix"
 +  case $ac_arg in
 +  *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
 +  esac
 +  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
 +
 +  # Pass --silent
 +  if test "$silent" = yes; then
 +    ac_sub_configure_args="--silent $ac_sub_configure_args"
 +  fi
 +
 +  # Always prepend --disable-option-checking to silence warnings, since
 +  # different subdirs can have different --enable and --with options.
 +  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
 +
 +  ac_popdir=`pwd`
 +  for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
 +
 +    # Do not complain, so a configure script can configure whichever
 +    # parts of a large source tree are present.
 +    test -d "$srcdir/$ac_dir" || continue
 +
 +    ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
 +    $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
 +    $as_echo "$ac_msg" >&6
 +    as_dir="$ac_dir"; as_fn_mkdir_p
 +    ac_builddir=.
 +
 +case "$ac_dir" in
 +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 +*)
 +  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
 +  # A ".." for each directory in $ac_dir_suffix.
 +  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
 +  case $ac_top_builddir_sub in
 +  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
 +  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
 +  esac ;;
 +esac
 +ac_abs_top_builddir=$ac_pwd
 +ac_abs_builddir=$ac_pwd$ac_dir_suffix
 +# for backward compatibility:
 +ac_top_builddir=$ac_top_build_prefix
 +
 +case $srcdir in
 +  .)  # We are building in place.
 +    ac_srcdir=.
 +    ac_top_srcdir=$ac_top_builddir_sub
 +    ac_abs_top_srcdir=$ac_pwd ;;
 +  [\\/]* | ?:[\\/]* )  # Absolute name.
 +    ac_srcdir=$srcdir$ac_dir_suffix;
 +    ac_top_srcdir=$srcdir
 +    ac_abs_top_srcdir=$srcdir ;;
 +  *) # Relative name.
 +    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
 +    ac_top_srcdir=$ac_top_build_prefix$srcdir
 +    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
 +esac
 +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 +
 +
 +    cd "$ac_dir"
 +
 +    # Check for guested configure; otherwise get Cygnus style configure.
 +    if test -f "$ac_srcdir/configure.gnu"; then
 +      ac_sub_configure=$ac_srcdir/configure.gnu
 +    elif test -f "$ac_srcdir/configure"; then
 +      ac_sub_configure=$ac_srcdir/configure
 +    elif test -f "$ac_srcdir/configure.in"; then
 +      # This should be Cygnus configure.
 +      ac_sub_configure=$ac_aux_dir/configure
 +    else
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
 +$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
 +      ac_sub_configure=
 +    fi
 +
 +    # The recursion is here.
 +    if test -n "$ac_sub_configure"; then
 +      # Make the cache file name correct relative to the subdirectory.
 +      case $cache_file in
 +      [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
 +      *) # Relative name.
 +	ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
 +      esac
 +
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
 +$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
 +      # The eval makes quoting arguments work.
 +      eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
 +	   --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
 +	subdirfailed=yes
 +    fi
 +
 +    cd "$ac_popdir"
 +  done
 +fi
 +
 +	  if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 +fi
 +
 +
 +if test "$enable_llvm" = "yes" && test "$subdirfailed" != "no"; then
 +    as_fn_error "Failed to configure LLVM, and LLVM was explicitly requested" "$LINENO" 5
 +fi
 + if test "$subdirfailed" != "yes" && test "$enable_llvm" != "no"; then
 +  ENABLE_LLVM_TRUE=
 +  ENABLE_LLVM_FALSE='#'
 +else
 +  ENABLE_LLVM_TRUE='#'
 +  ENABLE_LLVM_FALSE=
 +fi
 +
 +no_recursion="yes";
 +ac_config_files="$ac_config_files libclamav/Makefile"
 +
 +cat >confcache <<\_ACEOF
 +# This file is a shell script that caches the results of configure
 +# tests run on this system so they can be shared between configure
 +# scripts and configure runs, see configure's option --config-cache.
 +# It is not useful on other systems.  If it contains results you don't
 +# want to keep, you may remove or edit it.
 +#
 +# config.status only pays attention to the cache file if you give it
 +# the --recheck option to rerun configure.
 +#
 +# `ac_cv_env_foo' variables (set or unset) will be overridden when
 +# loading this file, other *unset* `ac_cv_foo' will be assigned the
 +# following values.
 +
 +_ACEOF
 +
 +# The following way of writing the cache mishandles newlines in values,
 +# but we know of no workaround that is simple, portable, and efficient.
 +# So, we kill variables containing newlines.
 +# Ultrix sh set writes to stderr and can't be redirected directly,
 +# and sets the high bit in the cache file unless we assign to the vars.
 +(
 +  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
 +    eval ac_val=\$$ac_var
 +    case $ac_val in #(
 +    *${as_nl}*)
 +      case $ac_var in #(
 +      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 +      esac
 +      case $ac_var in #(
 +      _ | IFS | as_nl) ;; #(
 +      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
 +      *) { eval $ac_var=; unset $ac_var;} ;;
 +      esac ;;
 +    esac
 +  done
 +
 +  (set) 2>&1 |
 +    case $as_nl`(ac_space=' '; set) 2>&1` in #(
 +    *${as_nl}ac_space=\ *)
 +      # `set' does not quote correctly, so add quotes: double-quote
 +      # substitution turns \\\\ into \\, and sed turns \\ into \.
 +      sed -n \
 +	"s/'/'\\\\''/g;
 +	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
 +      ;; #(
 +    *)
 +      # `set' quotes correctly as required by POSIX, so do not add quotes.
 +      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
 +      ;;
 +    esac |
 +    sort
 +) |
 +  sed '
 +     /^ac_cv_env_/b end
 +     t clear
 +     :clear
 +     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
 +     t end
 +     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
 +     :end' >>confcache
 +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
 +  if test -w "$cache_file"; then
 +    test "x$cache_file" != "x/dev/null" &&
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
 +$as_echo "$as_me: updating cache $cache_file" >&6;}
 +    cat confcache >$cache_file
 +  else
 +    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
 +  fi
 +fi
 +rm -f confcache
 +
 +test "x$prefix" = xNONE && prefix=$ac_default_prefix
 +# Let make expand exec_prefix.
 +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 +
 +DEFS=-DHAVE_CONFIG_H
 +
 +ac_libobjs=
 +ac_ltlibobjs=
 +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
 +  # 1. Remove the extension, and $U if already installed.
 +  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
 +  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
 +  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
 +  #    will be set to the directory where LIBOBJS objects are built.
 +  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
 +  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 +done
 +LIBOBJS=$ac_libobjs
 +
 +LTLIBOBJS=$ac_ltlibobjs
 +
 +
 + if test -n "$EXEEXT"; then
 +  am__EXEEXT_TRUE=
 +  am__EXEEXT_FALSE='#'
 +else
 +  am__EXEEXT_TRUE='#'
 +  am__EXEEXT_FALSE=
 +fi
 +
 +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
 +  as_fn_error "conditional \"AMDEP\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
 +  as_fn_error "conditional \"am__fastdepCC\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${INSTALL_LTDL_TRUE}" && test -z "${INSTALL_LTDL_FALSE}"; then
 +  as_fn_error "conditional \"INSTALL_LTDL\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${CONVENIENCE_LTDL_TRUE}" && test -z "${CONVENIENCE_LTDL_FALSE}"; then
 +  as_fn_error "conditional \"CONVENIENCE_LTDL\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +LT_CONFIG_H=clamav-config.h
 +
 +    _ltdl_libobjs=
 +    _ltdl_ltlibobjs=
 +    if test -n "$_LT_LIBOBJS"; then
 +      # Remove the extension.
 +      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
 +      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
 +        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
 +        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
 +      done
 +    fi
 +    ltdl_LIBOBJS=$_ltdl_libobjs
 +
 +    ltdl_LTLIBOBJS=$_ltdl_ltlibobjs
 +
 +
 +
 +if test -z "${DISTCHECK_ENABLE_FLAGS_TRUE}" && test -z "${DISTCHECK_ENABLE_FLAGS_FALSE}"; then
 +  as_fn_error "conditional \"DISTCHECK_ENABLE_FLAGS\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${VERSIONSCRIPT_TRUE}" && test -z "${VERSIONSCRIPT_FALSE}"; then
 +  as_fn_error "conditional \"VERSIONSCRIPT\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${HAVE_LIBCHECK_TRUE}" && test -z "${HAVE_LIBCHECK_FALSE}"; then
 +  as_fn_error "conditional \"HAVE_LIBCHECK\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${ENABLE_COVERAGE_TRUE}" && test -z "${ENABLE_COVERAGE_FALSE}"; then
 +  as_fn_error "conditional \"ENABLE_COVERAGE\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
 +  as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${ENABLE_UNRAR_TRUE}" && test -z "${ENABLE_UNRAR_FALSE}"; then
 +  as_fn_error "conditional \"ENABLE_UNRAR\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${LINK_TOMMATH_TRUE}" && test -z "${LINK_TOMMATH_FALSE}"; then
 +  as_fn_error "conditional \"LINK_TOMMATH\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${BUILD_CLAMD_TRUE}" && test -z "${BUILD_CLAMD_FALSE}"; then
 +  as_fn_error "conditional \"BUILD_CLAMD\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${HAVE_MILTER_TRUE}" && test -z "${HAVE_MILTER_FALSE}"; then
 +  as_fn_error "conditional \"HAVE_MILTER\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${HAVE_CURSES_TRUE}" && test -z "${HAVE_CURSES_FALSE}"; then
 +  as_fn_error "conditional \"HAVE_CURSES\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${am__EXEEXT_TRUE}" && test -z "${am__EXEEXT_FALSE}"; then
 +  as_fn_error "conditional \"am__EXEEXT\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +if test -z "${ENABLE_LLVM_TRUE}" && test -z "${ENABLE_LLVM_FALSE}"; then
 +  as_fn_error "conditional \"ENABLE_LLVM\" was never defined.
 +Usually this means the macro was only invoked conditionally." "$LINENO" 5
 +fi
 +
 +: ${CONFIG_STATUS=./config.status}
 +ac_write_fail=0
 +ac_clean_files_save=$ac_clean_files
 +ac_clean_files="$ac_clean_files $CONFIG_STATUS"
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
 +as_write_fail=0
 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 +#! $SHELL
 +# Generated by $as_me.
 +# Run this file to recreate the current configuration.
 +# Compiler output produced by configure, useful for debugging
 +# configure, is in config.log if it exists.
 +
 +debug=false
 +ac_cs_recheck=false
 +ac_cs_silent=false
 +
 +SHELL=\${CONFIG_SHELL-$SHELL}
 +export SHELL
 +_ASEOF
 +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
 +## -------------------- ##
 +## M4sh Initialization. ##
 +## -------------------- ##
 +
 +# Be more Bourne compatible
 +DUALCASE=1; export DUALCASE # for MKS sh
 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
 +  emulate sh
 +  NULLCMD=:
 +  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
 +  # is contrary to our usage.  Disable this feature.
 +  alias -g '${1+"$@"}'='"$@"'
 +  setopt NO_GLOB_SUBST
 +else
 +  case `(set -o) 2>/dev/null` in #(
 +  *posix*) :
 +    set -o posix ;; #(
 +  *) :
 +     ;;
 +esac
 +fi
 +
 +
 +as_nl='
 +'
 +export as_nl
 +# Printing a long string crashes Solaris 7 /usr/bin/printf.
 +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
 +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
 +# Prefer a ksh shell builtin over an external printf program on Solaris,
 +# but without wasting forks for bash or zsh.
 +if test -z "$BASH_VERSION$ZSH_VERSION" \
 +    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
 +  as_echo='print -r --'
 +  as_echo_n='print -rn --'
 +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
 +  as_echo='printf %s\n'
 +  as_echo_n='printf %s'
 +else
 +  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
 +    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
 +    as_echo_n='/usr/ucb/echo -n'
 +  else
 +    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
 +    as_echo_n_body='eval
 +      arg=$1;
 +      case $arg in #(
 +      *"$as_nl"*)
 +	expr "X$arg" : "X\\(.*\\)$as_nl";
 +	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
 +      esac;
 +      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
 +    '
 +    export as_echo_n_body
 +    as_echo_n='sh -c $as_echo_n_body as_echo'
 +  fi
 +  export as_echo_body
 +  as_echo='sh -c $as_echo_body as_echo'
 +fi
 +
 +# The user is always right.
 +if test "${PATH_SEPARATOR+set}" != set; then
 +  PATH_SEPARATOR=:
 +  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
 +    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
 +      PATH_SEPARATOR=';'
 +  }
 +fi
 +
 +
 +# IFS
 +# We need space, tab and new line, in precisely that order.  Quoting is
 +# there to prevent editors from complaining about space-tab.
 +# (If _AS_PATH_WALK were called with IFS unset, it would disable word
 +# splitting by setting IFS to empty value.)
 +IFS=" ""	$as_nl"
 +
 +# Find who we are.  Look in the path if we contain no directory separator.
 +case $0 in #((
 +  *[\\/]* ) as_myself=$0 ;;
 +  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 +for as_dir in $PATH
 +do
 +  IFS=$as_save_IFS
 +  test -z "$as_dir" && as_dir=.
 +    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
 +  done
 +IFS=$as_save_IFS
 +
 +     ;;
 +esac
 +# We did not find ourselves, most probably we were run as `sh COMMAND'
 +# in which case we are not to be found in the path.
 +if test "x$as_myself" = x; then
 +  as_myself=$0
 +fi
 +if test ! -f "$as_myself"; then
 +  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
 +  exit 1
 +fi
 +
 +# Unset variables that we do not need and which cause bugs (e.g. in
 +# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
 +# suppresses any "Segmentation fault" message there.  '((' could
 +# trigger a bug in pdksh 5.2.14.
 +for as_var in BASH_ENV ENV MAIL MAILPATH
 +do eval test x\${$as_var+set} = xset \
 +  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 +done
 +PS1='$ '
 +PS2='> '
 +PS4='+ '
 +
 +# NLS nuisances.
 +LC_ALL=C
 +export LC_ALL
 +LANGUAGE=C
 +export LANGUAGE
 +
 +# CDPATH.
 +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 +
 +
 +# as_fn_error ERROR [LINENO LOG_FD]
 +# ---------------------------------
 +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
 +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
 +# script with status $?, using 1 if that was 0.
 +as_fn_error ()
 +{
 +  as_status=$?; test $as_status -eq 0 && as_status=1
 +  if test "$3"; then
 +    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
 +    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
 +  fi
 +  $as_echo "$as_me: error: $1" >&2
 +  as_fn_exit $as_status
 +} # as_fn_error
 +
 +
 +# as_fn_set_status STATUS
 +# -----------------------
 +# Set $? to STATUS, without forking.
 +as_fn_set_status ()
 +{
 +  return $1
 +} # as_fn_set_status
 +
 +# as_fn_exit STATUS
 +# -----------------
 +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
 +as_fn_exit ()
 +{
 +  set +e
 +  as_fn_set_status $1
 +  exit $1
 +} # as_fn_exit
 +
 +# as_fn_unset VAR
 +# ---------------
 +# Portably unset VAR.
 +as_fn_unset ()
 +{
 +  { eval $1=; unset $1;}
 +}
 +as_unset=as_fn_unset
 +# as_fn_append VAR VALUE
 +# ----------------------
 +# Append the text in VALUE to the end of the definition contained in VAR. Take
 +# advantage of any shell optimizations that allow amortized linear growth over
 +# repeated appends, instead of the typical quadratic growth present in naive
 +# implementations.
 +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
 +  eval 'as_fn_append ()
 +  {
 +    eval $1+=\$2
 +  }'
 +else
 +  as_fn_append ()
 +  {
 +    eval $1=\$$1\$2
 +  }
 +fi # as_fn_append
 +
 +# as_fn_arith ARG...
 +# ------------------
 +# Perform arithmetic evaluation on the ARGs, and store the result in the
 +# global $as_val. Take advantage of shells that can avoid forks. The arguments
 +# must be portable across $(()) and expr.
 +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
 +  eval 'as_fn_arith ()
 +  {
 +    as_val=$(( $* ))
 +  }'
 +else
 +  as_fn_arith ()
 +  {
 +    as_val=`expr "$@" || test $? -eq 1`
 +  }
 +fi # as_fn_arith
 +
 +
 +if expr a : '\(a\)' >/dev/null 2>&1 &&
 +   test "X`expr 00001 : '.*\(...\)'`" = X001; then
 +  as_expr=expr
 +else
 +  as_expr=false
 +fi
 +
 +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
 +  as_basename=basename
 +else
 +  as_basename=false
 +fi
 +
 +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
 +  as_dirname=dirname
 +else
 +  as_dirname=false
 +fi
 +
 +as_me=`$as_basename -- "$0" ||
 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 +	 X"$0" : 'X\(//\)$' \| \
 +	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
 +$as_echo X/"$0" |
 +    sed '/^.*\/\([^/][^/]*\)\/*$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\/\(\/\/\)$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\/\(\/\).*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  s/.*/./; q'`
 +
 +# Avoid depending upon Character Ranges.
 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
 +as_cr_digits='0123456789'
 +as_cr_alnum=$as_cr_Letters$as_cr_digits
 +
 +ECHO_C= ECHO_N= ECHO_T=
 +case `echo -n x` in #(((((
 +-n*)
 +  case `echo 'xy\c'` in
 +  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
 +  xy)  ECHO_C='\c';;
 +  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
 +       ECHO_T='	';;
 +  esac;;
 +*)
 +  ECHO_N='-n';;
 +esac
 +
 +rm -f conf$$ conf$$.exe conf$$.file
 +if test -d conf$$.dir; then
 +  rm -f conf$$.dir/conf$$.file
 +else
 +  rm -f conf$$.dir
 +  mkdir conf$$.dir 2>/dev/null
 +fi
 +if (echo >conf$$.file) 2>/dev/null; then
 +  if ln -s conf$$.file conf$$ 2>/dev/null; then
 +    as_ln_s='ln -s'
 +    # ... but there are two gotchas:
 +    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
 +    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
 +    # In both cases, we have to default to `cp -p'.
 +    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
 +      as_ln_s='cp -p'
 +  elif ln conf$$.file conf$$ 2>/dev/null; then
 +    as_ln_s=ln
 +  else
 +    as_ln_s='cp -p'
 +  fi
 +else
 +  as_ln_s='cp -p'
 +fi
 +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 +rmdir conf$$.dir 2>/dev/null
 +
 +
 +# as_fn_mkdir_p
 +# -------------
 +# Create "$as_dir" as a directory, including parents if necessary.
 +as_fn_mkdir_p ()
 +{
 +
 +  case $as_dir in #(
 +  -*) as_dir=./$as_dir;;
 +  esac
 +  test -d "$as_dir" || eval $as_mkdir_p || {
 +    as_dirs=
 +    while :; do
 +      case $as_dir in #(
 +      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
 +      *) as_qdir=$as_dir;;
 +      esac
 +      as_dirs="'$as_qdir' $as_dirs"
 +      as_dir=`$as_dirname -- "$as_dir" ||
 +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 +	 X"$as_dir" : 'X\(//\)[^/]' \| \
 +	 X"$as_dir" : 'X\(//\)$' \| \
 +	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
 +$as_echo X"$as_dir" |
 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)[^/].*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\).*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  s/.*/./; q'`
 +      test -d "$as_dir" && break
 +    done
 +    test -z "$as_dirs" || eval "mkdir $as_dirs"
 +  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
 +
 +
 +} # as_fn_mkdir_p
 +if mkdir -p . 2>/dev/null; then
 +  as_mkdir_p='mkdir -p "$as_dir"'
 +else
 +  test -d ./-p && rmdir ./-p
 +  as_mkdir_p=false
 +fi
 +
 +if test -x / >/dev/null 2>&1; then
 +  as_test_x='test -x'
 +else
 +  if ls -dL / >/dev/null 2>&1; then
 +    as_ls_L_option=L
 +  else
 +    as_ls_L_option=
 +  fi
 +  as_test_x='
 +    eval sh -c '\''
 +      if test -d "$1"; then
 +	test -d "$1/.";
 +      else
 +	case $1 in #(
 +	-*)set "./$1";;
 +	esac;
 +	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
 +	???[sx]*):;;*)false;;esac;fi
 +    '\'' sh
 +  '
 +fi
 +as_executable_p=$as_test_x
 +
 +# Sed expression to map a string onto a valid CPP name.
 +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 +
 +# Sed expression to map a string onto a valid variable name.
 +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 +
 +
 +exec 6>&1
 +## ----------------------------------- ##
 +## Main body of $CONFIG_STATUS script. ##
 +## ----------------------------------- ##
 +_ASEOF
 +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 +
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +# Save the log message, to keep $0 and so on meaningful, and to
 +# report actual input values of CONFIG_FILES etc. instead of their
 +# values after options handling.
 +ac_log="
 +This file was extended by ClamAV $as_me devel, which was
 +generated by GNU Autoconf 2.64.  Invocation command line was
 +
 +  CONFIG_FILES    = $CONFIG_FILES
 +  CONFIG_HEADERS  = $CONFIG_HEADERS
 +  CONFIG_LINKS    = $CONFIG_LINKS
 +  CONFIG_COMMANDS = $CONFIG_COMMANDS
 +  $ $0 $@
 +
 +on `(hostname || uname -n) 2>/dev/null | sed 1q`
 +"
 +
 +_ACEOF
 +
 +case $ac_config_files in *"
 +"*) set x $ac_config_files; shift; ac_config_files=$*;;
 +esac
 +
 +case $ac_config_headers in *"
 +"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
 +esac
 +
 +
 +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 +# Files that config.status was made for.
 +config_files="$ac_config_files"
 +config_headers="$ac_config_headers"
 +config_commands="$ac_config_commands"
 +
 +_ACEOF
 +
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +ac_cs_usage="\
 +\`$as_me' instantiates files and other configuration actions
 +from templates according to the current configuration.  Unless the files
 +and actions are specified as TAGs, all are instantiated by default.
 +
 +Usage: $0 [OPTION]... [TAG]...
 +
 +  -h, --help       print this help, then exit
 +  -V, --version    print version number and configuration settings, then exit
 +  -q, --quiet, --silent
 +                   do not print progress messages
 +  -d, --debug      don't remove temporary files
 +      --recheck    update $as_me by reconfiguring in the same conditions
 +      --file=FILE[:TEMPLATE]
 +                   instantiate the configuration file FILE
 +      --header=FILE[:TEMPLATE]
 +                   instantiate the configuration header FILE
 +
 +Configuration files:
 +$config_files
 +
 +Configuration headers:
 +$config_headers
 +
 +Configuration commands:
 +$config_commands
 +
 +Report bugs to <http://bugs.clamav.net/>.
 +ClamAV home page: <http://www.clamav.net/>."
 +
 +_ACEOF
 +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 +ac_cs_version="\\
 +ClamAV config.status devel
 +configured by $0, generated by GNU Autoconf 2.64,
 +  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 +
 +Copyright (C) 2009 Free Software Foundation, Inc.
 +This config.status script is free software; the Free Software Foundation
 +gives unlimited permission to copy, distribute and modify it."
 +
 +ac_pwd='$ac_pwd'
 +srcdir='$srcdir'
 +INSTALL='$INSTALL'
 +MKDIR_P='$MKDIR_P'
 +AWK='$AWK'
 +test -n "\$AWK" || AWK=awk
 +_ACEOF
 +
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +# The default lists apply if the user does not specify any file.
 +ac_need_defaults=:
 +while test $# != 0
 +do
 +  case $1 in
 +  --*=*)
 +    ac_option=`expr "X$1" : 'X\([^=]*\)='`
 +    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
 +    ac_shift=:
 +    ;;
 +  *)
 +    ac_option=$1
 +    ac_optarg=$2
 +    ac_shift=shift
 +    ;;
 +  esac
 +
 +  case $ac_option in
 +  # Handling of the options.
 +  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
 +    ac_cs_recheck=: ;;
 +  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
 +    $as_echo "$ac_cs_version"; exit ;;
 +  --debug | --debu | --deb | --de | --d | -d )
 +    debug=: ;;
 +  --file | --fil | --fi | --f )
 +    $ac_shift
 +    case $ac_optarg in
 +    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
 +    esac
 +    as_fn_append CONFIG_FILES " '$ac_optarg'"
 +    ac_need_defaults=false;;
 +  --header | --heade | --head | --hea )
 +    $ac_shift
 +    case $ac_optarg in
 +    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
 +    esac
 +    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
 +    ac_need_defaults=false;;
 +  --he | --h)
 +    # Conflict between --help and --header
 +    as_fn_error "ambiguous option: \`$1'
 +Try \`$0 --help' for more information.";;
 +  --help | --hel | -h )
 +    $as_echo "$ac_cs_usage"; exit ;;
 +  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
 +  | -silent | --silent | --silen | --sile | --sil | --si | --s)
 +    ac_cs_silent=: ;;
 +
 +  # This is an error.
 +  -*) as_fn_error "unrecognized option: \`$1'
 +Try \`$0 --help' for more information." ;;
 +
 +  *) as_fn_append ac_config_targets " $1"
 +     ac_need_defaults=false ;;
 +
 +  esac
 +  shift
 +done
 +
 +ac_configure_extra_args=
 +
 +if $ac_cs_silent; then
 +  exec 6>/dev/null
 +  ac_configure_extra_args="$ac_configure_extra_args --silent"
 +fi
 +
 +_ACEOF
 +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 +if \$ac_cs_recheck; then
 +  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
 +  shift
 +  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
 +  CONFIG_SHELL='$SHELL'
 +  export CONFIG_SHELL
 +  exec "\$@"
 +fi
 +
 +_ACEOF
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +exec 5>>config.log
 +{
 +  echo
 +  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
 +## Running $as_me. ##
 +_ASBOX
 +  $as_echo "$ac_log"
 +} >&5
 +
 +_ACEOF
 +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 +#
 +# INIT-COMMANDS
 +#
 +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 +
 +
 +# The HP-UX ksh and POSIX shell print the target directory to stdout
 +# if CDPATH is set.
 +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 +
 +sed_quote_subst='$sed_quote_subst'
 +double_quote_subst='$double_quote_subst'
 +delay_variable_subst='$delay_variable_subst'
 +macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
 +macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
 +enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
 +enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
 +pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
 +enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
 +host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
 +host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
 +host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
 +build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
 +build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
 +build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
 +SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
 +Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
 +GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
 +EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
 +FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
 +LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
 +NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
 +LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
 +max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
 +ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
 +exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
 +reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
 +reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
 +deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
 +file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
 +AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
 +AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
 +STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
 +RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
 +old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
 +CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
 +compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
 +GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
 +objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
 +SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
 +ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
 +MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
 +lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
 +need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
 +DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
 +NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
 +LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
 +OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
 +OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
 +libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
 +shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
 +enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
 +export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
 +whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
 +compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
 +old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
 +allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
 +no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
 +inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
 +link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
 +fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
 +always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
 +export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
 +include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
 +prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
 +variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
 +need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
 +need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
 +version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
 +runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
 +shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
 +shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
 +libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
 +library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
 +soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
 +postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
 +finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
 +sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
 +sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
 +hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
 +enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
 +enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
 +enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
 +old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
 +striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
 +
 +LTCC='$LTCC'
 +LTCFLAGS='$LTCFLAGS'
 +compiler='$compiler_DEFAULT'
 +
 +# Quote evaled strings.
 +for var in SED \
 +GREP \
 +EGREP \
 +FGREP \
 +LD \
 +NM \
 +LN_S \
 +lt_SP2NL \
 +lt_NL2SP \
 +reload_flag \
 +OBJDUMP \
 +deplibs_check_method \
 +file_magic_cmd \
 +AR \
 +AR_FLAGS \
 +STRIP \
 +RANLIB \
 +CC \
 +CFLAGS \
 +compiler \
 +lt_cv_sys_global_symbol_pipe \
 +lt_cv_sys_global_symbol_to_cdecl \
 +lt_cv_sys_global_symbol_to_c_name_address \
 +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
 +SHELL \
 +ECHO \
 +lt_prog_compiler_no_builtin_flag \
 +lt_prog_compiler_wl \
 +lt_prog_compiler_pic \
 +lt_prog_compiler_static \
 +lt_cv_prog_compiler_c_o \
 +need_locks \
 +DSYMUTIL \
 +NMEDIT \
 +LIPO \
 +OTOOL \
 +OTOOL64 \
 +shrext_cmds \
 +export_dynamic_flag_spec \
 +whole_archive_flag_spec \
 +compiler_needs_object \
 +with_gnu_ld \
 +allow_undefined_flag \
 +no_undefined_flag \
 +hardcode_libdir_flag_spec \
 +hardcode_libdir_flag_spec_ld \
 +hardcode_libdir_separator \
 +fix_srcfile_path \
 +exclude_expsyms \
 +include_expsyms \
 +file_list_spec \
 +variables_saved_for_relink \
 +libname_spec \
 +library_names_spec \
 +soname_spec \
 +finish_eval \
 +old_striplib \
 +striplib; do
 +    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
 +    *[\\\\\\\`\\"\\\$]*)
 +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
 +      ;;
 +    *)
 +      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
 +      ;;
 +    esac
 +done
 +
 +# Double-quote double-evaled strings.
 +for var in reload_cmds \
 +old_postinstall_cmds \
 +old_postuninstall_cmds \
 +old_archive_cmds \
 +extract_expsyms_cmds \
 +old_archive_from_new_cmds \
 +old_archive_from_expsyms_cmds \
 +archive_cmds \
 +archive_expsym_cmds \
 +module_cmds \
 +module_expsym_cmds \
 +export_symbols_cmds \
 +prelink_cmds \
 +postinstall_cmds \
 +postuninstall_cmds \
 +finish_cmds \
 +sys_lib_search_path_spec \
 +sys_lib_dlsearch_path_spec; do
 +    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
 +    *[\\\\\\\`\\"\\\$]*)
 +      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
 +      ;;
 +    *)
 +      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
 +      ;;
 +    esac
 +done
 +
 +# Fix-up fallback echo if it was mangled by the above quoting rules.
 +case \$lt_ECHO in
 +*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
 +  ;;
 +esac
 +
 +ac_aux_dir='$ac_aux_dir'
 +xsi_shell='$xsi_shell'
 +lt_shell_append='$lt_shell_append'
 +
 +# See if we are running on zsh, and set the options which allow our
 +# commands through without removal of \ escapes INIT.
 +if test -n "\${ZSH_VERSION+set}" ; then
 +   setopt NO_GLOB_SUBST
 +fi
 +
 +
 +    PACKAGE='$PACKAGE'
 +    VERSION='$VERSION'
 +    TIMESTAMP='$TIMESTAMP'
 +    RM='$RM'
 +    ofile='$ofile'
 +
 +ac_aux_dir='$ac_aux_dir'
 +
 +
 +
 +_ACEOF
 +
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +
 +# Handling of arguments.
 +for ac_config_target in $ac_config_targets
 +do
 +  case $ac_config_target in
 +    "clamav-config.h") CONFIG_HEADERS="$CONFIG_HEADERS clamav-config.h" ;;
 +    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
 +    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
 +    "libltdl/Makefile") CONFIG_FILES="$CONFIG_FILES libltdl/Makefile" ;;
 +    "clamscan/Makefile") CONFIG_FILES="$CONFIG_FILES clamscan/Makefile" ;;
 +    "database/Makefile") CONFIG_FILES="$CONFIG_FILES database/Makefile" ;;
 +    "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
 +    "clamd/Makefile") CONFIG_FILES="$CONFIG_FILES clamd/Makefile" ;;
 +    "clamdscan/Makefile") CONFIG_FILES="$CONFIG_FILES clamdscan/Makefile" ;;
 +    "clamav-milter/Makefile") CONFIG_FILES="$CONFIG_FILES clamav-milter/Makefile" ;;
 +    "freshclam/Makefile") CONFIG_FILES="$CONFIG_FILES freshclam/Makefile" ;;
 +    "sigtool/Makefile") CONFIG_FILES="$CONFIG_FILES sigtool/Makefile" ;;
 +    "clamconf/Makefile") CONFIG_FILES="$CONFIG_FILES clamconf/Makefile" ;;
 +    "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;;
 +    "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
 +    "unit_tests/Makefile") CONFIG_FILES="$CONFIG_FILES unit_tests/Makefile" ;;
 +    "clamdtop/Makefile") CONFIG_FILES="$CONFIG_FILES clamdtop/Makefile" ;;
 +    "clambc/Makefile") CONFIG_FILES="$CONFIG_FILES clambc/Makefile" ;;
 +    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
 +    "clamav-config") CONFIG_FILES="$CONFIG_FILES clamav-config" ;;
 +    "libclamav.pc") CONFIG_FILES="$CONFIG_FILES libclamav.pc" ;;
++    "platform.h") CONFIG_FILES="$CONFIG_FILES platform.h" ;;
 +    "docs/man/clamav-milter.8") CONFIG_FILES="$CONFIG_FILES docs/man/clamav-milter.8" ;;
 +    "docs/man/clamconf.1") CONFIG_FILES="$CONFIG_FILES docs/man/clamconf.1" ;;
 +    "docs/man/clamd.8") CONFIG_FILES="$CONFIG_FILES docs/man/clamd.8" ;;
 +    "docs/man/clamd.conf.5") CONFIG_FILES="$CONFIG_FILES docs/man/clamd.conf.5" ;;
 +    "docs/man/clamdscan.1") CONFIG_FILES="$CONFIG_FILES docs/man/clamdscan.1" ;;
 +    "docs/man/clamscan.1") CONFIG_FILES="$CONFIG_FILES docs/man/clamscan.1" ;;
 +    "docs/man/freshclam.1") CONFIG_FILES="$CONFIG_FILES docs/man/freshclam.1" ;;
 +    "docs/man/freshclam.conf.5") CONFIG_FILES="$CONFIG_FILES docs/man/freshclam.conf.5" ;;
 +    "docs/man/sigtool.1") CONFIG_FILES="$CONFIG_FILES docs/man/sigtool.1" ;;
 +    "docs/man/clamdtop.1") CONFIG_FILES="$CONFIG_FILES docs/man/clamdtop.1" ;;
 +    "libclamav/Makefile") CONFIG_FILES="$CONFIG_FILES libclamav/Makefile" ;;
 +
 +  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
 +  esac
 +done
 +
 +
 +# If the user did not use the arguments to specify the items to instantiate,
 +# then the envvar interface is used.  Set only those that are not.
 +# We use the long form for the default assignment because of an extremely
 +# bizarre bug on SunOS 4.1.3.
 +if $ac_need_defaults; then
 +  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
 +  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
 +  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
 +fi
 +
 +# Have a temporary directory for convenience.  Make it in the build tree
 +# simply because there is no reason against having it here, and in addition,
 +# creating and moving files from /tmp can sometimes cause problems.
 +# Hook for its removal unless debugging.
 +# Note that there is a small window in which the directory will not be cleaned:
 +# after its creation but before its name has been assigned to `$tmp'.
 +$debug ||
 +{
 +  tmp=
 +  trap 'exit_status=$?
 +  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
 +' 0
 +  trap 'as_fn_exit 1' 1 2 13 15
 +}
 +# Create a (secure) tmp directory for tmp files.
 +
 +{
 +  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
 +  test -n "$tmp" && test -d "$tmp"
 +}  ||
 +{
 +  tmp=./conf$$-$RANDOM
 +  (umask 077 && mkdir "$tmp")
 +} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
 +
 +# Set up the scripts for CONFIG_FILES section.
 +# No need to generate them if there are no CONFIG_FILES.
 +# This happens for instance with `./config.status config.h'.
 +if test -n "$CONFIG_FILES"; then
 +
 +
 +ac_cr=`echo X | tr X '\015'`
 +# On cygwin, bash can eat \r inside `` if the user requested igncr.
 +# But we know of no other shell where ac_cr would be empty at this
 +# point, so we can use a bashism as a fallback.
 +if test "x$ac_cr" = x; then
 +  eval ac_cr=\$\'\\r\'
 +fi
 +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
 +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
 +  ac_cs_awk_cr='\r'
 +else
 +  ac_cs_awk_cr=$ac_cr
 +fi
 +
 +echo 'BEGIN {' >"$tmp/subs1.awk" &&
 +_ACEOF
 +
 +
 +{
 +  echo "cat >conf$$subs.awk <<_ACEOF" &&
 +  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
 +  echo "_ACEOF"
 +} >conf$$subs.sh ||
 +  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
 +ac_delim='%!_!# '
 +for ac_last_try in false false false false false :; do
 +  . ./conf$$subs.sh ||
 +    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
 +
 +  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
 +  if test $ac_delim_n = $ac_delim_num; then
 +    break
 +  elif $ac_last_try; then
 +    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
 +  else
 +    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
 +  fi
 +done
 +rm -f conf$$subs.sh
 +
 +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
 +_ACEOF
 +sed -n '
 +h
 +s/^/S["/; s/!.*/"]=/
 +p
 +g
 +s/^[^!]*!//
 +:repl
 +t repl
 +s/'"$ac_delim"'$//
 +t delim
 +:nl
 +h
 +s/\(.\{148\}\).*/\1/
 +t more1
 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
 +p
 +n
 +b repl
 +:more1
 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/
 +p
 +g
 +s/.\{148\}//
 +t nl
 +:delim
 +h
 +s/\(.\{148\}\).*/\1/
 +t more2
 +s/["\\]/\\&/g; s/^/"/; s/$/"/
 +p
 +b
 +:more2
 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/
 +p
 +g
 +s/.\{148\}//
 +t delim
 +' <conf$$subs.awk | sed '
 +/^[^""]/{
 +  N
 +  s/\n//
 +}
 +' >>$CONFIG_STATUS || ac_write_fail=1
 +rm -f conf$$subs.awk
 +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 +_ACAWK
 +cat >>"\$tmp/subs1.awk" <<_ACAWK &&
 +  for (key in S) S_is_set[key] = 1
 +  FS = ""
 +
 +}
 +{
 +  line = $ 0
 +  nfields = split(line, field, "@")
 +  substed = 0
 +  len = length(field[1])
 +  for (i = 2; i < nfields; i++) {
 +    key = field[i]
 +    keylen = length(key)
 +    if (S_is_set[key]) {
 +      value = S[key]
 +      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
 +      len += length(value) + length(field[++i])
 +      substed = 1
 +    } else
 +      len += 1 + keylen
 +  }
 +
 +  print line
 +}
 +
 +_ACAWK
 +_ACEOF
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
 +  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
 +else
 +  cat
 +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
 +  || as_fn_error "could not setup config files machinery" "$LINENO" 5
 +_ACEOF
 +
 +# VPATH may cause trouble with some makes, so we remove $(srcdir),
 +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
 +# trailing colons and then remove the whole line if VPATH becomes empty
 +# (actually we leave an empty line to preserve line numbers).
 +if test "x$srcdir" = x.; then
 +  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
 +s/:*\$(srcdir):*/:/
 +s/:*\${srcdir}:*/:/
 +s/:*@srcdir@:*/:/
 +s/^\([^=]*=[	 ]*\):*/\1/
 +s/:*$//
 +s/^[^=]*=[	 ]*$//
 +}'
 +fi
 +
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +fi # test -n "$CONFIG_FILES"
 +
 +# Set up the scripts for CONFIG_HEADERS section.
 +# No need to generate them if there are no CONFIG_HEADERS.
 +# This happens for instance with `./config.status Makefile'.
 +if test -n "$CONFIG_HEADERS"; then
 +cat >"$tmp/defines.awk" <<\_ACAWK ||
 +BEGIN {
 +_ACEOF
 +
 +# Transform confdefs.h into an awk script `defines.awk', embedded as
 +# here-document in config.status, that substitutes the proper values into
 +# config.h.in to produce config.h.
 +
 +# Create a delimiter string that does not exist in confdefs.h, to ease
 +# handling of long lines.
 +ac_delim='%!_!# '
 +for ac_last_try in false false :; do
 +  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
 +  if test -z "$ac_t"; then
 +    break
 +  elif $ac_last_try; then
 +    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
 +  else
 +    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
 +  fi
 +done
 +
 +# For the awk script, D is an array of macro values keyed by name,
 +# likewise P contains macro parameters if any.  Preserve backslash
 +# newline sequences.
 +
 +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
 +sed -n '
 +s/.\{148\}/&'"$ac_delim"'/g
 +t rset
 +:rset
 +s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
 +t def
 +d
 +:def
 +s/\\$//
 +t bsnl
 +s/["\\]/\\&/g
 +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
 +D["\1"]=" \3"/p
 +s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
 +d
 +:bsnl
 +s/["\\]/\\&/g
 +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
 +D["\1"]=" \3\\\\\\n"\\/p
 +t cont
 +s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
 +t cont
 +d
 +:cont
 +n
 +s/.\{148\}/&'"$ac_delim"'/g
 +t clear
 +:clear
 +s/\\$//
 +t bsnlc
 +s/["\\]/\\&/g; s/^/"/; s/$/"/p
 +d
 +:bsnlc
 +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
 +b cont
 +' <confdefs.h | sed '
 +s/'"$ac_delim"'/"\\\
 +"/g' >>$CONFIG_STATUS || ac_write_fail=1
 +
 +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 +  for (key in D) D_is_set[key] = 1
 +  FS = ""
 +}
 +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
 +  line = \$ 0
 +  split(line, arg, " ")
 +  if (arg[1] == "#") {
 +    defundef = arg[2]
 +    mac1 = arg[3]
 +  } else {
 +    defundef = substr(arg[1], 2)
 +    mac1 = arg[2]
 +  }
 +  split(mac1, mac2, "(") #)
 +  macro = mac2[1]
 +  prefix = substr(line, 1, index(line, defundef) - 1)
 +  if (D_is_set[macro]) {
 +    # Preserve the white space surrounding the "#".
 +    print prefix "define", macro P[macro] D[macro]
 +    next
 +  } else {
 +    # Replace #undef with comments.  This is necessary, for example,
 +    # in the case of _POSIX_SOURCE, which is predefined and required
 +    # on some systems where configure will not decide to define it.
 +    if (defundef == "undef") {
 +      print "/*", prefix defundef, macro, "*/"
 +      next
 +    }
 +  }
 +}
 +{ print }
 +_ACAWK
 +_ACEOF
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +  as_fn_error "could not setup config headers machinery" "$LINENO" 5
 +fi # test -n "$CONFIG_HEADERS"
 +
 +
 +eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
 +shift
 +for ac_tag
 +do
 +  case $ac_tag in
 +  :[FHLC]) ac_mode=$ac_tag; continue;;
 +  esac
 +  case $ac_mode$ac_tag in
 +  :[FHL]*:*);;
 +  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
 +  :[FH]-) ac_tag=-:-;;
 +  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
 +  esac
 +  ac_save_IFS=$IFS
 +  IFS=:
 +  set x $ac_tag
 +  IFS=$ac_save_IFS
 +  shift
 +  ac_file=$1
 +  shift
 +
 +  case $ac_mode in
 +  :L) ac_source=$1;;
 +  :[FH])
 +    ac_file_inputs=
 +    for ac_f
 +    do
 +      case $ac_f in
 +      -) ac_f="$tmp/stdin";;
 +      *) # Look for the file first in the build tree, then in the source tree
 +	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
 +	 # because $ac_f cannot contain `:'.
 +	 test -f "$ac_f" ||
 +	   case $ac_f in
 +	   [\\/$]*) false;;
 +	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 +	   esac ||
 +	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
 +      esac
 +      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
 +      as_fn_append ac_file_inputs " '$ac_f'"
 +    done
 +
 +    # Let's still pretend it is `configure' which instantiates (i.e., don't
 +    # use $as_me), people would be surprised to read:
 +    #    /* config.h.  Generated by config.status.  */
 +    configure_input='Generated from '`
 +	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
 +	`' by configure.'
 +    if test x"$ac_file" != x-; then
 +      configure_input="$ac_file.  $configure_input"
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
 +$as_echo "$as_me: creating $ac_file" >&6;}
 +    fi
 +    # Neutralize special characters interpreted by sed in replacement strings.
 +    case $configure_input in #(
 +    *\&* | *\|* | *\\* )
 +       ac_sed_conf_input=`$as_echo "$configure_input" |
 +       sed 's/[\\\\&|]/\\\\&/g'`;; #(
 +    *) ac_sed_conf_input=$configure_input;;
 +    esac
 +
 +    case $ac_tag in
 +    *:-:* | *:-) cat >"$tmp/stdin" \
 +      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
 +    esac
 +    ;;
 +  esac
 +
 +  ac_dir=`$as_dirname -- "$ac_file" ||
 +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 +	 X"$ac_file" : 'X\(//\)[^/]' \| \
 +	 X"$ac_file" : 'X\(//\)$' \| \
 +	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
 +$as_echo X"$ac_file" |
 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)[^/].*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\).*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  s/.*/./; q'`
 +  as_dir="$ac_dir"; as_fn_mkdir_p
 +  ac_builddir=.
 +
 +case "$ac_dir" in
 +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 +*)
 +  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
 +  # A ".." for each directory in $ac_dir_suffix.
 +  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
 +  case $ac_top_builddir_sub in
 +  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
 +  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
 +  esac ;;
 +esac
 +ac_abs_top_builddir=$ac_pwd
 +ac_abs_builddir=$ac_pwd$ac_dir_suffix
 +# for backward compatibility:
 +ac_top_builddir=$ac_top_build_prefix
 +
 +case $srcdir in
 +  .)  # We are building in place.
 +    ac_srcdir=.
 +    ac_top_srcdir=$ac_top_builddir_sub
 +    ac_abs_top_srcdir=$ac_pwd ;;
 +  [\\/]* | ?:[\\/]* )  # Absolute name.
 +    ac_srcdir=$srcdir$ac_dir_suffix;
 +    ac_top_srcdir=$srcdir
 +    ac_abs_top_srcdir=$srcdir ;;
 +  *) # Relative name.
 +    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
 +    ac_top_srcdir=$ac_top_build_prefix$srcdir
 +    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
 +esac
 +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 +
 +
 +  case $ac_mode in
 +  :F)
 +  #
 +  # CONFIG_FILE
 +  #
 +
 +  case $INSTALL in
 +  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
 +  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
 +  esac
 +  ac_MKDIR_P=$MKDIR_P
 +  case $MKDIR_P in
 +  [\\/$]* | ?:[\\/]* ) ;;
 +  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
 +  esac
 +_ACEOF
 +
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +# If the template does not know about datarootdir, expand it.
 +# FIXME: This hack should be removed a few years after 2.60.
 +ac_datarootdir_hack=; ac_datarootdir_seen=
 +ac_sed_dataroot='
 +/datarootdir/ {
 +  p
 +  q
 +}
 +/@datadir@/p
 +/@docdir@/p
 +/@infodir@/p
 +/@localedir@/p
 +/@mandir@/p'
 +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 +*datarootdir*) ac_datarootdir_seen=yes;;
 +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 +_ACEOF
 +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 +  ac_datarootdir_hack='
 +  s&@datadir@&$datadir&g
 +  s&@docdir@&$docdir&g
 +  s&@infodir@&$infodir&g
 +  s&@localedir@&$localedir&g
 +  s&@mandir@&$mandir&g
 +  s&\\\${datarootdir}&$datarootdir&g' ;;
 +esac
 +_ACEOF
 +
 +# Neutralize VPATH when `$srcdir' = `.'.
 +# Shell code in configure.ac might set extrasub.
 +# FIXME: do we really want to maintain this feature?
 +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 +ac_sed_extra="$ac_vpsub
 +$extrasub
 +_ACEOF
 +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 +:t
 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
 +s|@configure_input@|$ac_sed_conf_input|;t t
 +s&@top_builddir@&$ac_top_builddir_sub&;t t
 +s&@top_build_prefix@&$ac_top_build_prefix&;t t
 +s&@srcdir@&$ac_srcdir&;t t
 +s&@abs_srcdir@&$ac_abs_srcdir&;t t
 +s&@top_srcdir@&$ac_top_srcdir&;t t
 +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
 +s&@builddir@&$ac_builddir&;t t
 +s&@abs_builddir@&$ac_abs_builddir&;t t
 +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
 +s&@INSTALL@&$ac_INSTALL&;t t
 +s&@MKDIR_P@&$ac_MKDIR_P&;t t
 +$ac_datarootdir_hack
 +"
 +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
 +  || as_fn_error "could not create $ac_file" "$LINENO" 5
 +
 +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
 +  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
 +  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
 +  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 +which seems to be undefined.  Please make sure it is defined." >&5
 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 +which seems to be undefined.  Please make sure it is defined." >&2;}
 +
 +  rm -f "$tmp/stdin"
 +  case $ac_file in
 +  -) cat "$tmp/out" && rm -f "$tmp/out";;
 +  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
 +  esac \
 +  || as_fn_error "could not create $ac_file" "$LINENO" 5
 + ;;
 +  :H)
 +  #
 +  # CONFIG_HEADER
 +  #
 +  if test x"$ac_file" != x-; then
 +    {
 +      $as_echo "/* $configure_input  */" \
 +      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
 +    } >"$tmp/config.h" \
 +      || as_fn_error "could not create $ac_file" "$LINENO" 5
 +    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
 +$as_echo "$as_me: $ac_file is unchanged" >&6;}
 +    else
 +      rm -f "$ac_file"
 +      mv "$tmp/config.h" "$ac_file" \
 +	|| as_fn_error "could not create $ac_file" "$LINENO" 5
 +    fi
 +  else
 +    $as_echo "/* $configure_input  */" \
 +      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
 +      || as_fn_error "could not create -" "$LINENO" 5
 +  fi
 +# Compute "$ac_file"'s index in $config_headers.
 +_am_arg="$ac_file"
 +_am_stamp_count=1
 +for _am_header in $config_headers :; do
 +  case $_am_header in
 +    $_am_arg | $_am_arg:* )
 +      break ;;
 +    * )
 +      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
 +  esac
 +done
 +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
 +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 +	 X"$_am_arg" : 'X\(//\)[^/]' \| \
 +	 X"$_am_arg" : 'X\(//\)$' \| \
 +	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
 +$as_echo X"$_am_arg" |
 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)[^/].*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\).*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  s/.*/./; q'`/stamp-h$_am_stamp_count
 + ;;
 +
 +  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
 +$as_echo "$as_me: executing $ac_file commands" >&6;}
 + ;;
 +  esac
 +
 +
 +  case $ac_file$ac_mode in
 +    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
 +  # Autoconf 2.62 quotes --file arguments for eval, but not when files
 +  # are listed without --file.  Let's play safe and only enable the eval
 +  # if we detect the quoting.
 +  case $CONFIG_FILES in
 +  *\'*) eval set x "$CONFIG_FILES" ;;
 +  *)   set x $CONFIG_FILES ;;
 +  esac
 +  shift
 +  for mf
 +  do
 +    # Strip MF so we end up with the name of the file.
 +    mf=`echo "$mf" | sed -e 's/:.*$//'`
 +    # Check whether this is an Automake generated Makefile or not.
 +    # We used to match only the files named `Makefile.in', but
 +    # some people rename them; so instead we look at the file content.
 +    # Grep'ing the first line is not enough: some people post-process
 +    # each Makefile.in and add a new line on top of each file to say so.
 +    # Grep'ing the whole file is not good either: AIX grep has a line
 +    # limit of 2048, but all sed's we know have understand at least 4000.
 +    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
 +      dirpart=`$as_dirname -- "$mf" ||
 +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 +	 X"$mf" : 'X\(//\)[^/]' \| \
 +	 X"$mf" : 'X\(//\)$' \| \
 +	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
 +$as_echo X"$mf" |
 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)[^/].*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\).*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  s/.*/./; q'`
 +    else
 +      continue
 +    fi
 +    # Extract the definition of DEPDIR, am__include, and am__quote
 +    # from the Makefile without running `make'.
 +    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
 +    test -z "$DEPDIR" && continue
 +    am__include=`sed -n 's/^am__include = //p' < "$mf"`
 +    test -z "am__include" && continue
 +    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
 +    # When using ansi2knr, U may be empty or an underscore; expand it
 +    U=`sed -n 's/^U = //p' < "$mf"`
 +    # Find all dependency output files, they are included files with
 +    # $(DEPDIR) in their names.  We invoke sed twice because it is the
 +    # simplest approach to changing $(DEPDIR) to its actual value in the
 +    # expansion.
 +    for file in `sed -n "
 +      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
 +	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
 +      # Make sure the directory exists.
 +      test -f "$dirpart/$file" && continue
 +      fdir=`$as_dirname -- "$file" ||
 +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 +	 X"$file" : 'X\(//\)[^/]' \| \
 +	 X"$file" : 'X\(//\)$' \| \
 +	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
 +$as_echo X"$file" |
 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)[^/].*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\/\)$/{
 +	    s//\1/
 +	    q
 +	  }
 +	  /^X\(\/\).*/{
 +	    s//\1/
 +	    q
 +	  }
 +	  s/.*/./; q'`
 +      as_dir=$dirpart/$fdir; as_fn_mkdir_p
 +      # echo "creating $dirpart/$file"
 +      echo '# dummy' > "$dirpart/$file"
 +    done
 +  done
 +}
 + ;;
 +    "libtool":C)
 +
 +    # See if we are running on zsh, and set the options which allow our
 +    # commands through without removal of \ escapes.
 +    if test -n "${ZSH_VERSION+set}" ; then
 +      setopt NO_GLOB_SUBST
 +    fi
 +
 +    cfgfile="${ofile}T"
 +    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
 +    $RM "$cfgfile"
 +
 +    cat <<_LT_EOF >> "$cfgfile"
 +#! $SHELL
 +
 +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
 +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
 +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 +# NOTE: Changes made to this file will be lost: look at ltmain.sh.
 +#
 +#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
 +#                 2006, 2007, 2008 Free Software Foundation, Inc.
 +#   Written by Gordon Matzigkeit, 1996
 +#
 +#   This file is part of GNU Libtool.
 +#
 +# GNU Libtool is free software; you can redistribute it and/or
 +# modify it under the terms of the GNU General Public License as
 +# published by the Free Software Foundation; either version 2 of
 +# the License, or (at your option) any later version.
 +#
 +# As a special exception to the GNU General Public License,
 +# if you distribute this file as part of a program or library that
 +# is built using GNU Libtool, you may include this file under the
 +# same distribution terms that you use for the rest of that program.
 +#
 +# GNU Libtool is distributed in the hope that it will be useful,
 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +# GNU General Public License for more details.
 +#
 +# You should have received a copy of the GNU General Public License
 +# along with GNU Libtool; see the file COPYING.  If not, a copy
 +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
 +# obtained by writing to the Free Software Foundation, Inc.,
 +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 +
 +
 +# The names of the tagged configurations supported by this script.
 +available_tags=""
 +
 +# ### BEGIN LIBTOOL CONFIG
 +
 +# Which release of libtool.m4 was used?
 +macro_version=$macro_version
 +macro_revision=$macro_revision
 +
  # Whether or not to build static libraries.
  build_old_libs=$enable_static
  
 +# Whether or not to build shared libraries.
 +build_libtool_libs=$enable_shared
 +
  # What type of objects to build.
  pic_mode=$pic_mode
  
@@@ -24774,155 -22171,7 +24783,155 @@@ if test "$no_create" != yes; the
    # would make configure fail if this is the last instruction.
    $ac_cs_success || as_fn_exit $?
  fi
 -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 +
 +
 +
 +#
 +# CONFIG_SUBDIRS section.
 +#
 +if test "$no_recursion" != yes; then
 +
 +  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
 +  # so they do not pile up.
 +  ac_sub_configure_args=
 +  ac_prev=
 +  eval "set x $ac_configure_args"
 +  shift
 +  for ac_arg
 +  do
 +    if test -n "$ac_prev"; then
 +      ac_prev=
 +      continue
 +    fi
 +    case $ac_arg in
 +    -cache-file | --cache-file | --cache-fil | --cache-fi \
 +    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
 +      ac_prev=cache_file ;;
 +    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
 +    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
 +    | --c=*)
 +      ;;
 +    --config-cache | -C)
 +      ;;
 +    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
 +      ac_prev=srcdir ;;
 +    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
 +      ;;
 +    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
 +      ac_prev=prefix ;;
 +    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
 +      ;;
 +    --disable-option-checking)
 +      ;;
 +    *)
 +      case $ac_arg in
 +      *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
 +      esac
 +      as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
 +    esac
 +  done
 +
 +  # Always prepend --prefix to ensure using the same prefix
 +  # in subdir configurations.
 +  ac_arg="--prefix=$prefix"
 +  case $ac_arg in
 +  *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
 +  esac
 +  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
 +
 +  # Pass --silent
 +  if test "$silent" = yes; then
 +    ac_sub_configure_args="--silent $ac_sub_configure_args"
 +  fi
 +
 +  # Always prepend --disable-option-checking to silence warnings, since
 +  # different subdirs can have different --enable and --with options.
 +  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
 +
 +  ac_popdir=`pwd`
 +  for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
 +
 +    # Do not complain, so a configure script can configure whichever
 +    # parts of a large source tree are present.
 +    test -d "$srcdir/$ac_dir" || continue
 +
 +    ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
 +    $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
 +    $as_echo "$ac_msg" >&6
 +    as_dir="$ac_dir"; as_fn_mkdir_p
 +    ac_builddir=.
 +
 +case "$ac_dir" in
 +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 +*)
 +  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
 +  # A ".." for each directory in $ac_dir_suffix.
 +  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
 +  case $ac_top_builddir_sub in
 +  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
 +  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
 +  esac ;;
 +esac
 +ac_abs_top_builddir=$ac_pwd
 +ac_abs_builddir=$ac_pwd$ac_dir_suffix
 +# for backward compatibility:
 +ac_top_builddir=$ac_top_build_prefix
 +
 +case $srcdir in
 +  .)  # We are building in place.
 +    ac_srcdir=.
 +    ac_top_srcdir=$ac_top_builddir_sub
 +    ac_abs_top_srcdir=$ac_pwd ;;
 +  [\\/]* | ?:[\\/]* )  # Absolute name.
 +    ac_srcdir=$srcdir$ac_dir_suffix;
 +    ac_top_srcdir=$srcdir
 +    ac_abs_top_srcdir=$srcdir ;;
 +  *) # Relative name.
 +    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
 +    ac_top_srcdir=$ac_top_build_prefix$srcdir
 +    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
 +esac
 +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 +
 +
 +    cd "$ac_dir"
 +
 +    # Check for guested configure; otherwise get Cygnus style configure.
 +    if test -f "$ac_srcdir/configure.gnu"; then
 +      ac_sub_configure=$ac_srcdir/configure.gnu
 +    elif test -f "$ac_srcdir/configure"; then
 +      ac_sub_configure=$ac_srcdir/configure
 +    elif test -f "$ac_srcdir/configure.in"; then
 +      # This should be Cygnus configure.
 +      ac_sub_configure=$ac_aux_dir/configure
 +    else
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
 +$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
 +      ac_sub_configure=
 +    fi
 +
 +    # The recursion is here.
 +    if test -n "$ac_sub_configure"; then
 +      # Make the cache file name correct relative to the subdirectory.
 +      case $cache_file in
 +      [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
 +      *) # Relative name.
 +	ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
 +      esac
 +
 +      { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
 +$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
 +      # The eval makes quoting arguments work.
 +      eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
 +	   --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
 +	subdirfailed=yes
 +    fi
 +
 +    cd "$ac_popdir"
 +  done
 +fi
 +
 +	  if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
  $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
  fi
diff --combined configure.in
index b4cd191,e1f6ef3..19ac393
--- a/configure.in
+++ b/configure.in
@@@ -22,6 -22,7 +22,7 @@@ dnl For a release change [devel] to th
  dnl also change VERSION below
  AC_INIT([ClamAV], [devel], [http://bugs.clamav.net/], [clamav], [http://www.clamav.net/])
  
+ AH_BOTTOM([#include "platform.h"])
  dnl put configure auxiliary into config
  AC_CONFIG_AUX_DIR([config])
  AC_CONFIG_HEADER([clamav-config.h])
@@@ -33,7 -34,7 +34,7 @@@ AC_CREATE_TARGET_H([target.h]
  
  dnl -Wall and -Werror here are NOT CFLAGS, they refer to automake warnings
  dnl enable stealth builds and psychedelic tests
- AM_INIT_AUTOMAKE([1.9 -Wall -Wportability -Wno-override -Werror std-options foreign dist-bzip2 no-define color-tests tar-pax])
+ AM_INIT_AUTOMAKE([1.11 -Wall -Wportability -Wno-override -Werror std-options foreign dist-bzip2 no-define color-tests parallel-tests tar-ustar])
  AM_SILENT_RULES([yes])
  
  dnl we told automake to not define these, since we want to include
@@@ -57,7 -58,7 +58,7 @@@ AC_PROG_LN_
  AC_PROG_MAKE_SET
  
  LT_CONFIG_LTDL_DIR([libltdl])
 -LT_INIT([dlopen])
 +LT_INIT([dlopen disable-static])
  LTDL_INIT([recursive])
  AC_CONFIG_FILES([libltdl/Makefile])
  
@@@ -101,9 -102,15 +102,15 @@@ if test "$gcc_check" = "yes"; the
  				AC_MSG_RESULT([ok (${gcc_version})])
  				;;
  		esac
- 		# bb #1581 - temporarely add -fno-strict-aliasing so gcc 4.4.0
- 		# works correctly
- 		CFLAGS="$CFLAGS -fno-strict-aliasing"
+ 		case "${gcc_version}" in
+ 		    [[56789]].* | 4.[[3456789]].*)
+ 			# bb #1581 - temporarely add -fno-strict-aliasing so gcc 4.4.0
+ 			# works correctly
+ 			CFLAGS="$CFLAGS -fno-strict-aliasing"
+ 			;;
+ 		    *)
+ 			;;
+ 		esac
  	fi
  else
  	CFLAGS="$CFLAGS -O0"
@@@ -1580,16 -1587,8 +1587,16 @@@ AC_SUBST([CURSES_LIBS]
  AM_CONDITIONAL([HAVE_CURSES],
  	       [test "X$HAVE_LIBNCURSES" = "Xyes" || test "X$HAVE_LIBPDCURSES" = "Xyes"])
  
 +AC_ARG_ENABLE([llvm],AC_HELP_STRING([--enable-llvm],
 +				    [Enable 'llvm' JIT/verifier support @<:@default=auto@:>@]),
 +				    [enable_llvm=$enableval], [enable_llvm="auto"])
 +
 +if test "$enable_llvm" != "no"; then
 +    dnl Try to configure subdir, optionally
 +    AC_CONFIG_SUBDIRS_OPTIONAL([libclamav/c++])
 +fi
 +
  AC_OUTPUT([
 -libclamav/Makefile
  clamscan/Makefile
  database/Makefile
  docs/Makefile
@@@ -1607,6 -1606,7 +1614,7 @@@ clambc/Makefil
  Makefile
  clamav-config
  libclamav.pc
+ platform.h
  docs/man/clamav-milter.8
  docs/man/clamconf.1
  docs/man/clamd.8
@@@ -1619,14 -1619,6 +1627,14 @@@ docs/man/sigtool.
  docs/man/clamdtop.1
  ])
  
 +if test "$enable_llvm" = "yes" && test "$subdirfailed" != "no"; then
 +    AC_MSG_ERROR([Failed to configure LLVM, and LLVM was explicitly requested])
 +fi
 +AM_CONDITIONAL([ENABLE_LLVM],
 +	       [test "$subdirfailed" != "yes" && test "$enable_llvm" != "no"])
 +no_recursion="yes";
 +AC_OUTPUT([libclamav/Makefile])
 +
  # Yep, downgrading the compiler avoids the bug too:
  # 4.0.x, and 4.1.0 are the known buggy versions
  # 3.4 doesn't have the bug
diff --combined libclamav/Makefile.am
index 97aafbd,9710937..dbb12dc
--- a/libclamav/Makefile.am
+++ b/libclamav/Makefile.am
@@@ -17,8 -17,11 +17,8 @@@
  #  MA 02110-1301, USA.
  
  AM_CPPFLAGS = -I$(top_srcdir) -I at srcdir@/nsis $(LTDLINCL)
 -
  lib_LTLIBRARIES =
  EXTRA_DIST =
 -
 -
  if ENABLE_UNRAR
  
  AM_CPPFLAGS += -DWARN_DLOPEN_FAIL
@@@ -109,19 -112,8 +109,19 @@@ libclamav_internal_utils_nothreads_la_S
  libclamav_internal_utils_nothreads_la_LDFLAGS=-static
  libclamav_internal_utils_nothreads_la_CFLAGS=-DCL_NOTHREADS
  
 -libclamav_la_LIBADD = @LIBLTDL@ $(IFACELIBADD) libclamav_internal_utils.la @LIBCLAMAV_LIBS@ @THREAD_LIBS@
 -libclamav_la_DEPENDENCIES =  @LTDLDEPS@ $(IFACEDEP) libclamav_internal_utils.la
 +if ENABLE_LLVM
 +LLVMLIBADD=c++/libclamavcxx.la -lstdc++ -lm
 +LLVMDEP=c++/libclamavcxx.la
 +SUBDIRS=c++
 +else
 +LLVMLIBADD=libclamav_nocxx.la
 +LLVMDEP=libclamav_nocxx.la
 +endif
 +
 +libclamav_nocxx_la_SOURCES = bytecode_nojit.c
 +
 +libclamav_la_LIBADD = @LIBLTDL@ $(IFACELIBADD) $(LLVMLIBADD) libclamav_internal_utils.la @LIBCLAMAV_LIBS@ @THREAD_LIBS@
 +libclamav_la_DEPENDENCIES =  @LTDLDEPS@ $(IFACEDEP) $(LLVMDEP) libclamav_internal_utils.la
  libclamav_la_CFLAGS = -DSEARCH_LIBDIR=\"$(libdir)\"
  libclamav_la_LDFLAGS = @TH_SAFE@ -version-info @LIBCLAMAV_VERSION@ -no-undefined
  
@@@ -335,9 -327,7 +335,9 @@@ libclamav_la_SOURCES = 
  	type_desc.h \
  	bytecode_api.c \
  	bytecode_api_decl.c \
 -	bytecode_api.h
 +	bytecode_api.h \
 +	bytecode_api_impl.h \
 +	bytecode_hooks.h
  
  if !LINK_TOMMATH
  libclamav_la_SOURCES += bignum.c \
@@@ -356,8 -346,8 +356,8 @@@ version.h: version.h.tm
  version.h.tmp:
  	@test -f version.h || touch version.h;\
  	rm -f $@;\
- 	REVISION="$$(LANG=C cd "$(top_srcdir)"; git describe --always 2>/dev/null)";\
- 	if test $$? -ne 0; then\
+ 	REVISION="$$(LANG=C cd "$(top_srcdir)"; git describe --always 2>/dev/null || echo "exported")";\
+ 	if test "$$REVISION" = "exported"; then\
  	   REVISION="r$$(LANG=C svnversion "$(top_srcdir)" 2>/dev/null || echo exported)";\
  	   if test "$$REVISION" = "rexported"; then\
  	    REVISION="";\
@@@ -370,7 -360,7 +370,7 @@@
  	fi
  
  lib_LTLIBRARIES += libclamav.la
 -noinst_LTLIBRARIES = libclamav_internal_utils.la libclamav_internal_utils_nothreads.la
 +noinst_LTLIBRARIES = libclamav_internal_utils.la libclamav_internal_utils_nothreads.la libclamav_nocxx.la
  EXTRA_DIST += regex/engine.c libclamav.map \
  	     jsparse/generated/operators.h jsparse/generated/keywords.h jsparse/future_reserved_words.list\
  	     jsparse/keywords.list jsparse/special_keywords.list jsparse/operators.gperf
diff --combined libclamav/Makefile.in
index a160829,bb018c6..a3cf27f
--- a/libclamav/Makefile.in
+++ b/libclamav/Makefile.in
@@@ -74,9 -74,9 +74,9 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
  	$(top_srcdir)/m4/argz.m4 $(top_srcdir)/m4/fdpassing.m4 \
  	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
  	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
 -	$(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \
 -	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 -	$(top_srcdir)/m4/lt~obsolete.m4 \
 +	$(top_srcdir)/m4/llvm.m4 $(top_srcdir)/m4/ltdl.m4 \
 +	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 +	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
  	$(top_srcdir)/m4/mmap_private.m4 $(top_srcdir)/m4/resolv.m4 \
  	$(top_srcdir)/configure.in
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@@ -109,8 -109,6 +109,8 @@@ am__base_list = 
  am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
  LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
  @ENABLE_UNRAR_TRUE at am__DEPENDENCIES_1 = libclamunrar_iface.la
 + at ENABLE_LLVM_FALSE@am__DEPENDENCIES_2 = libclamav_nocxx.la
 + at ENABLE_LLVM_TRUE@am__DEPENDENCIES_2 = c++/libclamavcxx.la
  am__libclamav_la_SOURCES_DIST = clamav.h matcher-ac.c matcher-ac.h \
  	matcher-bm.c matcher-bm.h matcher.c matcher.h others.c \
  	others.h readdb.c readdb.h cvd.c cvd.h dsig.c dsig.h \
@@@ -151,8 -149,7 +151,8 @@@
  	sha256.h bignum.h bytecode.c bytecode.h bytecode_vm.c \
  	bytecode_priv.h clambc.h cpio.c cpio.h macho.c macho.h \
  	ishield.c ishield.h type_desc.h bytecode_api.c \
 -	bytecode_api_decl.c bytecode_api.h bignum.c bignum_class.h
 +	bytecode_api_decl.c bytecode_api.h bytecode_api_impl.h \
 +	bytecode_hooks.h bignum.c bignum_class.h
  @LINK_TOMMATH_FALSE at am__objects_1 = libclamav_la-bignum.lo
  am_libclamav_la_OBJECTS = libclamav_la-matcher-ac.lo \
  	libclamav_la-matcher-bm.lo libclamav_la-matcher.lo \
@@@ -241,9 -238,6 +241,9 @@@ libclamav_internal_utils_nothreads_la_L
  	$(CCLD) $(libclamav_internal_utils_nothreads_la_CFLAGS) \
  	$(CFLAGS) $(libclamav_internal_utils_nothreads_la_LDFLAGS) \
  	$(LDFLAGS) -o $@
 +libclamav_nocxx_la_LIBADD =
 +am_libclamav_nocxx_la_OBJECTS = bytecode_nojit.lo
 +libclamav_nocxx_la_OBJECTS = $(am_libclamav_nocxx_la_OBJECTS)
  libclamunrar_la_LIBADD =
  am__libclamunrar_la_SOURCES_DIST = ../libclamunrar/unrar15.c \
  	../libclamunrar/unrar20.h ../libclamunrar/unrar.h \
@@@ -304,56 -298,16 +304,56 @@@ am__v_GEN_0 = @echo "  GEN   " $@
  SOURCES = $(libclamav_la_SOURCES) \
  	$(libclamav_internal_utils_la_SOURCES) \
  	$(libclamav_internal_utils_nothreads_la_SOURCES) \
 -	$(libclamunrar_la_SOURCES) $(libclamunrar_iface_la_SOURCES)
 +	$(libclamav_nocxx_la_SOURCES) $(libclamunrar_la_SOURCES) \
 +	$(libclamunrar_iface_la_SOURCES)
  DIST_SOURCES = $(am__libclamav_la_SOURCES_DIST) \
  	$(libclamav_internal_utils_la_SOURCES) \
  	$(libclamav_internal_utils_nothreads_la_SOURCES) \
 +	$(libclamav_nocxx_la_SOURCES) \
  	$(am__libclamunrar_la_SOURCES_DIST) \
  	$(am__libclamunrar_iface_la_SOURCES_DIST)
 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 +	html-recursive info-recursive install-data-recursive \
 +	install-dvi-recursive install-exec-recursive \
 +	install-html-recursive install-info-recursive \
 +	install-pdf-recursive install-ps-recursive install-recursive \
 +	installcheck-recursive installdirs-recursive pdf-recursive \
 +	ps-recursive uninstall-recursive
  HEADERS = $(include_HEADERS)
 +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
 +  distclean-recursive maintainer-clean-recursive
 +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
 +	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
 +	distdir
  ETAGS = etags
  CTAGS = ctags
 +DIST_SUBDIRS = c++
  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 +am__relativize = \
 +  dir0=`pwd`; \
 +  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
 +  sed_rest='s,^[^/]*/*,,'; \
 +  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
 +  sed_butlast='s,/*[^/]*$$,,'; \
 +  while test -n "$$dir1"; do \
 +    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
 +    if test "$$first" != "."; then \
 +      if test "$$first" = ".."; then \
 +        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
 +        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
 +      else \
 +        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
 +        if test "$$first2" = "$$first"; then \
 +          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
 +        else \
 +          dir2="../$$dir2"; \
 +        fi; \
 +        dir0="$$dir0"/"$$first"; \
 +      fi; \
 +    fi; \
 +    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
 +  done; \
 +  reldir="$$dir2"
  ACLOCAL = @ACLOCAL@
  AMTAR = @AMTAR@
  AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
@@@ -501,7 -455,6 +501,7 @@@ psdir = @psdir
  sbindir = @sbindir@
  sharedstatedir = @sharedstatedir@
  srcdir = @srcdir@
 +subdirs = @subdirs@
  sys_symbol_underscore = @sys_symbol_underscore@
  sysconfdir = @sysconfdir@
  target = @target@
@@@ -589,14 -542,8 +589,14 @@@ libclamav_internal_utils_nothreads_la_S
  
  libclamav_internal_utils_nothreads_la_LDFLAGS = -static
  libclamav_internal_utils_nothreads_la_CFLAGS = -DCL_NOTHREADS
 -libclamav_la_LIBADD = @LIBLTDL@ $(IFACELIBADD) libclamav_internal_utils.la @LIBCLAMAV_LIBS@ @THREAD_LIBS@
 -libclamav_la_DEPENDENCIES = @LTDLDEPS@ $(IFACEDEP) libclamav_internal_utils.la
 + at ENABLE_LLVM_FALSE@LLVMLIBADD = libclamav_nocxx.la
 + at ENABLE_LLVM_TRUE@LLVMLIBADD = c++/libclamavcxx.la -lstdc++ -lm
 + at ENABLE_LLVM_FALSE@LLVMDEP = libclamav_nocxx.la
 + at ENABLE_LLVM_TRUE@LLVMDEP = c++/libclamavcxx.la
 + at ENABLE_LLVM_TRUE@SUBDIRS = c++
 +libclamav_nocxx_la_SOURCES = bytecode_nojit.c
 +libclamav_la_LIBADD = @LIBLTDL@ $(IFACELIBADD) $(LLVMLIBADD) libclamav_internal_utils.la @LIBCLAMAV_LIBS@ @THREAD_LIBS@
 +libclamav_la_DEPENDENCIES = @LTDLDEPS@ $(IFACEDEP) $(LLVMDEP) libclamav_internal_utils.la
  libclamav_la_CFLAGS = -DSEARCH_LIBDIR=\"$(libdir)\"
  libclamav_la_LDFLAGS = @TH_SAFE@ -version-info @LIBCLAMAV_VERSION@ \
  	-no-undefined $(am__append_6)
@@@ -640,16 -587,15 +640,16 @@@ libclamav_la_SOURCES = clamav.h matcher
  	sha256.h bignum.h bytecode.c bytecode.h bytecode_vm.c \
  	bytecode_priv.h clambc.h cpio.c cpio.h macho.c macho.h \
  	ishield.c ishield.h type_desc.h bytecode_api.c \
 -	bytecode_api_decl.c bytecode_api.h $(am__append_7)
 -noinst_LTLIBRARIES = libclamav_internal_utils.la libclamav_internal_utils_nothreads.la
 +	bytecode_api_decl.c bytecode_api.h bytecode_api_impl.h \
 +	bytecode_hooks.h $(am__append_7)
 +noinst_LTLIBRARIES = libclamav_internal_utils.la libclamav_internal_utils_nothreads.la libclamav_nocxx.la
  COMMON_CLEANFILES = version.h version.h.tmp *.gcda *.gcno
  @MAINTAINER_MODE_TRUE at BUILT_SOURCES = jsparse/generated/operators.h jsparse/generated/keywords.h jsparse-keywords.gperf
  @MAINTAINER_MODE_TRUE at GPERF_FLAGS = -E -t -L ANSI-C -C -F ', TOK_ERROR' -c
  @MAINTAINER_MODE_FALSE at CLEANFILES = $(COMMON_CLEANFILES)
  @MAINTAINER_MODE_TRUE at CLEANFILES = $(COMMON_CLEANFILES) @srcdir@/jsparse/generated/operators.h @srcdir@/jsparse/generated/keywords.h
  all: $(BUILT_SOURCES)
 -	$(MAKE) $(AM_MAKEFLAGS) all-am
 +	$(MAKE) $(AM_MAKEFLAGS) all-recursive
  
  .SUFFIXES:
  .SUFFIXES: .c .lo .o .obj
@@@ -729,8 -675,6 +729,8 @@@ libclamav_internal_utils.la: $(libclama
  	$(AM_V_CCLD)$(libclamav_internal_utils_la_LINK)  $(libclamav_internal_utils_la_OBJECTS) $(libclamav_internal_utils_la_LIBADD) $(LIBS)
  libclamav_internal_utils_nothreads.la: $(libclamav_internal_utils_nothreads_la_OBJECTS) $(libclamav_internal_utils_nothreads_la_DEPENDENCIES) 
  	$(AM_V_CCLD)$(libclamav_internal_utils_nothreads_la_LINK)  $(libclamav_internal_utils_nothreads_la_OBJECTS) $(libclamav_internal_utils_nothreads_la_LIBADD) $(LIBS)
 +libclamav_nocxx.la: $(libclamav_nocxx_la_OBJECTS) $(libclamav_nocxx_la_DEPENDENCIES) 
 +	$(AM_V_CCLD)$(LINK)  $(libclamav_nocxx_la_OBJECTS) $(libclamav_nocxx_la_LIBADD) $(LIBS)
  libclamunrar.la: $(libclamunrar_la_OBJECTS) $(libclamunrar_la_DEPENDENCIES) 
  	$(AM_V_CCLD)$(libclamunrar_la_LINK) $(am_libclamunrar_la_rpath) $(libclamunrar_la_OBJECTS) $(libclamunrar_la_LIBADD) $(LIBS)
  libclamunrar_iface.la: $(libclamunrar_iface_la_OBJECTS) $(libclamunrar_iface_la_DEPENDENCIES) 
@@@ -742,7 -686,6 +742,7 @@@ mostlyclean-compile
  distclean-compile:
  	-rm -f *.tab.c
  
 + at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bytecode_nojit.Plo at am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_internal_utils_la-md5.Plo at am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_internal_utils_la-others_common.Plo at am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_internal_utils_la-regcomp.Plo at am__quote@
@@@ -1865,76 -1808,6 +1865,76 @@@ uninstall-includeHEADERS
  	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
  	cd "$(DESTDIR)$(includedir)" && rm -f $$files
  
 +# This directory's subdirectories are mostly independent; you can cd
 +# into them and run `make' without going through this Makefile.
 +# To change the values of `make' variables: instead of editing Makefiles,
 +# (1) if the variable is set in `config.status', edit `config.status'
 +#     (which will cause the Makefiles to be regenerated when you run `make');
 +# (2) otherwise, pass the desired values on the `make' command line.
 +$(RECURSIVE_TARGETS):
 +	@failcom='exit 1'; \
 +	for f in x $$MAKEFLAGS; do \
 +	  case $$f in \
 +	    *=* | --[!k]*);; \
 +	    *k*) failcom='fail=yes';; \
 +	  esac; \
 +	done; \
 +	dot_seen=no; \
 +	target=`echo $@ | sed s/-recursive//`; \
 +	list='$(SUBDIRS)'; for subdir in $$list; do \
 +	  echo "Making $$target in $$subdir"; \
 +	  if test "$$subdir" = "."; then \
 +	    dot_seen=yes; \
 +	    local_target="$$target-am"; \
 +	  else \
 +	    local_target="$$target"; \
 +	  fi; \
 +	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 +	  || eval $$failcom; \
 +	done; \
 +	if test "$$dot_seen" = "no"; then \
 +	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 +	fi; test -z "$$fail"
 +
 +$(RECURSIVE_CLEAN_TARGETS):
 +	@failcom='exit 1'; \
 +	for f in x $$MAKEFLAGS; do \
 +	  case $$f in \
 +	    *=* | --[!k]*);; \
 +	    *k*) failcom='fail=yes';; \
 +	  esac; \
 +	done; \
 +	dot_seen=no; \
 +	case "$@" in \
 +	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
 +	  *) list='$(SUBDIRS)' ;; \
 +	esac; \
 +	rev=''; for subdir in $$list; do \
 +	  if test "$$subdir" = "."; then :; else \
 +	    rev="$$subdir $$rev"; \
 +	  fi; \
 +	done; \
 +	rev="$$rev ."; \
 +	target=`echo $@ | sed s/-recursive//`; \
 +	for subdir in $$rev; do \
 +	  echo "Making $$target in $$subdir"; \
 +	  if test "$$subdir" = "."; then \
 +	    local_target="$$target-am"; \
 +	  else \
 +	    local_target="$$target"; \
 +	  fi; \
 +	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 +	  || eval $$failcom; \
 +	done && test -z "$$fail"
 +tags-recursive:
 +	list='$(SUBDIRS)'; for subdir in $$list; do \
 +	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 +	done
 +ctags-recursive:
 +	list='$(SUBDIRS)'; for subdir in $$list; do \
 +	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 +	done
 +
  ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
  	unique=`for i in $$list; do \
@@@ -1945,23 -1818,10 +1945,23 @@@
  	mkid -fID $$unique
  tags: TAGS
  
 -TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 +TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
  		$(TAGS_FILES) $(LISP)
  	set x; \
  	here=`pwd`; \
 +	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 +	  include_option=--etags-include; \
 +	  empty_fix=.; \
 +	else \
 +	  include_option=--include; \
 +	  empty_fix=; \
 +	fi; \
 +	list='$(SUBDIRS)'; for subdir in $$list; do \
 +	  if test "$$subdir" = .; then :; else \
 +	    test ! -f $$subdir/TAGS || \
 +	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 +	  fi; \
 +	done; \
  	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
  	unique=`for i in $$list; do \
  	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
@@@ -1980,7 -1840,7 +1980,7 @@@
  	  fi; \
  	fi
  ctags: CTAGS
 -CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 +CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
  		$(TAGS_FILES) $(LISP)
  	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
  	unique=`for i in $$list; do \
@@@ -2030,53 -1890,24 +2030,53 @@@ distdir: $(DISTFILES
  	    || exit 1; \
  	  fi; \
  	done
 +	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 +	  if test "$$subdir" = .; then :; else \
 +	    test -d "$(distdir)/$$subdir" \
 +	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 +	    || exit 1; \
 +	  fi; \
 +	done
 +	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 +	  if test "$$subdir" = .; then :; else \
 +	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 +	    $(am__relativize); \
 +	    new_distdir=$$reldir; \
 +	    dir1=$$subdir; dir2="$(top_distdir)"; \
 +	    $(am__relativize); \
 +	    new_top_distdir=$$reldir; \
 +	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
 +	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
 +	    ($(am__cd) $$subdir && \
 +	      $(MAKE) $(AM_MAKEFLAGS) \
 +	        top_distdir="$$new_top_distdir" \
 +	        distdir="$$new_distdir" \
 +		am__remove_distdir=: \
 +		am__skip_length_check=: \
 +		am__skip_mode_fix=: \
 +	        distdir) \
 +	      || exit 1; \
 +	  fi; \
 +	done
  check-am: all-am
  check: $(BUILT_SOURCES)
 -	$(MAKE) $(AM_MAKEFLAGS) check-am
 +	$(MAKE) $(AM_MAKEFLAGS) check-recursive
  all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 -installdirs:
 +installdirs: installdirs-recursive
 +installdirs-am:
  	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
  	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
  	done
  install: $(BUILT_SOURCES)
 -	$(MAKE) $(AM_MAKEFLAGS) install-am
 -install-exec: install-exec-am
 -install-data: install-data-am
 -uninstall: uninstall-am
 +	$(MAKE) $(AM_MAKEFLAGS) install-recursive
 +install-exec: install-exec-recursive
 +install-data: install-data-recursive
 +uninstall: uninstall-recursive
  
  install-am: all-am
  	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
  
 -installcheck: installcheck-am
 +installcheck: installcheck-recursive
  install-strip:
  	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
  	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
@@@ -2095,97 -1926,94 +2095,97 @@@ maintainer-clean-generic
  	@echo "This command is intended for maintainers to use"
  	@echo "it deletes files that may require special tools to rebuild."
  	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 -clean: clean-am
 +clean: clean-recursive
  
  clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
  	clean-noinstLTLIBRARIES mostlyclean-am
  
 -distclean: distclean-am
 +distclean: distclean-recursive
  	-rm -rf ./$(DEPDIR)
  	-rm -f Makefile
  distclean-am: clean-am distclean-compile distclean-generic \
  	distclean-tags
  
 -dvi: dvi-am
 +dvi: dvi-recursive
  
  dvi-am:
  
 -html: html-am
 +html: html-recursive
  
  html-am:
  
 -info: info-am
 +info: info-recursive
  
  info-am:
  
  install-data-am: install-includeHEADERS
  
 -install-dvi: install-dvi-am
 +install-dvi: install-dvi-recursive
  
  install-dvi-am:
  
  install-exec-am: install-libLTLIBRARIES
  
 -install-html: install-html-am
 +install-html: install-html-recursive
  
  install-html-am:
  
 -install-info: install-info-am
 +install-info: install-info-recursive
  
  install-info-am:
  
  install-man:
  
 -install-pdf: install-pdf-am
 +install-pdf: install-pdf-recursive
  
  install-pdf-am:
  
 -install-ps: install-ps-am
 +install-ps: install-ps-recursive
  
  install-ps-am:
  
  installcheck-am:
  
 -maintainer-clean: maintainer-clean-am
 +maintainer-clean: maintainer-clean-recursive
  	-rm -rf ./$(DEPDIR)
  	-rm -f Makefile
  maintainer-clean-am: distclean-am maintainer-clean-generic
  
 -mostlyclean: mostlyclean-am
 +mostlyclean: mostlyclean-recursive
  
  mostlyclean-am: mostlyclean-compile mostlyclean-generic \
  	mostlyclean-libtool
  
 -pdf: pdf-am
 +pdf: pdf-recursive
  
  pdf-am:
  
 -ps: ps-am
 +ps: ps-recursive
  
  ps-am:
  
  uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
  
 -.MAKE: all check install install-am install-strip
 +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
 +	ctags-recursive install install-am install-strip \
 +	tags-recursive
  
 -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
 +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 +	all all-am check check-am clean clean-generic \
  	clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
 -	ctags distclean distclean-compile distclean-generic \
 -	distclean-libtool distclean-tags distdir dvi dvi-am html \
 -	html-am info info-am install install-am install-data \
 -	install-data-am install-dvi install-dvi-am install-exec \
 -	install-exec-am install-html install-html-am \
 +	ctags ctags-recursive distclean distclean-compile \
 +	distclean-generic distclean-libtool distclean-tags distdir dvi \
 +	dvi-am html html-am info info-am install install-am \
 +	install-data install-data-am install-dvi install-dvi-am \
 +	install-exec install-exec-am install-html install-html-am \
  	install-includeHEADERS install-info install-info-am \
  	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
  	install-ps install-ps-am install-strip installcheck \
 -	installcheck-am installdirs maintainer-clean \
 +	installcheck-am installdirs installdirs-am maintainer-clean \
  	maintainer-clean-generic mostlyclean mostlyclean-compile \
  	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 -	tags uninstall uninstall-am uninstall-includeHEADERS \
 -	uninstall-libLTLIBRARIES
 +	tags tags-recursive uninstall uninstall-am \
 +	uninstall-includeHEADERS uninstall-libLTLIBRARIES
  
  
  .PHONY: version.h.tmp
@@@ -2200,8 -2028,8 +2200,8 @@@ version.h: version.h.tm
  version.h.tmp:
  	@test -f version.h || touch version.h;\
  	rm -f $@;\
- 	REVISION="$$(LANG=C cd "$(top_srcdir)"; git describe --always 2>/dev/null)";\
- 	if test $$? -ne 0; then\
+ 	REVISION="$$(LANG=C cd "$(top_srcdir)"; git describe --always 2>/dev/null || echo "exported")";\
+ 	if test "$$REVISION" = "exported"; then\
  	   REVISION="r$$(LANG=C svnversion "$(top_srcdir)" 2>/dev/null || echo exported)";\
  	   if test "$$REVISION" = "rexported"; then\
  	    REVISION="";\
diff --combined libclamav/libclamav.map
index e925b97,0654dbc..34e664d
--- a/libclamav/libclamav.map
+++ b/libclamav/libclamav.map
@@@ -32,6 -32,7 +32,7 @@@ CLAMAV_PUBLIC 
  };
  CLAMAV_PRIVATE {
    global:
+     cli_gettmpdir;
      cli_strtok;
      cli_strtokenize;
      cli_cvdunpack;
@@@ -144,7 -145,6 +145,7 @@@
      messageDestroy;
      base64Flush;
      have_rar;
 +    have_clamjit;
      cli_bytecode_load;
      cli_bytecode_prepare;
      cli_bytecode_run;
@@@ -154,12 -154,8 +155,12 @@@
      cli_bytecode_context_setfuncid;
      cli_bytecode_context_setparam_int;
      cli_bytecode_context_setparam_ptr;
 +    cli_bytecode_context_setfile;
      cli_bytecode_context_getresult_int;
      cli_bytecode_context_clear;
 +    cli_bytecode_init;
 +    cli_bytecode_done;
 +    cli_bytecode_debug;
    local:
      *;
  };
diff --combined libclamav/matcher.c
index 3d09fa4,525c856..aae9a28
--- a/libclamav/matcher.c
+++ b/libclamav/matcher.c
@@@ -76,7 -76,7 +76,7 @@@ int cli_scanbuff(const unsigned char *b
  	if(!acdata && (ret = cli_ac_initdata(&mdata, troot->ac_partsigs, troot->ac_lsigs, troot->ac_reloff_num, CLI_DEFAULT_AC_TRACKLEN)))
  	    return ret;
  
- 	if(troot->ac_only || (ret = cli_bm_scanbuff(buffer, length, virname, troot, offset, -1)) != CL_VIRUS)
+ 	if(troot->ac_only || (ret = cli_bm_scanbuff(buffer, length, virname, troot, offset, -1, NULL)) != CL_VIRUS)
  	    ret = cli_ac_scanbuff(buffer, length, virname, NULL, NULL, troot, acdata ? (acdata[0]) : (&mdata), offset, ftype, NULL, AC_SCAN_VIR, NULL);
  
  	if(!acdata)
@@@ -89,7 -89,7 +89,7 @@@
      if(!acdata && (ret = cli_ac_initdata(&mdata, groot->ac_partsigs, groot->ac_lsigs, groot->ac_reloff_num, CLI_DEFAULT_AC_TRACKLEN)))
  	return ret;
  
-     if(groot->ac_only || (ret = cli_bm_scanbuff(buffer, length, virname, groot, offset, -1)) != CL_VIRUS)
+     if(groot->ac_only || (ret = cli_bm_scanbuff(buffer, length, virname, groot, offset, -1, NULL)) != CL_VIRUS)
  	ret = cli_ac_scanbuff(buffer, length, virname, NULL, NULL, groot, acdata ? (acdata[1]) : (&mdata), offset, ftype, NULL, AC_SCAN_VIR, NULL);
  
      if(!acdata)
@@@ -201,7 -201,9 +201,9 @@@ int cli_caloff(const char *offstr, stru
      } else {
  	/* calculate relative offsets */
  	if(info->status == -1) {
- 	    *offset_min = *offset_max = 0;
+ 	    *offset_min = CLI_OFF_NONE;
+ 	    if(offset_max)
+ 		*offset_max = CLI_OFF_NONE;
  	    return CL_SUCCESS;
  	}
  
@@@ -237,7 -239,9 +239,9 @@@
  		/* einfo *may* fail */
  		lseek(fd, pos, SEEK_SET);
  		info->status = -1;
- 		*offset_min = *offset_max = 0;
+ 		*offset_min = CLI_OFF_NONE;
+ 		if(offset_max)
+ 		    *offset_max = CLI_OFF_NONE;
  		return CL_SUCCESS;
  	    }
  	    lseek(fd, pos, SEEK_SET);
@@@ -263,7 -267,7 +267,7 @@@
  
  	    case CLI_OFF_SX_PLUS:
  		if(offdata[3] >= info->exeinfo.nsections)
- 		    *offset_min = 0;
+ 		    *offset_min = CLI_OFF_NONE;
  		else
  		    *offset_min = info->exeinfo.section[offdata[3]].raw + offdata[1];
  		break;
@@@ -273,9 -277,7 +277,7 @@@
  		return CL_EARG;
  	}
  
- 	if(!*offset_min)
- 	    *offset_max = 0;
- 	else
+ 	if(offset_max && *offset_min != CLI_OFF_NONE)
  	    *offset_max = *offset_min + offdata[2];
      }
  
@@@ -303,7 -305,7 +305,7 @@@ int cli_checkfp(int fd, cli_ctx *ctx
  	    return 0;
  	}
  
- 	if(cli_bm_scanbuff(digest, 16, &virname, ctx->engine->md5_fp, 0, -1) == CL_VIRUS) {
+ 	if(cli_bm_scanbuff(digest, 16, &virname, ctx->engine->md5_fp, 0, -1, NULL) == CL_VIRUS) {
  	    cli_dbgmsg("cli_checkfp(): Found false positive detection (fp sig: %s)\n", virname);
  	    free(digest);
  	    lseek(fd, pos, SEEK_SET);
@@@ -318,15 -320,17 +320,17 @@@
  
  int cli_scandesc(int desc, cli_ctx *ctx, cli_file_t ftype, uint8_t ftonly, struct cli_matched_type **ftoffset, unsigned int acmode)
  {
 - 	unsigned char *buffer, *buff, *endbl, *upt;
 +        unsigned char *buffer, *buff, *endbl, *upt;
  	int ret = CL_CLEAN, type = CL_CLEAN, bytes;
- 	unsigned int i, evalcnt;
+ 	unsigned int i, evalcnt, bm_offmode = 0;
  	uint32_t buffersize, length, maxpatlen, shift = 0, offset = 0;
  	uint64_t evalids;
  	struct cli_ac_data gdata, tdata;
+ 	struct cli_bm_off toff;
  	cli_md5_ctx md5ctx;
  	unsigned char digest[16];
  	struct cli_matcher *groot = NULL, *troot = NULL;
+ 	struct stat sb;
  
  
      if(!ctx->engine) {
@@@ -375,6 -379,19 +379,19 @@@
  		cli_ac_freedata(&gdata);
  	    return ret;
  	}
+ 	if(troot->bm_offmode) {
+ 	    if(fstat(desc, &sb) != -1) {
+ 		if(sb.st_size >= CLI_DEFAULT_BM_OFFMODE_FSIZE) {
+ 		    if((ret = cli_bm_initoff(troot, &toff, desc))) {
+ 			if(!ftonly)
+ 			    cli_ac_freedata(&gdata);
+ 			cli_ac_freedata(&tdata);
+ 			return ret;
+ 		    }
+ 		    bm_offmode = 1;
+ 		}
+ 	    }
+ 	}
      }
  
      if(!ftonly && ctx->engine->md5_hdb)
@@@ -397,7 -414,7 +414,7 @@@
  	    length += maxpatlen;
  
  	if(troot) {
- 	    if(troot->ac_only || (ret = cli_bm_scanbuff(upt, length, ctx->virname, troot, offset, desc)) != CL_VIRUS)
+ 	    if(troot->ac_only || (ret = cli_bm_scanbuff(upt, length, ctx->virname, troot, offset, desc, bm_offmode ? &toff : NULL)) != CL_VIRUS)
  		ret = cli_ac_scanbuff(upt, length, ctx->virname, NULL, NULL, troot, &tdata, offset, ftype, ftoffset, acmode, NULL);
  
  	    if(ret == CL_VIRUS) {
@@@ -405,6 -422,8 +422,8 @@@
  		if(!ftonly)
  		    cli_ac_freedata(&gdata);
  		cli_ac_freedata(&tdata);
+ 		if(bm_offmode)
+ 		    cli_bm_freeoff(&toff, troot);
  
  		if(cli_checkfp(desc, ctx))
  		    return CL_CLEAN;
@@@ -414,14 -433,17 +433,17 @@@
  	}
  
  	if(!ftonly) {
- 	    if(groot->ac_only || (ret = cli_bm_scanbuff(upt, length, ctx->virname, groot, offset, desc)) != CL_VIRUS)
+ 	    if(groot->ac_only || (ret = cli_bm_scanbuff(upt, length, ctx->virname, groot, offset, desc, NULL)) != CL_VIRUS)
  		ret = cli_ac_scanbuff(upt, length, ctx->virname, NULL, NULL, groot, &gdata, offset, ftype, ftoffset, acmode, NULL);
  
  	    if(ret == CL_VIRUS) {
  		free(buffer);
  		cli_ac_freedata(&gdata);
- 		if(troot)
+ 		if(troot) {
  		    cli_ac_freedata(&tdata);
+ 		    if(bm_offmode)
+ 			cli_bm_freeoff(&toff, troot);
+ 		}
  		if(cli_checkfp(desc, ctx))
  		    return CL_CLEAN;
  		else
@@@ -459,19 -481,15 +481,21 @@@
  	    evalcnt = 0;
  	    evalids = 0;
  	    if(cli_ac_chklsig(troot->ac_lsigtable[i]->logic, troot->ac_lsigtable[i]->logic + strlen(troot->ac_lsigtable[i]->logic), tdata.lsigcnt[i], &evalcnt, &evalids, 0) == 1) {
 -		if(ctx->virname)
 -		    *ctx->virname = troot->ac_lsigtable[i]->virname;
 -		ret = CL_VIRUS;
 -		break;
 +		if (!troot->ac_lsigtable[i]->bc) {
 +		    if(ctx->virname)
 +			*ctx->virname = troot->ac_lsigtable[i]->virname;
 +		    ret = CL_VIRUS;
 +		    break;
 +		}
 +		if (cli_bytecode_runlsig(&ctx->engine->bcs, troot->ac_lsigtable[i]->bc, ctx->virname, tdata.lsigcnt[i], desc) == CL_VIRUS) {
 +		    ret = CL_VIRUS;
 +		    break;
 +		}
  	    }
  	}
  	cli_ac_freedata(&tdata);
+ 	if(bm_offmode)
+ 	    cli_bm_freeoff(&toff, troot);
      }
  
      if(groot) {
@@@ -479,16 -497,10 +503,16 @@@
  	    evalcnt = 0;
  	    evalids = 0;
  	    if(cli_ac_chklsig(groot->ac_lsigtable[i]->logic, groot->ac_lsigtable[i]->logic + strlen(groot->ac_lsigtable[i]->logic), gdata.lsigcnt[i], &evalcnt, &evalids, 0) == 1) {
 -		if(ctx->virname)
 -		    *ctx->virname = groot->ac_lsigtable[i]->virname;
 -		ret = CL_VIRUS;
 -		break;
 +		if (!groot->ac_lsigtable[i]->bc) {
 +		    if(ctx->virname)
 +			*ctx->virname = groot->ac_lsigtable[i]->virname;
 +		    ret = CL_VIRUS;
 +		    break;
 +		}
 +		if (cli_bytecode_runlsig(&ctx->engine->bcs, groot->ac_lsigtable[i]->bc, ctx->virname, gdata.lsigcnt[i], desc) == CL_VIRUS) {
 +		    ret = CL_VIRUS;
 +		    break;
 +		}
  	    }
  	}
  	cli_ac_freedata(&gdata);
@@@ -504,7 -516,7 +528,7 @@@
  
      if(!ftonly && ctx->engine->md5_hdb) {
  	cli_md5_final(digest, &md5ctx);
- 	if(cli_bm_scanbuff(digest, 16, ctx->virname, ctx->engine->md5_hdb, 0, -1) == CL_VIRUS && (cli_bm_scanbuff(digest, 16, NULL, ctx->engine->md5_fp, 0, -1) != CL_VIRUS))
+ 	if(cli_bm_scanbuff(digest, 16, ctx->virname, ctx->engine->md5_hdb, 0, -1, NULL) == CL_VIRUS && (cli_bm_scanbuff(digest, 16, NULL, ctx->engine->md5_fp, 0, -1, NULL) != CL_VIRUS))
  	    return CL_VIRUS;
      }
  
diff --combined libclamav/matcher.h
index 22b883c,0385838..ca7cc16
--- a/libclamav/matcher.h
+++ b/libclamav/matcher.h
@@@ -39,7 -39,7 +39,7 @@@
  #define CLI_MATCH_WILDCARD	0xff00
  #define CLI_MATCH_CHAR		0x0000
  #define CLI_MATCH_IGNORE	0x0100
- #define CLI_MATCH_ALTERNATIVE	0x0200
+ #define CLI_MATCH_SPECIAL	0x0200
  #define CLI_MATCH_NIBBLE_HIGH	0x0300
  #define CLI_MATCH_NIBBLE_LOW	0x0400
  
@@@ -61,13 -61,11 +61,13 @@@ struct cli_lsig_tdb 
  #endif
  };
  
 +struct cli_bc;
  struct cli_ac_lsig {
      uint32_t id;
      char *logic;
      const char *virname;
      struct cli_lsig_tdb tdb;
 +    const struct cli_bc *bc;
  };
  
  struct cli_matcher {
@@@ -75,10 -73,10 +75,10 @@@
  
      /* Extended Boyer-Moore */
      uint8_t *bm_shift;
-     struct cli_bm_patt **bm_suffix;
+     struct cli_bm_patt **bm_suffix, **bm_pattab;
      struct cli_hashset md5_sizes_hs;
      uint32_t *soff, soff_len; /* for PE section sigs */
-     uint32_t bm_patterns, bm_reloff_num, bm_absoff_num;
+     uint32_t bm_offmode, bm_patterns, bm_reloff_num, bm_absoff_num;
  
      /* Extended Aho-Corasick */
      uint32_t ac_partsigs, ac_nodes, ac_patterns, ac_lsigs;
diff --combined libclamav/others.c
index db7e19b,8e2c288..c60b6bc
--- a/libclamav/others.c
+++ b/libclamav/others.c
@@@ -33,30 -33,24 +33,24 @@@
  #endif
  #include <sys/types.h>
  #include <sys/stat.h>
- #ifndef	C_WINDOWS
+ #include <dirent.h>
+ #ifndef	_WIN32
  #include <sys/wait.h>
  #include <sys/time.h>
  #endif
  #include <time.h>
  #include <fcntl.h>
- #ifndef	C_WINDOWS
+ #ifdef HAVE_PWD_H
  #include <pwd.h>
  #endif
  #include <errno.h>
  #include "target.h"
- #ifndef	C_WINDOWS
- #include <sys/time.h>
- #endif
  #ifdef	HAVE_SYS_PARAM_H
  #include <sys/param.h>
  #endif
  #ifdef	HAVE_MALLOC_H
  #include <malloc.h>
  #endif
- #if	defined(_MSC_VER) && defined(_DEBUG)
- #include <crtdbg.h>
- #endif
  
  #if defined(HAVE_READDIR_R_3) || defined(HAVE_READDIR_R_2)
  #include <limits.h>
@@@ -72,17 -66,7 +66,8 @@@
  #include "matcher-ac.h"
  #include "default.h"
  #include "scanners.h"
 +#include "bytecode.h"
  
- #ifndef	O_BINARY
- #define	O_BINARY	0
- #endif
- 
- #ifdef        C_WINDOWS
- #undef        P_tmpdir
- #define       P_tmpdir        "C:\\WINDOWS\\TEMP"
- #endif
- 
  int (*cli_unrar_open)(int fd, const char *dirname, unrar_state_t *state);
  int (*cli_unrar_extract_next_prepare)(unrar_state_t *state, const char *dirname);
  int (*cli_unrar_extract_next)(unrar_state_t *state, const char *dirname);
@@@ -270,14 -254,10 +255,14 @@@ const char *cl_strerror(int clerror
  
  int cl_init(unsigned int initoptions)
  {
 +    int rc;
      /* put dlopen() stuff here, etc. */
      if (lt_init() == 0) {
  	cli_rarload();
      }
 +    rc = bytecode_init();
 +    if (rc)
 +	return rc;
      return CL_SUCCESS;
  }
  
@@@ -572,7 -552,7 +557,7 @@@ int cli_checklimits(const char *who, cl
          /* if the remaining scansize is too small... */
          if(ctx->engine->maxscansize-ctx->scansize<needed) {
  	    /* ... we tell the caller to skip this file */
- 	    cli_dbgmsg("%s: scansize exceeded (initial: %lu, remaining: %lu, needed: %lu)\n", who, ctx->engine->maxscansize, ctx->scansize, needed);
+ 	    cli_dbgmsg("%s: scansize exceeded (initial: %lu, remaining: %lu, needed: %lu)\n", who, (unsigned long int) ctx->engine->maxscansize, (unsigned long int) ctx->scansize, needed);
  	    ret = CL_EMAXSIZE;
  	}
      }
@@@ -580,7 -560,7 +565,7 @@@
      /* if we have per-file size limits, and we are overlimit... */
      if(needed && ctx->engine->maxfilesize && ctx->engine->maxfilesize<needed) {
  	/* ... we tell the caller to skip this file */
-         cli_dbgmsg("%s: filesize exceeded (allowed: %lu, needed: %lu)\n", who, ctx->engine->maxfilesize, needed);
+         cli_dbgmsg("%s: filesize exceeded (allowed: %lu, needed: %lu)\n", who, (unsigned long int) ctx->engine->maxfilesize, needed);
  	ret = CL_EMAXSIZE;
      }
  
@@@ -789,9 -769,7 +774,7 @@@ int cli_rmdirs(const char *dirname
  #else
  	    while((dent = readdir(dd))) {
  #endif
- #if	(!defined(C_INTERIX)) && (!defined(C_WINDOWS))
  		if(dent->d_ino)
- #endif
  		{
  		    if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
  			path = cli_malloc(strlen(dirname) + strlen(dent->d_name) + 2);
@@@ -800,7 -778,7 +783,7 @@@
  			    return -1;
  			}
  
- 			sprintf(path, "%s/%s", dirname, dent->d_name);
+ 			sprintf(path, "%s"PATHSEP"%s", dirname, dent->d_name);
  
  			/* stat the file */
  			if(lstat(path, &statbuf) != -1) {
@@@ -906,8 -884,6 +889,6 @@@ int cli_dumpscan(int fd, off_t offset, 
  
  #define BITS_PER_CHAR (8)
  #define BITSET_DEFAULT_SIZE (1024)
- #define FALSE (0)
- #define TRUE (1)
  
  static unsigned long nearest_power(unsigned long num)
  {
@@@ -991,4 -967,3 +972,3 @@@ int cli_bitset_test(bitset_t *bs, unsig
  	}
  	return (bs->bitset[char_offset] & ((unsigned char)1 << bit_offset));
  }
- 
diff --combined libclamav/others.h
index aee6ef3,9cef29e..e74038b
--- a/libclamav/others.h
+++ b/libclamav/others.h
@@@ -37,9 -37,9 +37,10 @@@
  
  #include "clamav.h"
  #include "dconf.h"
+ #include "filetypes.h"
  #include "libclamunrar_iface/unrar_iface.h"
  #include "regex/regex.h"
 +#include "bytecode.h"
  
  /*
   * CL_FLEVEL is the signature f-level specific to the current code and
@@@ -50,7 -50,7 +51,7 @@@
   * in re-enabling affected modules.
   */
  
- #define CL_FLEVEL 47
+ #define CL_FLEVEL 49
  #define CL_FLEVEL_DCONF	CL_FLEVEL
  
  extern uint8_t cli_debug_flag;
@@@ -107,6 -107,7 +108,7 @@@ typedef struct 
      unsigned int recursion;
      unsigned int scannedfiles;
      unsigned int found_possibly_unwanted;
+     cli_file_t container_type; /* FIXME: to be made into a stack or array - see bb#1579 & bb#1293 */
      struct cli_dconf *dconf;
  } cli_ctx;
  
@@@ -169,16 -170,13 +171,16 @@@ struct cl_engine 
      struct cli_ftype *ftypes;
  
      /* Ignored signatures */
-     struct cli_ignored *ignored;
+     struct cli_matcher *ignored;
  
      /* PUA categories (to be included or excluded) */
      char *pua_cats;
  
      /* Used for memory pools */
      mpool_t *mempool;
 +
 +    /* Used for bytecode */
 +    struct cli_all_bc bcs;
  };
  
  struct cl_settings {
@@@ -233,20 -231,6 +235,20 @@@ extern int have_rar
  		     (((v) & 0xff00000000000000ULL) >> 56))
  
  
 +union unaligned_64 {
 +	uint64_t una_u64;
 +	int64_t una_s64;
 +} __attribute__((packed));
 +
 +union unaligned_32 {
 +	uint32_t una_u32;
 +	int32_t una_s32;
 +} __attribute__((packed));
 +
 +union unaligned_16 {
 +	uint16_t una_u16;
 +	int16_t una_s16;
 +} __attribute__((packed));
  #if WORDS_BIGENDIAN == 0
  
  #ifndef HAVE_ATTRIB_PACKED 
@@@ -259,6 -243,14 +261,6 @@@
  #pragma pack 1
  #endif
  
 -union unaligned_32 {
 -	uint32_t una_u32;
 -	int32_t una_s32;
 -} __attribute__((packed));
 -
 -union unaligned_16 {
 -	int16_t una_s16;
 -} __attribute__((packed));
  
  #ifdef HAVE_PRAGMA_PACK
  #pragma pack()
@@@ -324,21 -316,6 +326,6 @@@ static inline void cli_writeint32(char 
  #endif
  #define CLI_SAR(n,s) n = CLI_SRS(n,s)
  
- #ifndef	FALSE
- #define FALSE (0)
- #endif
- 
- #ifndef	TRUE
- #define TRUE (1)
- #endif
- 
- #ifndef MIN
- #define MIN(a, b)	(((a) < (b)) ? (a) : (b))
- #endif
- #ifndef MAX
- #define MAX(a,b)	(((a) > (b)) ? (a) : (b))
- #endif
- 
  typedef struct bitset_tag
  {
          unsigned char *bitset;
@@@ -405,6 -382,7 +392,7 @@@ char *cli_md5file(const char *filename)
  int cli_unlink(const char *pathname);
  int cli_readn(int fd, void *buff, unsigned int count);
  int cli_writen(int fd, const void *buff, unsigned int count);
+ const char *cli_gettmpdir(void);
  char *cli_gentemp(const char *dir);
  int cli_gentempfd(const char *dir, char **name, int *fd);
  unsigned int cli_rndnum(unsigned int max);
@@@ -419,6 -397,7 +407,7 @@@ int cli_checklimits(const char *, cli_c
  int cli_updatelimits(cli_ctx *, unsigned long);
  unsigned long cli_getsizelimit(cli_ctx *, unsigned long);
  int cli_matchregex(const char *str, const char *regex);
+ void cli_qsort(void *basep, size_t nelems, size_t size, int (*comp)(const void *, const void *));
  
  /* symlink behaviour */
  #define CLI_FTW_FOLLOW_FILE_SYMLINK 0x01
diff --combined libclamav/readdb.c
index 94581be,edee919..4251d75
--- a/libclamav/readdb.c
+++ b/libclamav/readdb.c
@@@ -29,9 -29,7 +29,7 @@@
  #ifdef	HAVE_UNISTD_H
  #include <unistd.h>
  #endif
- #ifndef C_WINDOWS
  #include <dirent.h>
- #endif
  #include <sys/types.h>
  #include <sys/stat.h>
  #ifdef	HAVE_SYS_PARAM_H
@@@ -57,6 -55,7 +55,7 @@@
  #include "readdb.h"
  #include "cltypes.h"
  #include "default.h"
+ #include "md5.h"
  
  #include "phishcheck.h"
  #include "phish_whitelist.h"
@@@ -70,24 -69,12 +69,13 @@@
  #endif
  
  #include "mpool.h"
 -
 +#include "bytecode.h"
 +#include "bytecode_priv.h"
  #ifdef CL_THREAD_SAFE
  #  include <pthread.h>
  static pthread_mutex_t cli_ref_mutex = PTHREAD_MUTEX_INITIALIZER;
  #endif
  
- struct cli_ignsig {
-     char *dbname, *signame;
-     unsigned int line;
-     struct cli_ignsig *next;
- };
- 
- struct cli_ignored {
-     struct cli_hashset hs;
-     struct cli_ignsig *list;
- };
- 
  char *cli_virname(char *virname, unsigned int official)
  {
  	char *newname, *pt;
@@@ -247,7 -234,7 +235,7 @@@ int cli_parse_add(struct cli_matcher *r
  	    free(pt);
  	}
  
-     } else if(root->ac_only || type || lsigid /* || (hexlen / 2 < CLI_DEFAULT_MOVETOAC_LEN) FIXME: unit tests */ ||  strpbrk(hexsig, "?(")) {
+     } else if(root->ac_only || type || lsigid || strpbrk(hexsig, "?(") || (root->bm_offmode && (!strcmp(offset, "*") || strchr(offset, ',')))) {
  	if((ret = cli_ac_addsig(root, virname, hexsig, 0, 0, 0, rtype, type, 0, 0, offset, lsigid, options))) {
  	    cli_errmsg("cli_parse_add(): Problem adding signature (3).\n");
  	    return ret;
@@@ -271,9 -258,8 +259,9 @@@
  	    return CL_EMEM;
  	}
  
 -	if(bm_new->length > root->maxpatlen)
 +	if(bm_new->length > root->maxpatlen) {
  	    root->maxpatlen = bm_new->length;
 +	}
  
  	if((ret = cli_bm_addpatt(root, bm_new, offset))) {
  	    cli_errmsg("cli_parse_add(): Problem adding signature (4).\n");
@@@ -324,7 -310,7 +312,7 @@@ static int cli_initroots(struct cl_engi
  	    }
  	}
      }
- 
+     engine->root[1]->bm_offmode = 1; /* BM offset mode for PE files */
      return CL_SUCCESS;
  }
  
@@@ -411,22 -397,25 +399,25 @@@ char *cli_dbgets(char *buff, unsigned i
      }
  }
  
- static int cli_chkign(const struct cli_ignored *ignored, const char *dbname, unsigned int line, const char *signame)
+ static int cli_chkign(const struct cli_matcher *ignored, const char *signame, const char *entry)
  {
- 	struct cli_ignsig *pt;
+ 	const char *md5_expected = NULL;
+         cli_md5_ctx md5ctx;
+         unsigned char digest[16];
  
-     if(!ignored || !dbname || !signame)
+     if(!ignored || !signame || !entry)
  	return 0;
  
-     if(cli_hashset_contains(&ignored->hs, line)) {
- 	pt = ignored->list;
- 	while(pt) {
- 	    if(pt->line == line && !strcmp(pt->dbname, dbname) && !strcmp(pt->signame, signame)) {
- 		cli_dbgmsg("Skipping signature %s @ %s:%u\n", signame, dbname, line);
- 		return 1;
- 	    }
- 	    pt = pt->next;
+     if(cli_bm_scanbuff(signame, strlen(signame), &md5_expected, ignored, 0, -1, NULL) == CL_VIRUS) {
+ 	if(md5_expected) {
+ 	    cli_md5_init(&md5ctx);
+             cli_md5_update(&md5ctx, entry, strlen(entry));
+ 	    cli_md5_final(digest, &md5ctx);
+ 	    if(memcmp(digest, (const unsigned char *) md5_expected, 16))
+ 		return 0;
  	}
+ 	cli_dbgmsg("Ignoring signature %s\n", signame);
+ 	return 1;
      }
  
      return 0;
@@@ -470,7 -459,7 +461,7 @@@ static int cli_chkpua(const char *signa
  
  static int cli_loaddb(FILE *fs, struct cl_engine *engine, unsigned int *signo, unsigned int options, struct cli_dbio *dbio, const char *dbname)
  {
- 	char buffer[FILEBUFF], *pt, *start;
+ 	char buffer[FILEBUFF], *buffer_cpy, *pt, *start;
  	unsigned int line = 0, sigs = 0;
  	int ret = 0;
  	struct cli_matcher *root;
@@@ -481,9 -470,15 +472,15 @@@
  
      root = engine->root[0];
  
+     if(engine->ignored)
+ 	if(!(buffer_cpy = cli_malloc(FILEBUFF)))
+ 	    return CL_EMEM;
+ 
      while(cli_dbgets(buffer, FILEBUFF, fs, dbio)) {
  	line++;
  	cli_chomp(buffer);
+ 	if(engine->ignored)
+ 	    strcpy(buffer_cpy, buffer);
  
  	pt = strchr(buffer, '=');
  	if(!pt) {
@@@ -495,7 -490,7 +492,7 @@@
  	start = buffer;
  	*pt++ = 0;
  
- 	if(engine->ignored && cli_chkign(engine->ignored, dbname, line, start))
+ 	if(engine->ignored && cli_chkign(engine->ignored, start, buffer_cpy))
  	    continue;
  
  	if(*pt == '=') continue;
@@@ -507,6 -502,9 +504,9 @@@
  	sigs++;
      }
  
+     if(engine->ignored)
+ 	free(buffer_cpy);
+ 
      if(!line) {
  	cli_errmsg("Empty database file\n");
  	return CL_EMALFDB;
@@@ -569,7 -567,7 +569,7 @@@ static int cli_loadpdb(FILE *fs, struc
  static int cli_loadndb(FILE *fs, struct cl_engine *engine, unsigned int *signo, unsigned short sdb, unsigned int options, struct cli_dbio *dbio, const char *dbname)
  {
  	const char *tokens[NDB_TOKENS + 1];
- 	char buffer[FILEBUFF];
+ 	char buffer[FILEBUFF], *buffer_cpy;
  	const char *sig, *virname, *offset, *pt;
  	struct cli_matcher *root;
  	int line = 0, sigs = 0, ret = 0, tokens_count;
@@@ -580,6 -578,10 +580,10 @@@
      if((ret = cli_initroots(engine, options)))
  	return ret;
  
+     if(engine->ignored)
+ 	if(!(buffer_cpy = cli_malloc(FILEBUFF)))
+ 	    return CL_EMEM;
+ 
      while(cli_dbgets(buffer, FILEBUFF, fs, dbio)) {
  	line++;
  
@@@ -591,6 -593,8 +595,8 @@@
  		continue;
  
  	cli_chomp(buffer);
+ 	if(engine->ignored)
+ 	    strcpy(buffer_cpy, buffer);
  
  	tokens_count = cli_strtokenize(buffer, ':', NDB_TOKENS + 1, tokens);
  	/* FIXME: re-enable after fixing invalid sig @ main.ndb:53467 */
@@@ -605,7 -609,7 +611,7 @@@
  	    if(cli_chkpua(virname, engine->pua_cats, options))
  		continue;
  
- 	if(engine->ignored && cli_chkign(engine->ignored, dbname, line, virname))
+ 	if(engine->ignored && cli_chkign(engine->ignored, virname, buffer_cpy))
  	    continue;
  
  	if(tokens_count > 4) { /* min version */
@@@ -656,6 -660,8 +662,8 @@@
  	}
  	sigs++;
      }
+     if(engine->ignored)
+ 	free(buffer_cpy);
  
      if(!line) {
  	cli_errmsg("Empty database file\n");
@@@ -848,163 -854,163 +856,170 @@@ static int lsigattribs(char *attribs, s
    } while(0);
  
  #define LDB_TOKENS 67
- static int load_oneldb(char *buffer, int chkpua, int chkign, struct cl_engine *engine, unsigned int options, const char *dbname, unsigned line, unsigned *sigs, struct cli_bc *bc)
 -static int cli_loadldb(FILE *fs, struct cl_engine *engine, unsigned int *signo, unsigned int options, struct cli_dbio *dbio, const char *dbname)
++static int load_oneldb(char *buffer, int chkpua, int chkign, struct cl_engine *engine, unsigned int options, const char *dbname, unsigned line, unsigned *sigs, struct cli_bc *bc, const char *buffer_cpy)
  {
 -	char *tokens[LDB_TOKENS];
 -	char buffer[CLI_DEFAULT_LSIG_BUFSIZE + 1], *buffer_cpy, *pt;
 -	const char *sig, *virname, *offset, *logic;
 -	struct cli_matcher *root;
 -	unsigned int line = 0, sigs = 0;
 -	unsigned short target = 0;
 -	struct cli_ac_lsig **newtable, *lsig;
 -	uint32_t lsigid[2];
 -	int ret = CL_SUCCESS, i, subsigs, tokens_count;
 -	struct cli_lsig_tdb tdb;
 +    const char *sig, *virname, *offset, *logic;
 +    struct cli_ac_lsig **newtable, *lsig;
 +    char *tokens[LDB_TOKENS], *pt;
 +    int i, subsigs, tokens_count;
 +    unsigned short target = 0;
 +    struct cli_matcher *root;
 +    struct cli_lsig_tdb tdb;
 +    uint32_t lsigid[2];
 +    int ret;
 +
 +    tokens_count = cli_strtokenize(buffer, ';', LDB_TOKENS, (const char **) tokens);
 +    if(tokens_count < 4) {
 +	return CL_EMALFDB;
 +    }
 +    virname = tokens[0];
 +    logic = tokens[2];
  
 +    if (chkpua && cli_chkpua(virname, engine->pua_cats, options))
 +	    return CL_SUCCESS;
  
-     if (chkign && cli_chkign(engine->ignored, dbname, line, virname))
 -    if((ret = cli_initroots(engine, options)))
 -	return ret;
++    if (chkign && cli_chkign(engine->ignored, virname, buffer_cpy))
 +	return CL_SUCCESS;
  
 -    if(engine->ignored)
 -	if(!(buffer_cpy = cli_malloc(sizeof(buffer))))
 -	    return CL_EMEM;
 +    subsigs = cli_ac_chklsig(logic, logic + strlen(logic), NULL, NULL, NULL, 1);
 +    if(subsigs == -1) {
 +	return CL_EMALFDB;
 +    }
 +    subsigs++;
 +    if(subsigs > 64) {
 +	cli_errmsg("cli_loadldb: Broken logical expression or too many subsignatures\n");
 +	return CL_EMALFDB;
 +    }
 +    if (!line) {
 +	/* This is a logical signature from the bytecode, we need all
 +	 * subsignatures, even if not referenced from the logical expression */
 +	if (subsigs > tokens_count-3) {
 +	    cli_errmsg("load_oneldb: Too many subsignatures: %u (max %u)\n",
 +		       subsigs, tokens_count-3);
 +	    return CL_EMALFDB;
 +	}
 +	subsigs = tokens_count-3;
 +    }
  
 -    while(cli_dbgets(buffer, sizeof(buffer), fs, dbio)) {
 -	line++;
 -	sigs++;
 -	cli_chomp(buffer);
 -	if(engine->ignored)
 -	    strcpy(buffer_cpy, buffer);
 +    /* TDB */
 +    memset(&tdb, 0, sizeof(tdb));
 +#ifdef USE_MPOOL
 +    tdb.mempool = engine->mempool;
 +#endif
 +    if(lsigattribs(tokens[1], &tdb) == -1) {
 +	FREE_TDB(tdb);
 +	return CL_EMALFDB;
 +    }
 +    if(!tdb.target) {
 +	cli_errmsg("cli_loadldb: No target specified in TDB\n");
 +	FREE_TDB(tdb);
 +	return CL_EMALFDB;
 +    } else if(tdb.target[0] >= CLI_MTARGETS) {
 +	cli_dbgmsg("cli_loadldb: Not supported target type in logical signature for %s\n", virname);
 +	FREE_TDB(tdb);
 +	*sigs--;
 +	return CL_SUCCESS;
 +    }
  
 -	tokens_count = cli_strtokenize(buffer, ';', LDB_TOKENS, (const char **) tokens);
 -	if(tokens_count < 4) {
 -	    ret = CL_EMALFDB;
 -	    break;
 -	}
 +    root = engine->root[tdb.target[0]];
  
 -	virname = tokens[0];
 -	logic = tokens[2];
 +    lsig = (struct cli_ac_lsig *) mpool_calloc(engine->mempool, 1, sizeof(struct cli_ac_lsig));
 +    if(!lsig) {
 +	cli_errmsg("cli_loadldb: Can't allocate memory for lsig\n");
 +	FREE_TDB(tdb);
 +	return CL_EMEM;
 +    }
  
 -	if(engine->pua_cats && (options & CL_DB_PUA_MODE) && (options & (CL_DB_PUA_INCLUDE | CL_DB_PUA_EXCLUDE)))
 -	    if(cli_chkpua(virname, engine->pua_cats, options))
 -		continue;
 +    lsig->logic = cli_mpool_strdup(engine->mempool, logic);
 +    if(!lsig->logic) {
 +	cli_errmsg("cli_loadldb: Can't allocate memory for lsig->logic\n");
 +	FREE_TDB(tdb);
 +	mpool_free(engine->mempool, lsig);
 +	return CL_EMEM;
 +    }
  
 -	if(engine->ignored && cli_chkign(engine->ignored, virname, buffer_cpy))
 -	    continue;
 +    lsigid[0] = lsig->id = root->ac_lsigs;
 +    memcpy(&lsig->tdb, &tdb, sizeof(tdb));
  
 -	subsigs = cli_ac_chklsig(logic, logic + strlen(logic), NULL, NULL, NULL, 1);
 -	if(subsigs == -1) {
 -	    ret = CL_EMALFDB;
 -	    break;
 -	}
 -	subsigs++;
 +    root->ac_lsigs++;
 +    newtable = (struct cli_ac_lsig **) mpool_realloc(engine->mempool, root->ac_lsigtable, root->ac_lsigs * sizeof(struct cli_ac_lsig *));
 +    if(!newtable) {
 +	root->ac_lsigs--;
 +	cli_errmsg("cli_loadldb: Can't realloc root->ac_lsigtable\n");
 +	FREE_TDB(tdb);
 +	mpool_free(engine->mempool, lsig);
 +	return CL_EMEM;
 +    }
 +    lsig->bc = bc;
 +    newtable[root->ac_lsigs - 1] = lsig;
 +    root->ac_lsigtable = newtable;
  
 -	if(subsigs > 64) {
 -	    cli_errmsg("cli_loadldb: Broken logical expression or too many subsignatures\n");
 -	    ret = CL_EMALFDB;
 -	    break;
 +    for(i = 0; i < subsigs; i++) {
- 	if(i+3 >= tokens_count) {
++	if(i + 3 >= tokens_count) {
 +	    cli_errmsg("cli_loadldb: Missing subsignature id %u\n", i);
 +	    return CL_EMALFDB;
  	}
 +	lsigid[1] = i;
 +	sig = tokens[3 + i];
  
 -	/* TDB */
 -	memset(&tdb, 0, sizeof(tdb));
 -#ifdef USE_MPOOL
 -	tdb.mempool = engine->mempool;
 -#endif
 +	if((pt = strchr(tokens[3 + i], ':'))) {
 +	    *pt = 0;
 +	    sig = ++pt;
 +	    offset = tokens[3 + i];
 +	} else {
 +	    offset = "*";
 +	    sig = tokens[3 + i];
 +	}
  
 -	if(lsigattribs(tokens[1], &tdb) == -1) {
 -	    FREE_TDB(tdb);
 -	    ret = CL_EMALFDB;
 -	    break;
 +	if((ret = cli_parse_add(root, virname, sig, 0, 0, offset, target, lsigid, options))) {
 +	    return CL_EMALFDB;
  	}
  
  	if(tdb.engine) {
  	    if(tdb.engine[0] > cl_retflevel()) {
  		cli_dbgmsg("cli_loadldb: Signature for %s not loaded (required f-level: %u)\n", virname, tdb.engine[0]);
  		FREE_TDB(tdb);
 -		sigs--;
 -		continue;
 +		*sigs--;
 +		return CL_SUCCESS;
  	    } else if(tdb.engine[1] < cl_retflevel()) {
  		FREE_TDB(tdb);
 -		sigs--;
 -		continue;
 +		*sigs--;
 +		return CL_SUCCESS;
  	    }
  	}
 +    }
 +    return CL_SUCCESS;
 +}
  
 -	if(!tdb.target) {
 -	    cli_errmsg("cli_loadldb: No target specified in TDB\n");
 -	    FREE_TDB(tdb);
 -	    ret = CL_EMALFDB;
 -	    break;
 -	} else if(tdb.target[0] >= CLI_MTARGETS) {
 -	    cli_dbgmsg("cli_loadldb: Not supported target type in logical signature for %s\n", virname);
 -	    FREE_TDB(tdb);
 -	    sigs--;
 -	    continue;
 -	}
 -
 -	root = engine->root[tdb.target[0]];
 -
 -	lsig = (struct cli_ac_lsig *) mpool_calloc(engine->mempool, 1, sizeof(struct cli_ac_lsig));
 -	if(!lsig) {
 -	    cli_errmsg("cli_loadldb: Can't allocate memory for lsig\n");
 -	    FREE_TDB(tdb);
 -	    ret = CL_EMEM;
 -	    break;
 -	}
 -
 -	lsig->logic = cli_mpool_strdup(engine->mempool, logic);
 -	if(!lsig->logic) {
 -	    cli_errmsg("cli_loadldb: Can't allocate memory for lsig->logic\n");
 -	    FREE_TDB(tdb);
 -	    ret = CL_EMEM;
 -	    mpool_free(engine->mempool, lsig);
 -	    break;
 -	}
 -
 -	lsigid[0] = lsig->id = root->ac_lsigs;
 -	memcpy(&lsig->tdb, &tdb, sizeof(tdb));
 +static int cli_loadldb(FILE *fs, struct cl_engine *engine, unsigned int *signo, unsigned int options, struct cli_dbio *dbio, const char *dbname)
 +{
- 	char buffer[CLI_DEFAULT_LSIG_BUFSIZE + 1];
++	char buffer[CLI_DEFAULT_LSIG_BUFSIZE + 1], *buffer_cpy;
 +	unsigned int line = 0, sigs = 0;
 +	int ret;
  
 -	root->ac_lsigs++;
 -	newtable = (struct cli_ac_lsig **) mpool_realloc(engine->mempool, root->ac_lsigtable, root->ac_lsigs * sizeof(struct cli_ac_lsig *));
 -	if(!newtable) {
 -	    root->ac_lsigs--;
 -	    cli_errmsg("cli_loadldb: Can't realloc root->ac_lsigtable\n");
 -	    FREE_TDB(tdb);
 -	    mpool_free(engine->mempool, lsig);
 -	    ret = CL_EMEM;
 -	    break;
 -	}
 -	newtable[root->ac_lsigs - 1] = lsig;
 -	root->ac_lsigtable = newtable;
  
 -	for(i = 0; i < subsigs; i++) {
 -	    if(i + 3 >= tokens_count) {
 -		cli_errmsg("cli_loadldb: Missing subsignature id %u\n", i);
 -		ret = CL_EMALFDB;
 -		break;
 -	    }
 -	    lsigid[1] = i;
 -	    sig = tokens[3 + i];
 +    if((ret = cli_initroots(engine, options)))
 +	return ret;
  
 -	    if((pt = strchr(tokens[3 + i], ':'))) {
 -		*pt = 0;
 -		sig = ++pt;
 -		offset = tokens[3 + i];
 -	    } else {
 -		offset = "*";
 -		sig = tokens[3 + i];
 -	    }
++    if(engine->ignored)
++	if(!(buffer_cpy = cli_malloc(sizeof(buffer))))
++	    return CL_EMEM;
 +    while(cli_dbgets(buffer, sizeof(buffer), fs, dbio)) {
 +	line++;
 +	sigs++;
 +	cli_chomp(buffer);
  
 -	    if((ret = cli_parse_add(root, virname, sig, 0, 0, offset, target, lsigid, options))) {
 -		ret = CL_EMALFDB;
 -		break;
 -	    }
 -	}
 -	if(ret)
++	if(engine->ignored)
++	    strcpy(buffer_cpy, buffer);
 +	ret = load_oneldb(buffer,
 +			  engine->pua_cats && (options & CL_DB_PUA_MODE) && (options & (CL_DB_PUA_INCLUDE | CL_DB_PUA_EXCLUDE)),
 +			  !!engine->ignored,
- 			  engine, options, dbname, line, &sigs, NULL);
++			  engine, options, dbname, line, &sigs, NULL, buffer_cpy);
 +	if (ret)
  	    break;
      }
+     if(engine->ignored)
+ 	free(buffer_cpy);
  
      if(!line) {
  	cli_errmsg("Empty database file\n");
@@@ -1022,46 -1028,6 +1037,46 @@@
      return CL_SUCCESS;
  }
  
 +static int cli_loadcbc(FILE *fs, struct cl_engine *engine, unsigned int *signo, unsigned int options, struct cli_dbio *dbio, const char *dbname)
 +{
 +    int rc;
 +    struct cli_all_bc *bcs = &engine->bcs;
 +    struct cli_bc *bc;
 +    unsigned sigs = 0;
 +
 +    if((rc = cli_initroots(engine, options)))
 +	return rc;
 +
 +    if(!(engine->dconf->bytecode & BYTECODE_ENGINE_MASK)) {
 +	return CL_SUCCESS;
 +    }
 +    bcs->all_bcs = cli_realloc2(bcs->all_bcs, sizeof(*bcs->all_bcs)*(bcs->count+1));
 +    if (!bcs->all_bcs) {
 +	cli_errmsg("cli_loadcbc: Can't allocate memory for bytecode entry\n");
 +	return CL_EMEM;
 +    }
 +    bcs->count++;
 +    bc = &bcs->all_bcs[bcs->count-1];
 +    rc = cli_bytecode_load(bc, fs, dbio);
 +    if (rc != CL_SUCCESS) {
 +	fprintf(stderr,"Unable to load %s bytecode: %s\n", dbname, cl_strerror(rc));
 +	return rc;
 +    }
 +    sigs += 2;/* the bytecode itself and the logical sig */
 +    if (bc->lsig) {
 +	cli_dbgmsg("Bytecode %s has logical signature: %s\n", dbname, bc->lsig);
- 	rc = load_oneldb(bc->lsig, 0, 0, engine, options, dbname, 0, &sigs, bc);
++	rc = load_oneldb(bc->lsig, 0, 0, engine, options, dbname, 0, &sigs, bc, NULL);
 +	if (rc != CL_SUCCESS) {
 +	    fprintf(stderr,"Problem parsing logical signature %s for bytecode %s: %s\n",
 +		    bc->lsig, dbname, cl_strerror(rc));
 +	    return rc;
 +	}
 +    }
 +    if (signo)
 +	*signo += sigs;
 +    return CL_SUCCESS;
 +}
 +
  #define FTM_TOKENS 8
  static int cli_loadftm(FILE *fs, struct cl_engine *engine, unsigned int options, unsigned int internal, struct cli_dbio *dbio)
  {
@@@ -1185,66 -1151,82 +1200,82 @@@
      return CL_SUCCESS;
  }
  
- #define IGN_TOKENS 3
+ #define IGN_MAX_TOKENS   3
  static int cli_loadign(FILE *fs, struct cl_engine *engine, unsigned int options, struct cli_dbio *dbio)
  {
- 	const char *tokens[IGN_TOKENS + 1];
+ 	const char *tokens[IGN_MAX_TOKENS + 1], *signame, *hash = NULL;
  	char buffer[FILEBUFF];
- 	unsigned int line = 0, tokens_count;
- 	struct cli_ignsig *new;
+ 	unsigned int line = 0, tokens_count, i, len;
+         struct cli_bm_patt *new;
  	int ret = CL_SUCCESS;
  
- 
      if(!engine->ignored) {
- 	engine->ignored = (struct cli_ignored *) cli_calloc(sizeof(struct cli_ignored), 1);
- 	if(!engine->ignored || cli_hashset_init(&engine->ignored->hs, 64, 50))
+ 	engine->ignored = (struct cli_matcher *) mpool_calloc(engine->mempool, 1, sizeof(struct cli_matcher));
+ 	if(!engine->ignored)
  	    return CL_EMEM;
+ #ifdef USE_MPOOL
+ 	engine->ignored->mempool = engine->mempool;
+ #endif
+ 	if((ret = cli_bm_init(engine->ignored))) {
+ 	    cli_errmsg("cli_loadign: Can't initialise AC pattern matcher\n");
+ 	    return ret;
+ 	}
      }
  
      while(cli_dbgets(buffer, FILEBUFF, fs, dbio)) {
  	line++;
  	cli_chomp(buffer);
- 	tokens_count = cli_strtokenize(buffer, ':', IGN_TOKENS + 1, tokens);
- 	if(tokens_count != IGN_TOKENS) {
+ 
+ 	tokens_count = cli_strtokenize(buffer, ':', IGN_MAX_TOKENS + 1, tokens);
+ 	if(tokens_count > IGN_MAX_TOKENS) {
  	    ret = CL_EMALFDB;
  	    break;
  	}
  
- 	if(!cli_isnumber(tokens[1])) {
- 	    cli_errmsg("cli_loadign: Invalid entry for line number\n");
+ 	if(tokens_count == 1) {
+ 	    signame = buffer;
+ 	} else if(tokens_count == 2) {
+ 	    signame = tokens[0];
+ 	    hash = tokens[1];
+ 	} else { /* old mode */
+ 	    signame = tokens[2];
+ 	}
+ 	if(!(len = strlen(signame))) {
+ 	    cli_errmsg("cli_loadign: No signature name provided\n");
  	    ret = CL_EMALFDB;
  	    break;
  	}
  
- 	new = (struct cli_ignsig *) mpool_calloc(engine->mempool, 1, sizeof(struct cli_ignsig));
+         new = (struct cli_bm_patt *) mpool_calloc(engine->mempool, 1, sizeof(struct cli_bm_patt));
  	if(!new) {
  	    ret = CL_EMEM;
  	    break;
  	}
- 
- 	new->dbname = cli_mpool_strdup(engine->mempool, tokens[0]);
- 
- 	if(!new->dbname) {
+ 	new->pattern = cli_mpool_strdup(engine->mempool, signame);
+ 	if(!new->pattern) {
  	    mpool_free(engine->mempool, new);
- 	    ret = CL_EMALFDB;
+ 	    ret = CL_EMEM;
  	    break;
  	}
+ 	if(hash) {
+ 	    if(strlen(hash) != 32 || !(new->virname = (unsigned char *) cli_mpool_hex2str(engine->mempool, hash))) {
+ 		cli_errmsg("cli_loadign: Malformed MD5 string at line %u\n", line);
+ 		mpool_free(engine->mempool, new->pattern);
+ 		mpool_free(engine->mempool, new);
+ 		ret = CL_EMALFDB;
+ 		break;
+ 	    }
+ 	}
+ 	new->length = len;
+ 	new->boundary |= BM_BOUNDARY_EOL;
  
- 	new->line = atoi(tokens[1]);
- 
- 	if((ret = cli_hashset_addkey(&engine->ignored->hs, new->line)))
- 	    break;
- 
- 	new->signame = cli_mpool_strdup(engine->mempool, tokens[2]);
- 	if(!new->signame) {
- 	    mpool_free(engine->mempool, new->dbname);
+         if((ret = cli_bm_addpatt(engine->ignored, new, "0"))) {
+ 	    if(hash)
+ 		mpool_free(engine->mempool, new->virname);
+ 	    mpool_free(engine->mempool, new->pattern);
  	    mpool_free(engine->mempool, new);
- 	    ret = CL_EMALFDB;
  	    break;
  	}
- 
- 	new->next = engine->ignored->list;
- 	engine->ignored->list = new;
      }
  
      if(ret) {
@@@ -1255,25 -1237,6 +1286,6 @@@
      return CL_SUCCESS;
  }
  
- static void cli_freeign(struct cl_engine *engine)
- {
- 	struct cli_ignsig *pt;
- 	struct cli_ignored *ignored;
- 
-     if((ignored = engine->ignored)) {
- 	while(ignored->list) {
- 	    pt = ignored->list;
- 	    ignored->list = ignored->list->next;
- 	    mpool_free(engine->mempool, pt->dbname);
- 	    mpool_free(engine->mempool, pt->signame);
- 	    mpool_free(engine->mempool,pt);
- 	}
- 	cli_hashset_destroy(&ignored->hs);
- 	free(engine->ignored);
- 	engine->ignored = NULL;
-     }
- }
- 
  static int scomp(const void *a, const void *b)
  {
      return *(const uint32_t *)a - *(const uint32_t *)b;
@@@ -1322,7 -1285,7 +1334,7 @@@ static int cli_md5db_init(struct cl_eng
  static int cli_loadmd5(FILE *fs, struct cl_engine *engine, unsigned int *signo, unsigned int mode, unsigned int options, struct cli_dbio *dbio, const char *dbname)
  {
  	const char *tokens[MD5_TOKENS + 1];
- 	char buffer[FILEBUFF];
+ 	char buffer[FILEBUFF], *buffer_cpy;
  	const char *pt;
  	int ret = CL_SUCCESS;
  	unsigned int size_field = 1, md5_field = 0, line = 0, sigs = 0, tokens_count;
@@@ -1336,9 -1299,16 +1348,16 @@@
  	md5_field = 1;
      }
  
+     if(engine->ignored)
+ 	if(!(buffer_cpy = cli_malloc(FILEBUFF)))
+ 	    return CL_EMEM;
+ 
      while(cli_dbgets(buffer, FILEBUFF, fs, dbio)) {
  	line++;
  	cli_chomp(buffer);
+ 	if(engine->ignored)
+ 	    strcpy(buffer_cpy, buffer);
+ 
  	tokens_count = cli_strtokenize(buffer, ':', MD5_TOKENS + 1, tokens);
  	if(tokens_count != MD5_TOKENS) {
  	    ret = CL_EMALFDB;
@@@ -1355,7 -1325,7 +1374,7 @@@
  	    if(cli_chkpua(pt, engine->pua_cats, options))
  		continue;
  
- 	if(engine->ignored && cli_chkign(engine->ignored, dbname, line, pt))
+ 	if(engine->ignored && cli_chkign(engine->ignored, pt, buffer_cpy))
  	    continue;
  
  	new = (struct cli_bm_patt *) mpool_calloc(engine->mempool, 1, sizeof(struct cli_bm_patt));
@@@ -1410,6 -1380,8 +1429,8 @@@
  
  	sigs++;
      }
+     if(engine->ignored)
+ 	free(buffer_cpy);
  
      if(!line) {
  	cli_errmsg("cli_loadmd5: Empty database file\n");
@@@ -1431,18 -1403,25 +1452,25 @@@
  static int cli_loadmd(FILE *fs, struct cl_engine *engine, unsigned int *signo, int type, unsigned int options, struct cli_dbio *dbio, const char *dbname)
  {
  	const char *tokens[MD_TOKENS + 1];
- 	char buffer[FILEBUFF];
+ 	char buffer[FILEBUFF], *buffer_cpy;
  	unsigned int line = 0, sigs = 0, tokens_count;
  	int ret = CL_SUCCESS, crc;
  	struct cli_meta_node *new;
  
  
+     if(engine->ignored)
+ 	if(!(buffer_cpy = cli_malloc(FILEBUFF)))
+ 	    return CL_EMEM;
+ 
      while(cli_dbgets(buffer, FILEBUFF, fs, dbio)) {
  	line++;
  	if(buffer[0] == '#')
  	    continue;
  
  	cli_chomp(buffer);
+ 	if(engine->ignored)
+ 	    strcpy(buffer_cpy, buffer);
+ 
  	tokens_count = cli_strtokenize(buffer, ':', MD_TOKENS + 1, tokens);
  	if(tokens_count != MD_TOKENS) {
  	    ret = CL_EMALFDB;
@@@ -1493,7 -1472,7 +1521,7 @@@
  	    break;
  	}
  
- 	if(engine->ignored && cli_chkign(engine->ignored, dbname, line, new->virname)) {
+ 	if(engine->ignored && cli_chkign(engine->ignored, new->virname, buffer/*_cpy*/)) {
  	    mpool_free(engine->mempool, new->virname);
  	    mpool_free(engine->mempool, new);
  	    continue;
@@@ -1559,6 -1538,8 +1587,8 @@@
  
  	sigs++;
      }
+     if(engine->ignored)
+ 	free(buffer_cpy);
  
      if(!line) {
  	cli_errmsg("Empty database file\n");
@@@ -1599,13 -1580,7 +1629,7 @@@ int cli_load(const char *filename, stru
  	return CL_EOPEN;
      }
  
- /*
- #ifdef C_WINDOWS
-     if((dbname = strrchr(filename, '\\')))
- #else
- */
-     if((dbname = strrchr(filename, '/')))
- /*#endif */
+     if((dbname = strrchr(filename, *PATHSEP)))
  	dbname++;
      else
  	dbname = filename;
@@@ -1657,11 -1632,7 +1681,11 @@@
  	    ret = cli_loadldb(fs, engine, signo, options | CL_DB_PUA_MODE, dbio, dbname);
  	else
  	    skipped = 1;
 -
 +    } else if(cli_strbcasestr(filename, ".cbc")) {
 +	if(options & CL_DB_BYTECODE)
 +	    ret = cli_loadcbc(fs, engine, signo, options, dbio, dbname);
 +	else
 +	    skipped = 1;
      } else if(cli_strbcasestr(dbname, ".sdb")) {
  	ret = cli_loadndb(fs, engine, signo, 1, options, dbio, dbname);
  
@@@ -1687,7 -1658,7 +1711,7 @@@
      } else if(cli_strbcasestr(dbname, ".ftm")) {
  	ret = cli_loadftm(fs, engine, options, 0, dbio);
  
-     } else if(cli_strbcasestr(dbname, ".ign")) {
+     } else if(cli_strbcasestr(dbname, ".ign") || cli_strbcasestr(dbname, ".ign2")) {
  	ret = cli_loadign(fs, engine, options, dbio);
  
      } else {
@@@ -1725,51 -1696,77 +1749,77 @@@ static int cli_loaddbdir(const char *di
  
  
      cli_dbgmsg("Loading databases from %s\n", dirname);
-     dbfile = (char *) cli_malloc(strlen(dirname) + 20);
-     if(!dbfile)
- 	return CL_EMEM;
  
-     /* try to load local.ign and daily.cvd/daily.ign first */
-     sprintf(dbfile, "%s/local.ign", dirname);
-     if(!access(dbfile, R_OK) && (ret = cli_load(dbfile, engine, signo, options, NULL))) {
- 	free(dbfile);
- 	return ret;
+     if((dd = opendir(dirname)) == NULL) {
+         cli_errmsg("cli_loaddbdir(): Can't open directory %s\n", dirname);
+         return CL_EOPEN;
      }
  
-     sprintf(dbfile, "%s/daily.cld", dirname);
-     if(access(dbfile, R_OK))
- 	sprintf(dbfile, "%s/daily.cvd", dirname);
-     if(!access(dbfile, R_OK) && (ret = cli_load(dbfile, engine, signo, options, NULL))) {
- 	free(dbfile);
- 	return ret;
+     /* first round - load .ign and .ign2 files */
+ #ifdef HAVE_READDIR_R_3
+     while(!readdir_r(dd, &result.d, &dent) && dent) {
+ #elif defined(HAVE_READDIR_R_2)
+     while((dent = (struct dirent *) readdir_r(dd, &result.d))) {
+ #else
+     while((dent = readdir(dd))) {
+ #endif
+ 	if(dent->d_ino)
+ 	{
+ 	    if(cli_strbcasestr(dent->d_name, ".ign") || cli_strbcasestr(dent->d_name, ".ign2")) {
+ 		dbfile = (char *) cli_malloc(strlen(dent->d_name) + strlen(dirname) + 2);
+ 		if(!dbfile) {
+ 		    cli_dbgmsg("cli_loaddbdir(): dbfile == NULL\n");
+ 		    closedir(dd);
+ 		    return CL_EMEM;
+ 		}
+ 		sprintf(dbfile, "%s"PATHSEP"%s", dirname, dent->d_name);
+ 		ret = cli_load(dbfile, engine, signo, options, NULL);
+ 		if(ret) {
+ 		    cli_dbgmsg("cli_loaddbdir(): error loading database %s\n", dbfile);
+ 		    free(dbfile);
+ 		    closedir(dd);
+ 		    return ret;
+ 		}
+ 		free(dbfile);
+ 	    }
+ 	}
+     }
+ 
+     /* the daily db must be loaded before main */
+     dbfile = (char *) cli_malloc(strlen(dirname) + 20);
+     if(!dbfile) {
+ 	closedir(dd);
+ 	return CL_EMEM;
      }
  
-     sprintf(dbfile, "%s/daily.ign", dirname);
+     sprintf(dbfile, "%s"PATHSEP"daily.cld", dirname);
+     if(access(dbfile, R_OK))
+ 	sprintf(dbfile, "%s"PATHSEP"daily.cvd", dirname);
      if(!access(dbfile, R_OK) && (ret = cli_load(dbfile, engine, signo, options, NULL))) {
  	free(dbfile);
+ 	closedir(dd);
  	return ret;
      }
  
      /* try to load local.gdb next */
-     sprintf(dbfile, "%s/local.gdb", dirname);
+     sprintf(dbfile, "%s"PATHSEP"local.gdb", dirname);
      if(!access(dbfile, R_OK) && (ret = cli_load(dbfile, engine, signo, options, NULL))) {
  	free(dbfile);
+ 	closedir(dd);
  	return ret;
      }
  
      /* check for and load daily.cfg */
-     sprintf(dbfile, "%s/daily.cfg", dirname);
+     sprintf(dbfile, "%s"PATHSEP"daily.cfg", dirname);
      if(!access(dbfile, R_OK) && (ret = cli_load(dbfile, engine, signo, options, NULL))) {
  	free(dbfile);
+ 	closedir(dd);
  	return ret;
      }
      free(dbfile);
  
-     if((dd = opendir(dirname)) == NULL) {
-         cli_errmsg("cli_loaddbdir(): Can't open directory %s\n", dirname);
-         return CL_EOPEN;
-     }
- 
+     /* second round - load everything else */
+     rewinddir(dd);
  #ifdef HAVE_READDIR_R_3
      while(!readdir_r(dd, &result.d, &dent) && dent) {
  #elif defined(HAVE_READDIR_R_2)
@@@ -1777,22 -1774,17 +1827,17 @@@
  #else
      while((dent = readdir(dd))) {
  #endif
- #if	(!defined(C_INTERIX)) && (!defined(C_WINDOWS))
  	if(dent->d_ino)
- #endif
  	{
- 	    if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..") && strcmp(dent->d_name, "daily.cvd") && strcmp(dent->d_name, "daily.cld") && strcmp(dent->d_name, "daily.ign") && strcmp(dent->d_name, "daily.cfg") && strcmp(dent->d_name, "local.ign") && CLI_DBEXT(dent->d_name)) {
- 
+ 	    if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..") && strcmp(dent->d_name, "daily.cvd") && strcmp(dent->d_name, "daily.cld") && strcmp(dent->d_name, "daily.cfg") && CLI_DBEXT(dent->d_name)) {
  		dbfile = (char *) cli_malloc(strlen(dent->d_name) + strlen(dirname) + 2);
- 
  		if(!dbfile) {
  		    cli_dbgmsg("cli_loaddbdir(): dbfile == NULL\n");
  		    closedir(dd);
  		    return CL_EMEM;
  		}
- 		sprintf(dbfile, "%s/%s", dirname, dent->d_name);
+ 		sprintf(dbfile, "%s"PATHSEP"%s", dirname, dent->d_name);
  		ret = cli_load(dbfile, engine, signo, options, NULL);
- 
  		if(ret) {
  		    cli_dbgmsg("cli_loaddbdir(): error loading database %s\n", dbfile);
  		    free(dbfile);
@@@ -1803,7 -1795,6 +1848,6 @@@
  	    }
  	}
      }
- 
      closedir(dd);
      if(ret == CL_EOPEN)
  	cli_errmsg("cli_loaddb(): No supported database files found in %s\n", dirname);
@@@ -1835,17 -1826,10 +1879,17 @@@ int cl_load(const char *path, struct cl
  	if((ret = phishing_init(engine)))
  	    return ret;
  
 +    if((dboptions & CL_DB_BYTECODE) && !engine->bcs.engine && (engine->dconf->bytecode & BYTECODE_ENGINE_MASK)) {
 +	if((ret = cli_bytecode_init(&engine->bcs)))
 +	    return ret;
 +    } else {
 +	cli_dbgmsg("Bytecode engine disabled\n");
 +    }
 +
      engine->dboptions |= dboptions;
  
      switch(sb.st_mode & S_IFMT) {
 -	case S_IFREG: 
 +	case S_IFREG:
  	    ret = cli_load(path, engine, signo, dboptions, NULL);
  	    break;
  
@@@ -1903,9 -1887,7 +1947,7 @@@ int cl_statinidir(const char *dirname, 
  #else
      while((dent = readdir(dd))) {
  #endif
- #if	(!defined(C_INTERIX)) && (!defined(C_WINDOWS))
  	if(dent->d_ino)
- #endif
  	{
  	    if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..") && CLI_DBEXT(dent->d_name)) {
  		dbstat->entries++;
@@@ -1916,7 -1898,7 +1958,7 @@@
  		    return CL_EMEM;
  		}
  
- #if defined(C_INTERIX) || defined(C_OS2)
+ #ifdef _WIN32
  		dbstat->statdname = (char **) cli_realloc2(dbstat->statdname, dbstat->entries * sizeof(char *));
  		if(!dbstat->statdname) {
  		    cl_statfree(dbstat);
@@@ -1931,8 -1913,8 +1973,8 @@@
  		    closedir(dd);
  		    return CL_EMEM;
  		}
- 		sprintf(fname, "%s/%s", dirname, dent->d_name);
- #if defined(C_INTERIX) || defined(C_OS2)
+ 		sprintf(fname, "%s"PATHSEP"%s", dirname, dent->d_name);
+ #ifdef _WIN32
  		dbstat->statdname[dbstat->entries - 1] = (char *) cli_malloc(strlen(dent->d_name) + 1);
  		if(!dbstat->statdname[dbstat->entries - 1]) {
  		    cl_statfree(dbstat);
@@@ -1986,9 -1968,7 +2028,7 @@@ int cl_statchkdir(const struct cl_stat 
  #else
      while((dent = readdir(dd))) {
  #endif
- #if	(!defined(C_INTERIX)) && (!defined(C_WINDOWS))
  	if(dent->d_ino)
- #endif
  	{
  	    if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..") && CLI_DBEXT(dent->d_name)) {
                  fname = cli_malloc(strlen(dbstat->dir) + strlen(dent->d_name) + 32);
@@@ -1997,13 -1977,13 +2037,13 @@@
  		    return CL_EMEM;
  		}
  
- 		sprintf(fname, "%s/%s", dbstat->dir, dent->d_name);
+ 		sprintf(fname, "%s"PATHSEP"%s", dbstat->dir, dent->d_name);
  		stat(fname, &sb);
  		free(fname);
  
  		found = 0;
  		for(i = 0; i < dbstat->entries; i++)
- #if defined(C_INTERIX) || defined(C_OS2)
+ #ifdef _WIN32
  		    if(!strcmp(dbstat->statdname[i], dent->d_name)) {
  #else
  		    if(dbstat->stattab[i].st_ino == sb.st_ino) {
@@@ -2032,7 -2012,7 +2072,7 @@@ int cl_statfree(struct cl_stat *dbstat
  
      if(dbstat) {
  
- #if defined(C_INTERIX) || defined(C_OS2)
+ #ifdef _WIN32
  	    int i;
  
  	if(dbstat->statdname) {
@@@ -2152,14 -2132,6 +2192,14 @@@ int cl_engine_free(struct cl_engine *en
  	mpool_free(engine->mempool, metah);
      }
  
 +    if(engine->dconf->bytecode & BYTECODE_ENGINE_MASK) {
 +	unsigned i;
 +	if (engine->bcs.all_bcs)
 +	    for(i=0;i<engine->bcs.count;i++)
 +		cli_bytecode_destroy(&engine->bcs.all_bcs[i]);
 +	cli_bytecode_done(&engine->bcs);
 +	free(engine->bcs.all_bcs);
 +    }
      if(engine->dconf->phishing & PHISHING_CONF_ENGINE)
  	phishing_done(engine);
      if(engine->dconf)
@@@ -2172,7 -2144,11 +2212,11 @@@
  	mpool_free(engine->mempool, engine->tmpdir);
  
      cli_ftfree(engine);
-     cli_freeign(engine);
+     if(engine->ignored) {
+ 	cli_bm_free(engine->ignored);
+ 	mpool_free(engine->mempool, engine->ignored);
+     }
+ 
  #ifdef USE_MPOOL
      if(engine->mempool) mpool_destroy(engine->mempool);
  #endif
@@@ -2199,7 -2175,7 +2243,7 @@@ static void cli_md5db_build(struct cli_
  		root->soff_len = cli_hashset_toarray(&root->md5_sizes_hs, &root->soff);
  #endif
  		cli_hashset_destroy(&root->md5_sizes_hs);
- 		qsort(root->soff, root->soff_len, sizeof(uint32_t), scomp);
+ 		cli_qsort(root->soff, root->soff_len, sizeof(uint32_t), scomp);
  	}
  }
  
@@@ -2221,7 -2197,7 +2265,7 @@@ int cl_engine_compile(struct cl_engine 
  	if((root = engine->root[i])) {
  	    if((ret = cli_ac_buildtrie(root)))
  		return ret;
 -	    cli_dbgmsg("matcher[%u]: %s: AC sigs: %u (reloff: %u, absoff: %u) BM sigs: %u (reloff: %u, absoff: %u) %s\n", i, cli_mtargets[i].name, root->ac_patterns, root->ac_reloff_num, root->ac_absoff_num, root->bm_patterns, root->bm_reloff_num, root->bm_absoff_num, root->ac_only ? "(ac_only mode)" : "");
 +	    cli_dbgmsg("matcher[%u]: %s: AC sigs: %u (reloff: %u, absoff: %u) BM sigs: %u (reloff: %u, absoff: %u) maxpatlen %u %s\n", i, cli_mtargets[i].name, root->ac_patterns, root->ac_reloff_num, root->ac_absoff_num, root->bm_patterns, root->bm_reloff_num, root->bm_absoff_num, root->maxpatlen, root->ac_only ? "(ac_only mode)" : "");
  	}
      }
  
@@@ -2232,16 -2208,14 +2276,20 @@@
  	    return ret;
      }
      cli_md5db_build(engine->md5_mdb);
-     cli_freeign(engine);
+     if(engine->ignored) {
+ 	cli_bm_free(engine->ignored);
+ 	mpool_free(engine->mempool, engine->ignored);
+ 	engine->ignored = NULL;
+     }
      cli_dconf_print(engine->dconf);
      mpool_flush(engine->mempool);
  
 +    /* Compile bytecode */
 +    if((ret = cli_bytecode_prepare(&engine->bcs))) {
 +	fprintf(stderr,"Unable to compile/load bytecode: %s\n", cl_strerror(ret));
 +	return ret;
 +    }
 +
      engine->dboptions |= CL_DB_COMPILED;
      return CL_SUCCESS;
  }
diff --combined libclamav/readdb.h
index 1e09936,07f18f7..abc7382
--- a/libclamav/readdb.h
+++ b/libclamav/readdb.h
@@@ -47,9 -47,7 +47,8 @@@
  	cli_strbcasestr(ext, ".pdb")   ||	\
  	cli_strbcasestr(ext, ".gdb")   ||	\
  	cli_strbcasestr(ext, ".wdb")   ||	\
 +	cli_strbcasestr(ext, ".cbc")   ||	\
  	cli_strbcasestr(ext, ".ftm")   ||	\
- 	cli_strbcasestr(ext, ".ign")   ||	\
  	cli_strbcasestr(ext, ".cfg")   ||	\
  	cli_strbcasestr(ext, ".cvd")   ||	\
  	cli_strbcasestr(ext, ".cld")		\
diff --combined shared/optparser.c
index a63a778,aef17b4..12d665b
--- a/shared/optparser.c
+++ b/shared/optparser.c
@@@ -47,7 -47,6 +47,6 @@@
  #include "getopt.h"
  
  #define MAXCMDOPTS  100
- #define MAX(a,b) (a > b ? a : b)
  
  #define MATCH_NUMBER "^[0-9]+$"
  #define MATCH_SIZE "^[0-9]+[KM]?$"
@@@ -118,9 -117,6 +117,9 @@@ const struct clam_option clam_options[
      { NULL, "non-default", 'n', TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMCONF, "", "" },
      { NULL, "generate-config", 'g', TYPE_STRING, NULL, -1, NULL, 0, OPT_CLAMCONF, "", "" },
  
 +    { NULL, "force-interpreter", 'f', TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMBC, "Force using the interpreter instead of the JIT", "" },
 +    { NULL, "input", 'i', TYPE_STRING, NULL, -1, NULL, 0, OPT_CLAMBC, "Input file to run the bytecode n", ""},
 +
      /* cmdline only - deprecated */
      { NULL, "http-proxy", 0, TYPE_STRING, NULL, 0, NULL, 0, OPT_FRESHCLAM | OPT_DEPRECATED, "", "" },
      { NULL, "proxy-user", 0, TYPE_STRING, NULL, 0, NULL, 0, OPT_FRESHCLAM | OPT_DEPRECATED, "", "" },
@@@ -233,7 -229,7 +232,7 @@@
      { "AllowSupplementaryGroups", NULL, 0, TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMD | OPT_FRESHCLAM | OPT_MILTER, "Initialize a supplementary group access (the process must be started by root).", "no" },
  
      /* Scan options */
 -
 +    { "Bytecode", "bytecode", 0, TYPE_BOOL, MATCH_BOOL, 1, NULL, 0, OPT_CLAMD | OPT_CLAMSCAN, "With this option enabled ClamAV will load bytecode from the database. It is highly recommended you keep this option on, otherwise you'll miss detections for many new viruses.", "yes" },
      { "DetectPUA", "detect-pua", 0, TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMD | OPT_CLAMSCAN, "Detect Potentially Unwanted Applications.", "yes" },
  
      { "ExcludePUA", "exclude-pua", 0, TYPE_STRING, NULL, -1, NULL, FLAG_MULTIPLE, OPT_CLAMD | OPT_CLAMSCAN, "Exclude a specific PUA category. This directive can be used multiple times.\nSee http://www.clamav.net/support/pua for the complete list of PUA\ncategories.", "NetTool\nPWTool" },
@@@ -292,6 -288,8 +291,8 @@@
  
      { "ClamukoScanOnAccess", NULL, 0, TYPE_BOOL, MATCH_BOOL, -1, NULL, 0, OPT_CLAMD, "This option enables Clamuko. Dazuko needs to be already configured and\nrunning.", "no" },
  
+     { "ClamukoScannerCount", NULL, 0, TYPE_NUMBER, MATCH_NUMBER, 3, NULL, 0, OPT_CLAMD, "The number of scanner threads that will be started (DazukoFS only).\nHaving multiple scanner threads allows Clamuko to serve multiple\nprocesses simultaneously. This is particularly beneficial on SMP machines.", "3" },
+ 
      { "ClamukoScanOnOpen", NULL, 0, TYPE_BOOL, MATCH_BOOL, -1, NULL, 0, OPT_CLAMD, "Scan files when they get opened by the system.", "yes" },
  
      { "ClamukoScanOnClose", NULL, 0, TYPE_BOOL, MATCH_BOOL, -1, NULL, 0, OPT_CLAMD, "Scan files when they get closed by the system.", "yes" },
@@@ -388,6 -386,8 +389,8 @@@
  
      { "AddHeader", NULL, 0, TYPE_STRING, "^(No|Replace|Yes|Add)$", -1, "no", 0, OPT_MILTER, "If this option is set to \"Replace\" (or \"Yes\"), an \"X-Virus-Scanned\" and an\n\"X-Virus-Status\" headers will be attached to each processed message, possibly\nreplacing existing headers.\nIf it is set to Add, the X-Virus headers are added possibly on top of the\nexisting ones.\nNote that while \"Replace\" can potentially break DKIM signatures, \"Add\" may\nconfuse procmail and similar filters.", "Replace" },
  
+     { "ReportHostname", NULL, 0, TYPE_STRING, NULL, -1, NULL, 0, OPT_MILTER, "When AddHeader is in use, this option allows to arbitrary set the reported\nhostname. This may be desirable in order to avoid leaking internal names.\nIf unset the real machine name is used.", "my.mail.server.name" },
+ 
      { "Chroot", NULL, 0, TYPE_STRING, NULL, -1, NULL, 0, OPT_MILTER, "Chroot to the specified directory.\nChrooting is performed just after reading the config file and before\ndropping privileges.", "/newroot" },
  
      { "Whitelist", NULL, 0, TYPE_STRING, NULL, -1, NULL, 0, OPT_MILTER, "This option specifies a file which contains a list of basic POSIX regular\nexpressions. Addresses (sent to or from - see below) matching these regexes\nwill not be scanned.  Optionally each line can start with the string \"From:\"\nor \"To:\" (note: no whitespace after the colon) indicating if it is,\nrespectively, the sender or recipient that is to be whitelisted.\nIf the field is missing, \"To:\" is assumed.\nLines starting with #, : or ! are ignored.", "/etc/whitelisted_addresses" },
@@@ -695,7 -695,7 +698,7 @@@ struct optstruct *optparse(const char *
      }
  
      if(cfgfile) {
- 	if((fs = fopen(cfgfile, "rb")) == NULL) {
+ 	if((fs = fopen(cfgfile, "r")) == NULL) {
  	    /* don't print error messages here! */
  	    optfree(opts);
  	    return NULL;
diff --combined unit_tests/Makefile.in
index d581ce1,db6c2a0..df936dc
--- a/unit_tests/Makefile.in
+++ b/unit_tests/Makefile.in
@@@ -44,9 -44,9 +44,9 @@@ am__aclocal_m4_deps = $(top_srcdir)/m4/
  	$(top_srcdir)/m4/argz.m4 $(top_srcdir)/m4/fdpassing.m4 \
  	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
  	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
 -	$(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \
 -	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 -	$(top_srcdir)/m4/lt~obsolete.m4 \
 +	$(top_srcdir)/m4/llvm.m4 $(top_srcdir)/m4/ltdl.m4 \
 +	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 +	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
  	$(top_srcdir)/m4/mmap_private.m4 $(top_srcdir)/m4/resolv.m4 \
  	$(top_srcdir)/configure.in
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@@ -133,6 -133,76 +133,76 @@@ test "X$(AM_COLOR_TESTS)" != Xno 
    blu=''; \
    std=''; \
  }
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+     *) f=$$p;; \
+   esac;
+ am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+ am__install_max = 40
+ am__nobase_strip_setup = \
+   srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+ am__nobase_strip = \
+   for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+ am__nobase_list = $(am__nobase_strip_setup); \
+   for p in $$list; do echo "$$p $$p"; done | \
+   sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+   $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+     if (++n[$$2] == $(am__install_max)) \
+       { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+     END { for (dir in files) print dir, files[dir] }'
+ am__base_list = \
+   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+ # Restructured Text title and section.
+ am__rst_title = sed 's/.*/   &   /;h;s/./=/g;p;x;p;g;p;s/.*//'
+ am__rst_section = sed 'p;s/./=/g;p;g'
+ # Put stdin (possibly several lines separated by ".  ") in a box.
+ am__text_box = $(AWK) '{				\
+   n = split($$0, lines, "\\.  "); max = 0;		\
+   for (i = 1; i <= n; ++i)				\
+     if (max < length(lines[i]))				\
+       max = length(lines[i]);				\
+   for (i = 0; i < max; ++i) line = line "=";		\
+   print line;						\
+   for (i = 1; i <= n; ++i) if (lines[i]) print lines[i];\
+   print line;						\
+ }'
+ # Solaris 10 'make', and several other traditional 'make' implementations,
+ # pass "-e" to $(SHELL).  This contradicts POSIX.  Work around the problem
+ # by disabling -e (using the XSI extension "set +e") if it's set.
+ am__sh_e_setup = case $$- in *e*) set +e;; esac
+ # To be inserted before the command running the test.  Creates the
+ # directory for the log if needed.  Stores in $dir the directory
+ # containing $f, in $tst the test, in $log the log, and passes
+ # TESTS_ENVIRONMENT.  Save and restore TERM around use of
+ # TESTS_ENVIRONMENT, in case that unsets it.
+ am__check_pre = \
+ $(am__sh_e_setup);					\
+ $(am__vpath_adj_setup) $(am__vpath_adj)			\
+ srcdir=$(srcdir); export srcdir;			\
+ rm -f $@-t;						\
+ trap 'st=$$?; rm -f '\''$(abs_builddir)/$@-t'\''; (exit $$st); exit $$st' \
+   1 2 13 15;						\
+ am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;		\
+ test "x$$am__odir" = x. || $(MKDIR_P) "$$am__odir" || exit $$?;	\
+ if test -f "./$$f"; then dir=./;			\
+ elif test -f "$$f"; then dir=;				\
+ else dir="$(srcdir)/"; fi;				\
+ tst=$$dir$$f; log='$@'; __SAVED_TERM=$$TERM;		\
+ $(TESTS_ENVIRONMENT)
+ RECHECK_LOGS = $(TEST_LOGS)
+ AM_RECURSIVE_TARGETS = check check-html recheck recheck-html
+ TEST_SUITE_LOG = test-suite.log
+ TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html)
+ TEST_EXTENSIONS = @EXEEXT@ .test
+ LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+ am__test_logs1 = $(TESTS:=.log)
+ am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+ TEST_LOGS = $(am__test_logs2:.test.log=.log)
+ TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ 	$(TEST_LOG_FLAGS)
+ TEST_LOGS_TMP = $(TEST_LOGS:.log=.log-t)
  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
  ACLOCAL = @ACLOCAL@
  AMTAR = @AMTAR@
@@@ -281,7 -351,6 +351,7 @@@ psdir = @psdir
  sbindir = @sbindir@
  sharedstatedir = @sharedstatedir@
  srcdir = @srcdir@
 +subdirs = @subdirs@
  sys_symbol_underscore = @sys_symbol_underscore@
  sysconfdir = @sysconfdir@
  target = @target@
@@@ -295,8 -364,8 +365,8 @@@ top_srcdir = @top_srcdir
  SPLIT_DIR = $(top_srcdir)/unit_tests/.split
  FILES = clam-phish-exe
  programs = check_clamav
- scripts = check_clamd.sh check_freshclam.sh check_sigtool.sh check_clamscan.sh\
- 	 valgrind_tests.sh efence_tests.sh duma_tests.sh
+ scripts = check_freshclam.sh check_sigtool.sh check1_clamscan.sh check2_clamd.sh check3_clamd.sh check4_clamd.sh\
+ 	  check5_clamd_vg.sh check6_clamd_vg.sh check7_clamd_hg.sh check8_clamd_hg.sh
  
  TESTS_ENVIRONMENT = export abs_srcdir=$(abs_srcdir) AWK=$(AWK); \
  	$(am__append_1)
@@@ -313,8 -382,8 +383,8 @@@ check_SCRIPTS = $(scripts
  @HAVE_LIBCHECK_TRUE at check_clamd_SOURCES = check_clamd.c checks_common.h
  @HAVE_LIBCHECK_TRUE at check_clamd_CPPFLAGS = -I$(top_srcdir) @CHECK_CPPFLAGS@ -DSRCDIR=\"$(abs_srcdir)\" -DBUILDDIR=\"$(abs_builddir)\"
  @HAVE_LIBCHECK_TRUE at check_clamd_LDADD = @CHECK_LIBS@ @CLAMD_LIBS@
- CLEANFILES = lcov.out *.gcno *.gcda *.log $(FILES) test-stderr.log clamscan.log valgrind-*.log duma.log duma2.log clamscan2.log
- EXTRA_DIST = .split $(srcdir)/*.ref input test-clamd.conf test-freshclam.conf valgrind.supp virusaction-test.sh $(scripts) preload_run.sh
+ CLEANFILES = lcov.out *.gcno *.gcda *.log $(FILES) test-stderr.log clamscan.log accdenied
+ EXTRA_DIST = .split $(srcdir)/*.ref input test-freshclam.conf valgrind.supp virusaction-test.sh $(scripts) preload_run.sh check_common.sh
  @ENABLE_COVERAGE_TRUE at LCOV_OUTPUT = lcov.out
  @ENABLE_COVERAGE_TRUE at LCOV_HTML = lcov_html
  @ENABLE_COVERAGE_TRUE at LCOV_LCOV = @LCOV@
@@@ -324,7 -393,7 +394,7 @@@
  all: all-am
  
  .SUFFIXES:
- .SUFFIXES: .c .lo .o .obj
+ .SUFFIXES: .c .html .lo .log .o .obj .test .test$(EXEEXT)
  $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
  	@for dep in $?; do \
  	  case '$(am__configure_deps)' in \
@@@ -664,97 -733,183 +734,183 @@@ GTAGS
  distclean-tags:
  	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
  
- check-TESTS: $(TESTS)
- 	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
- 	srcdir=$(srcdir); export srcdir; \
- 	list=' $(TESTS) '; \
- 	$(am__tty_colors); \
- 	if test -n "$$list"; then \
- 	  for tst in $$list; do \
- 	    if test -f ./$$tst; then dir=./; \
- 	    elif test -f $$tst; then dir=; \
- 	    else dir="$(srcdir)/"; fi; \
- 	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
- 	      all=`expr $$all + 1`; \
- 	      case " $(XFAIL_TESTS) " in \
- 	      *[\ \	]$$tst[\ \	]*) \
- 		xpass=`expr $$xpass + 1`; \
- 		failed=`expr $$failed + 1`; \
- 		col=$$red; res=XPASS; \
- 	      ;; \
- 	      *) \
- 		col=$$grn; res=PASS; \
- 	      ;; \
- 	      esac; \
- 	    elif test $$? -ne 77; then \
- 	      all=`expr $$all + 1`; \
- 	      case " $(XFAIL_TESTS) " in \
- 	      *[\ \	]$$tst[\ \	]*) \
- 		xfail=`expr $$xfail + 1`; \
- 		col=$$lgn; res=XFAIL; \
- 	      ;; \
- 	      *) \
- 		failed=`expr $$failed + 1`; \
- 		col=$$red; res=FAIL; \
- 	      ;; \
- 	      esac; \
- 	    else \
- 	      skip=`expr $$skip + 1`; \
- 	      col=$$blu; res=SKIP; \
- 	    fi; \
- 	    echo "$${col}$$res$${std}: $$tst"; \
- 	  done; \
- 	  if test "$$all" -eq 1; then \
- 	    tests="test"; \
- 	    All=""; \
- 	  else \
- 	    tests="tests"; \
- 	    All="All "; \
- 	  fi; \
- 	  if test "$$failed" -eq 0; then \
- 	    if test "$$xfail" -eq 0; then \
- 	      banner="$$All$$all $$tests passed"; \
- 	    else \
- 	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
- 	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
- 	    fi; \
- 	  else \
- 	    if test "$$xpass" -eq 0; then \
- 	      banner="$$failed of $$all $$tests failed"; \
- 	    else \
- 	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
- 	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
- 	    fi; \
- 	  fi; \
- 	  dashes="$$banner"; \
- 	  skipped=""; \
- 	  if test "$$skip" -ne 0; then \
- 	    if test "$$skip" -eq 1; then \
- 	      skipped="($$skip test was not run)"; \
- 	    else \
- 	      skipped="($$skip tests were not run)"; \
- 	    fi; \
- 	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
- 	      dashes="$$skipped"; \
- 	  fi; \
- 	  report=""; \
- 	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
- 	    report="Please report to $(PACKAGE_BUGREPORT)"; \
- 	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
- 	      dashes="$$report"; \
- 	  fi; \
- 	  dashes=`echo "$$dashes" | sed s/./=/g`; \
- 	  if test "$$failed" -eq 0; then \
- 	    echo "$$grn$$dashes"; \
- 	  else \
- 	    echo "$$red$$dashes"; \
- 	  fi; \
- 	  echo "$$banner"; \
- 	  test -z "$$skipped" || echo "$$skipped"; \
- 	  test -z "$$report" || echo "$$report"; \
- 	  echo "$$dashes$$std"; \
- 	  test "$$failed" -eq 0; \
- 	else :; fi
+ # To be appended to the command running the test.  Handle the stdout
+ # and stderr redirection, and catch the exit status.
+ am__check_post =					\
+ >$@-t 2>&1;						\
+ estatus=$$?;						\
+ if test -n '$(DISABLE_HARD_ERRORS)'			\
+    && test $$estatus -eq 99; then			\
+   estatus=1;						\
+ fi;							\
+ TERM=$$__SAVED_TERM; export TERM;			\
+ $(am__tty_colors);					\
+ xfailed=PASS;						\
+ case " $(XFAIL_TESTS) " in				\
+   *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+     xfailed=XFAIL;;					\
+ esac;							\
+ case $$estatus:$$xfailed in				\
+     0:XFAIL) col=$$red; res=XPASS;;			\
+     0:*)     col=$$grn; res=PASS ;;			\
+     77:*)    col=$$blu; res=SKIP ;;			\
+     99:*)    col=$$red; res=FAIL ;;			\
+     *:XFAIL) col=$$lgn; res=XFAIL;;			\
+     *:*)     col=$$red; res=FAIL ;;			\
+ esac;							\
+ echo "$${col}$$res$${std}: $$f";			\
+ echo "$$res: $$f (exit: $$estatus)" |			\
+   $(am__rst_section) >$@;				\
+ cat $@-t >>$@;						\
+ rm -f $@-t
+ 
+ $(TEST_SUITE_LOG): $(TEST_LOGS)
+ 	@$(am__sh_e_setup);						\
+ 	list='$(TEST_LOGS)';						\
+ 	results=`for f in $$list; do					\
+ 		   read line < $$f && echo "$$line" || echo FAIL;	\
+ 		 done`;							\
+ 	all=`echo "$$results" | sed '/^$$/d' | wc -l | sed -e 's/^[	 ]*//'`; \
+ 	fail=`echo "$$results" | grep -c '^FAIL'`;			\
+ 	pass=`echo "$$results" | grep -c '^PASS'`;			\
+ 	skip=`echo "$$results" | grep -c '^SKIP'`;			\
+ 	xfail=`echo "$$results" | grep -c '^XFAIL'`;			\
+ 	xpass=`echo "$$results" | grep -c '^XPASS'`;			\
+ 	failures=`expr $$fail + $$xpass`;				\
+ 	all=`expr $$all - $$skip`;					\
+ 	if test "$$all" -eq 1; then tests=test; All=;			\
+ 	else tests=tests; All="All "; fi;				\
+ 	case fail=$$fail:xpass=$$xpass:xfail=$$xfail in			\
+ 	  fail=0:xpass=0:xfail=0)					\
+ 	    msg="$$All$$all $$tests passed.  ";				\
+ 	    exit=true;;							\
+ 	  fail=0:xpass=0:xfail=*)					\
+ 	    msg="$$All$$all $$tests behaved as expected";		\
+ 	    if test "$$xfail" -eq 1; then xfailures=failure;		\
+ 	    else xfailures=failures; fi;				\
+ 	    msg="$$msg ($$xfail expected $$xfailures).  ";		\
+ 	    exit=true;;							\
+ 	  fail=*:xpass=0:xfail=*)					\
+ 	    msg="$$fail of $$all $$tests failed.  ";			\
+ 	    exit=false;;						\
+ 	  fail=*:xpass=*:xfail=*)					\
+ 	    msg="$$failures of $$all $$tests did not behave as expected"; \
+ 	    if test "$$xpass" -eq 1; then xpasses=pass;			\
+ 	    else xpasses=passes; fi;					\
+ 	    msg="$$msg ($$xpass unexpected $$xpasses).  ";		\
+ 	    exit=false;;						\
+ 	  *)								\
+ 	    echo >&2 "incorrect case"; exit 4;;				\
+ 	esac;								\
+ 	if test "$$skip" -ne 0; then					\
+ 	  if test "$$skip" -eq 1; then					\
+ 	    msg="$$msg($$skip test was not run).  ";			\
+ 	  else								\
+ 	    msg="$$msg($$skip tests were not run).  ";			\
+ 	  fi;								\
+ 	fi;								\
+ 	{								\
+ 	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+ 	    $(am__rst_title);						\
+ 	  echo "$$msg";							\
+ 	  echo;								\
+ 	  echo ".. contents:: :depth: 2";				\
+ 	  echo;								\
+ 	  for f in $$list; do						\
+ 	    read line < $$f;						\
+ 	    case $$line in						\
+ 	      PASS:*|XFAIL:*);;						\
+ 	      *) echo; cat $$f;;					\
+ 	    esac;							\
+ 	  done;								\
+ 	} >$(TEST_SUITE_LOG).tmp;					\
+ 	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+ 	if test "$$failures" -ne 0; then				\
+ 	  msg="$${msg}See $(subdir)/$(TEST_SUITE_LOG).  ";		\
+ 	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+ 	    msg="$${msg}Please report to $(PACKAGE_BUGREPORT).  ";	\
+ 	  fi;								\
+ 	fi;								\
+ 	test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG);	\
+ 	$(am__tty_colors);						\
+ 	if $$exit; then							\
+ 	  echo $(ECHO_N) "$$grn$(ECHO_C)";				\
+ 	 else								\
+ 	  echo $(ECHO_N) "$$red$(ECHO_C)";				\
+ 	fi;								\
+ 	echo "$$msg" | $(am__text_box);					\
+ 	echo $(ECHO_N) "$$std$(ECHO_C)";				\
+ 	$$exit
+ 
+ # Run all the tests.
+ check-TESTS:
+ 	@list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ 	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ 	@set_logs=; if test "X$(TEST_LOGS)" = X.log; then		\
+ 	  set_logs=TEST_LOGS=;						\
+ 	fi;								\
+ 	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) $$set_logs
+ 
+ .log.html:
+ 	@list='$(RST2HTML) $$RST2HTML rst2html rst2html.py';		\
+ 	for r2h in $$list; do						\
+ 	  if ($$r2h --version) >/dev/null 2>&1; then			\
+ 	    R2H=$$r2h;							\
+ 	  fi;								\
+ 	done;								\
+ 	if test -z "$$R2H"; then					\
+ 	  echo >&2 "cannot find rst2html, cannot create $@";		\
+ 	  exit 2;							\
+ 	fi;								\
+ 	$$R2H $< >$@.tmp
+ 	@mv $@.tmp $@
+ 
+ # Be sure to run check first, and then to convert the result.
+ # Beware of concurrent executions.  Run "check" not "check-TESTS", as
+ # check-SCRIPTS and other dependencies are rebuilt by the former only.
+ # And expect check to fail.
+ check-html:
+ 	@if $(MAKE) $(AM_MAKEFLAGS) check; then			\
+ 	  rv=0; else rv=$$?;					\
+ 	fi;							\
+ 	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) || exit 4;	\
+ 	exit $$rv
+ recheck recheck-html:
+ 	@target=`echo $@ | sed 's,^re,,'`;				\
+ 	list='$(TEST_LOGS)';						\
+ 	list=`for f in $$list; do					\
+ 	        test -f $$f || continue;				\
+ 	        if read line < $$f; then				\
+ 	          case $$line in FAIL*|XPASS*) echo $$f;; esac;		\
+ 	        else echo $$f; fi;					\
+ 	      done | tr '\012\015' '  '`;				\
+ 	$(MAKE) $(AM_MAKEFLAGS) $$target AM_MAKEFLAGS='$(AM_MAKEFLAGS) TEST_LOGS="'"$$list"'"'
+ check_clamav.log: check_clamav$(EXEEXT)
+ 	@p='check_clamav$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check_freshclam.sh.log: check_freshclam.sh
+ 	@p='check_freshclam.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check_sigtool.sh.log: check_sigtool.sh
+ 	@p='check_sigtool.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check1_clamscan.sh.log: check1_clamscan.sh
+ 	@p='check1_clamscan.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check2_clamd.sh.log: check2_clamd.sh
+ 	@p='check2_clamd.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check3_clamd.sh.log: check3_clamd.sh
+ 	@p='check3_clamd.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check4_clamd.sh.log: check4_clamd.sh
+ 	@p='check4_clamd.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check5_clamd_vg.sh.log: check5_clamd_vg.sh
+ 	@p='check5_clamd_vg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check6_clamd_vg.sh.log: check6_clamd_vg.sh
+ 	@p='check6_clamd_vg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check7_clamd_hg.sh.log: check7_clamd_hg.sh
+ 	@p='check7_clamd_hg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ check8_clamd_hg.sh.log: check8_clamd_hg.sh
+ 	@p='check8_clamd_hg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+ .test.log:
+ 	@p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post)
+ @am__EXEEXT_TRUE at .test$(EXEEXT).log:
+ @am__EXEEXT_TRUE@	@p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post)
  
  distdir: $(DISTFILES)
  	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@@ -807,6 -962,10 +963,10 @@@ install-strip
  	  `test -z '$(STRIP)' || \
  	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
  mostlyclean-generic:
+ 	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ 	-test -z "$(TEST_LOGS_TMP)" || rm -f $(TEST_LOGS_TMP)
+ 	-test -z "$(TEST_SUITE_HTML)" || rm -f $(TEST_SUITE_HTML)
+ 	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
  
  clean-generic:
  	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@@ -890,24 -1049,33 +1050,33 @@@ ps-am
  
  uninstall-am:
  
- .MAKE: check-am install-am install-strip
- 
- .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
- 	clean-checkPROGRAMS clean-generic clean-libtool clean-local \
- 	ctags distclean distclean-compile distclean-generic \
- 	distclean-libtool distclean-tags distdir dvi dvi-am html \
- 	html-am info info-am install install-am install-data \
- 	install-data-am install-dvi install-dvi-am install-exec \
- 	install-exec-am install-html install-html-am install-info \
- 	install-info-am install-man install-pdf install-pdf-am \
- 	install-ps install-ps-am install-strip installcheck \
- 	installcheck-am installdirs maintainer-clean \
+ .MAKE: check-am check-html install-am install-strip recheck \
+ 	recheck-html
+ 
+ .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am check-html \
+ 	clean clean-checkPROGRAMS clean-generic clean-libtool \
+ 	clean-local ctags distclean distclean-compile \
+ 	distclean-generic distclean-libtool distclean-tags distdir dvi \
+ 	dvi-am html html-am info info-am install install-am \
+ 	install-data install-data-am install-dvi install-dvi-am \
+ 	install-exec install-exec-am install-html install-html-am \
+ 	install-info install-info-am install-man install-pdf \
+ 	install-pdf-am install-ps install-ps-am install-strip \
+ 	installcheck installcheck-am installdirs maintainer-clean \
  	maintainer-clean-generic mostlyclean mostlyclean-compile \
  	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- 	tags uninstall uninstall-am
- 
- 
- check_clamd.sh: $(FILES)
+ 	recheck recheck-html tags uninstall uninstall-am
+ 
+ 
+ check2_clamd.sh: $(FILES)
+ check3_clamd.sh: $(FILES)
+ check4_clamd.sh: $(FILES)
+ check5_clamd_vg.sh: $(FILES)
+ check6_clamd_vg.sh: $(FILES)
+ check7_clamd_vg.sh: $(FILES)
+ check8_clamd_hg.sh: $(FILES)
+ check9_clamd_hg.sh: $(FILES)
+ check10_clamd_hg.sh: $(FILES)
  
  $(FILES) :
  	cat $(SPLIT_DIR)/split.$@aa $(SPLIT_DIR)/split.$@ab > $@

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list