clamassassin-1.2.4/0000755000031000003100000000000010572715144013637 5ustar jlickcavemuckclamassassin-1.2.4/CHANGELOG0000444000031000003100000002040410572715144015047 0ustar jlickcavemuckCopyright (c) 2003-2007, James Lick All rights reserved. See LICENSE file for information on your legal rights to use this software. Version 1.2.4 - ClamAV 0.90 disabled the previously required --mbox option to clamscan, rendering older versions of clamassassin inoperable unless using clamdscan. This version has changed to the current documented options for both clamscan and clamdscan. In addition, this version now requires ClamAV 0.90 or higher to run. Automatic support for older ClamAV versions has been removed to streamline the code, though options remain to manually support older versions. Thanks to Paul Taylor, Michael Ossmann, and Basjan Kleyn for reporting the problem. Version 1.2.3 - Added error checking when temporary message file is made. Previously problems here would go undetected and cause empty or truncated messages being passed through, or silently disappearing if the filesystem were full or the file writing failed for some other reason. Thanks to Asheesh Laroia for reporting the problem. - Santiago Vila and Nick Price suggested that the configure.ac file be added to the distribution tar file so that distribution maintainers can more easily customize their install. - Santiago Vila requested that clean and distclean targets be added to the Makefile. Version 1.2.2 - Changed clamscanner options string to be set by the configure script. As part of this change, changed --disable-summary flag to --no-summary when clamscan is used because --disable-summary is being deprecated and may be removed. Also --mbox is not used when using clamdscan as that option is not needed. clamdscan still uses --disable-summary as despite the documentation, --no-summary doesn't work with clamdscan yet. - ClamAV version 0.80 no longer reports which program is being used (clamscan, clamdscan, etc.) when displaying the version string. Added code to have clamassassin add this back in. This defaults to on with ClamAV 0.80 and higher, devel, and unrecognized versions. The default is off for versions earlier than 0.80. As a side effect, echo was added as a prerequisite. - Added configure options --enable-name-adding and --disable-name-adding to override the default of whether the scanner name is added to the version header. - ClamAV version 0.80 reports the signature versions as part of the version string, so having clamassassin add it as well is redundant. Made it the default to not add it for 0.80 and higher, devel, and unrecognized versions. The default is off for versions earlier than 0.80. - Added configure options --enable-signature-version and --disable-signature-version to override the defaults of whether the signature versions should be reported. These changes were suggested quite a while ago by Dimitrios Michelinakis but gained new urgency when ClamAV 0.80 made it a requirement. - ClamAV version 0.80 uses a different version string format. Fixed configure to correctly parse the new version (and still parse the old). - Converted some repetitive tasks to shell functions to make things more modular and easy to change: error checking, exit cleanup, and creation of temp files. - Removed tr as a dependancy. Was replaced with a clever bit of sed that melts my brain when I try to think about it. Version 1.2.1 - Fixed bug that caused configure to fail when ClamAV 0.70 or older is installed. - Added ClamAV version checking in configure to check for compatibility. clamdscan will be disabled on incompatible versions. - Added --disable-version-check to skip compatibility checks. - Updated README to fully document compatibility. Version 1.2.0 - Converted to using gnu autoconf to make the "configure" script. Now all external pathnames are autodetected. The functionality of the old configure script was rewritten from scratch with similiar functionality as before. - In prior versions, the program name "ClamAssassin" was used in the X-Virus-Checker-Version header. For consistency with all other usage of the program name, this has been changed to all lower case. - --enable-subject-rewrite[=message] flag added to ./configure script to turn on Subject: header rewriting. A generic message will be used if one is not provided. - configure script now chooses alternate /tmp path via the TMP environment variable. - Now includes a simple Makefile so that people used to just doing "./configure ; make ; make install" will be happy. - It was reported by Mark Miksis that he was still experiencing the bug supposedly fixed in version 1.1.0 where the X-Virus-Report: header is set to 'OK'. The processing for the report header was completely rewritten in the process of fixing this bug finally. - In the above X-Virus-Report: header processing, usage of head and grep were eliminated from the script and tr was added as a requirement. - The X-Virus-Report: will now show if the message contains multiple infections. Unfortunately due to limitations in the current version of ClamAV, multiple infections are reported when using clamscan, but not clamdscan. - The signature versions are now included in the X-Virus-Checker-Version. This code is based on code by Robert Allerstorfer with some additional optimizations. This checks the actual signature files themselves, so there is a small possibility that clamd might not have the same versions loaded. Version 1.1.1 - With the 1.1.0 release, a problem cropped up with the paths to the common unix utilities. They were hardcoded to be in /bin which is true of many but not all systems. In particular, many Linux systems place the head utility in /usr/bin instead of /bin. There were also some reports of other path problems, but head seems to be the most common problem. Path to head changed to /usr/bin/head. This was reported by too many people to thanks individually. Version 1.1.0 - Changed file handling so that clamdscan could be used. (See README for requirements.) Too many people suggested this to acknowledge all of them. Thanks to all of them. Be sure to see the README to make sure your system is properly configured to use clamdscan. - Added -f flag to invocations of formail. This tells formail not to reformat certain headers and not to create a 'From ' line at the beginning. If this is not done, some mail systems such as cyrus would lose mail or be unable to display messages because of formatting problems. Thanks to Scott A. McIntyre for the suggestion. - Added X-Virus-Checker-Version header to include version information of the clamassassin script and which scanner and the version of ClamAV used. - Added option to rewrite the Subject: header with *****VIRUS***** at the front to warn users who manually sort mail, or use mail sorters that can't use arbitrary headers. This is similiar to SpamAssassin with the rewrite_subject setting on. Thanks to Tom Mollerus for the suggestion and sample code. - Added simple ./configure script to automatically set paths to formail, mktemp, and clamscan or clamdscan. Thanks to Andrej Kacian for the suggestion. - Previously the script had no error handling in the case that formail did not run properly. This most commonly would be due to misconfiguring the path for formail, so the automatic configuration in this version should help there. Nevertheless, formail could fail to run for other reasons and without any error checking this could lead to the message being lost. Not a good thing. clamassassin will now check if formail failed and if so it will exit with whatever code formail exited with. This will cause the message to be requeued or bounced, depending on the configuration of your MTA. Thanks to Jordan Russell for notifying me to the potential of the problem. - While fixing the error handling for formail errors, it was discovered that temp files may not be removed in some cases if the script exits with an error. This oversight was corrected. - During testing it was found that some viruses include more than one attachment in the message, which would cause some mishandling by clamassassin. While messages would properly be identified as infected, the X-Virus-Report line may only say 'OK', and non-compliant headers inserted after it. It has been recoded to show the first first infection detected. If there are multiple infections in different attachments, only the first will be shown. Please let me know if there's a strong need to have all infections reported, or if just one is sufficient. clamassassin-1.2.4/clamassassin.in0000444000031000003100000001376510572715144016662 0ustar jlickcavemuck#!/bin/sh # # $Id: clamassassin.in,v 1.44 2007/03/04 13:15:37 jlick Exp $ # # clamassassin # # Author: James Lick # Website: http://jameslick.com/clamassassin/ # # --- BEGIN LICENSE --- # # Copyright (c) 2003-2007, James Lick # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of James Lick nor the names of its contributors may # be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # --- END LICENSE --- # CONFIGURATION: # Configure your full path to where you want temporary files TMPPATH=@CONF_TMP@ # Modify Subject line with a header ala spamassassin with rewrite_subject on # You'll want to add a trailing space before the old subject SUBJECTHEAD="@CONF_SUBJECTHEAD@" # Configure your full path to formail FORMAIL=@CONF_FORMAIL@ # Configure your full path to clamscan or clamdscan # (If you use clamdscan, see the README for directions) CLAMSCAN=@CONF_CLAMSCANNER@ # Configure options passed to clamscanner CLAMSCANOPT="@CONF_CLAMSCANOPT@" # Configure flag to add clamscanner to version header ADDSCANNERFLAG=@CONF_ADDSCANNERFLAG@ # Configure the path to ClamAV's sigtool SIGTOOL=@CONF_SIGTOOL@ # Configure the directory where the virus signature files are stored SIGLOC=@CONF_SIGLOC@ # Configure whether or not the virus signature version is added # Default: 0.80 and higher: off, others: on SIGVERSFLAG=@CONF_SIGVERSFLAG@ # Configure your full path to mktemp MKTEMP=@CONF_MKTEMP@ # Paths for various basic unix utilities RM=@CONF_RM@ CAT=@CONF_CAT@ SED=@CONF_SED@ ECHO=@CONF_ECHO@ # END CONFIGURATION # DO NOT MAKE CHANGES PAST THIS LINE # Routine to cleanup and exit with an error code bail() { ${RM} -f ${MSGTMP} ${LOGTMP} exit ${1} } # Routine to bail if error code is passed bailiferr() { if [ ${1} != 0 ] then bail ${1} fi } # Make a temporary file, or bailout if it fails mktmp() { MKTMPFILE=`${MKTEMP} -q ${TMPPATH}/${1}.XXXXXXXXXX` # The usual method of bailing out when mktemp fails would cause mail to # bounce, so instead we add extra logic to have it pass the message # unfiltered intead if [ $? != 0 ] then ${FORMAIL} -f -I "X-Virus-Status: Failed" -I \ "X-Virus-Report: Internal error mktemp ${2} failed" \ -I "X-Virus-Checker-Version: ${VERSION}" bail $? fi } # make temporary file for message mktmp clamassassinmsg MSGTMP MSGTMP=${MKTMPFILE} # make temporary file for log mktmp clamassassinlog LOGTMP LOGTMP=${MKTMPFILE} # Store the message in the message tempfile for later processing ${CAT} > ${MSGTMP} bailiferr $? # Set version header string CLAMVERS=`${CLAMSCAN} -V --stdout` if [ ${ADDSCANNERFLAG} != 0 ] then SHORTCLAMSCAN=`${ECHO} ${CLAMSCAN} | ${SED} -e "s/.*\///"` CLAMVERS="${SHORTCLAMSCAN} / ${CLAMVERS}" fi if [ ${SIGVERSFLAG} != 0 ] then MAJOR=`${SIGTOOL} --stdout -i ${SIGLOC}/main.cvd \ | ${SED} -e "/^Version: /!d" -e "s/.* //"` MINOR=`${SIGTOOL} --stdout -i ${SIGLOC}/daily.cvd \ | ${SED} -e "/^Version: /!d" -e "s/.* //"` SIGVERS="${MAJOR}.${MINOR}" VERSION="@PACKAGE_STRING@ with ${CLAMVERS} signatures ${SIGVERS}" else VERSION="@PACKAGE_STRING@ with ${CLAMVERS}" fi # Have ClamAV check the message and save the simple results in the log # temp file ${CLAMSCAN} ${CLAMSCANOPT} - < ${MSGTMP} > ${LOGTMP} \ 2> /dev/null RESULT=$? # If the message is clean, clamscan exits with status 0 if [ ${RESULT} = 0 ] then # Spit out the message with a header indicating it is clean ${FORMAIL} -f -I "X-Virus-Status: No" -I "X-Virus-Report:" \ -I "X-Virus-Checker-Version: ${VERSION}" < ${MSGTMP} bailiferr $? else # If the result is 1, then a virus was detected if [ ${RESULT} = 1 ] then # Chop off the tempfile name off the virus message # This is a bit complex because there may be multiple status lines REASON=`${SED} -e 's/[^:]*: //' -e '/ FOUND$/!d' \ -e 's/ FOUND$/ FOUND /' < ${LOGTMP} | ${SED} -n -e 'H;${x;s/\n//g;p;}'` # Extract the subject so it can be modified if SUBJECTHEAD is set # Note that some versions of formail will add a leading space to the # subject line, so we strip off one leading space if present. SUBJECT=`${FORMAIL} -c -x "Subject:" < ${MSGTMP} | ${SED} -e "s/^ //"` # Spit out the message with the headers showing it is infected and how ${FORMAIL} -f -I "Subject: ${SUBJECTHEAD}${SUBJECT}" \ -I "X-Virus-Status: Yes" -I "X-Virus-Report: ${REASON}" \ -I "X-Virus-Checker-Version: ${VERSION}" < ${MSGTMP} bailiferr $? else # If the result was not 0 or 1 then some sort of error occured ${FORMAIL} -f -I "X-Virus-Status: Failed" -I \ "X-Virus-Report: ${CLAMSCAN} error ${RESULT}" \ -I "X-Virus-Checker-Version: ${VERSION}" < ${MSGTMP} bailiferr $? fi fi # Clean up the temp files bail 0 clamassassin-1.2.4/configure0000755000031000003100000024467710572715144015572 0ustar jlickcavemuck#! /bin/sh # From configure.ac Id: configure.ac.in. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for clamassassin 1.2.4. # # Report bugs to . # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME='clamassassin' PACKAGE_TARNAME='clamassassin' PACKAGE_VERSION='1.2.4' PACKAGE_STRING='clamassassin 1.2.4' PACKAGE_BUGREPORT='james.lick@gmail.com' ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CONF_RM CONF_CAT CONF_SED CONF_ECHO CONF_FORMAIL CONF_MKTEMP CONF_SIGTOOL CONF_CLAMSCAN CONF_CLAMSCANNER CONF_CLAMDSCAN CONF_CLAMSCANOPT CONF_SIGLOC CONF_SIGVERSFLAG CONF_ADDSCANNERFLAG CONF_TMP CONF_SUBJECTHEAD LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -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=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures clamassassin 1.2.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of clamassassin 1.2.4:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-clamdscan Force clamassassin to use clamdscan even if /tmp/clamd not found. --disable-clamdscan Force clamassassin not to use clamdscan even if /tmp/clamd found. --enable-version-check (default) Checks ClamAV version for compatibility. --disable-version-check Skips checking ClamAV version for compatibility. --enable-signature-version Turns on signature version reporting --disable-signature-version Turns off signature version reporting (default) --enable-name-adding Turns on adding of scanner name (default) --disable-name-adding Turns off adding of scanner name --enable-subject-rewrite[=message] When a virus is detected, rewrite Subject: header to be prefixed with *****VIRUS***** or [message] if specified --disable-subject-rewrite Do not do Subject: header rewriting (default) Report bugs to . _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF clamassassin configure 1.2.4 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by clamassassin $as_me 1.2.4, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_files="$ac_config_files clamassassin Makefile" # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CONF_RM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CONF_RM in [\\/]* | ?:[\\/]*) ac_cv_path_CONF_RM="$CONF_RM" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CONF_RM="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi CONF_RM=$ac_cv_path_CONF_RM if test -n "$CONF_RM"; then echo "$as_me:$LINENO: result: $CONF_RM" >&5 echo "${ECHO_T}$CONF_RM" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$CONF_RM" = "" then { { echo "$as_me:$LINENO: error: Required utility rm not found." >&5 echo "$as_me: error: Required utility rm not found." >&2;} { (exit 1); exit 1; }; } fi # Extract the first word of "cat", so it can be a program name with args. set dummy cat; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CONF_CAT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CONF_CAT in [\\/]* | ?:[\\/]*) ac_cv_path_CONF_CAT="$CONF_CAT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CONF_CAT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi CONF_CAT=$ac_cv_path_CONF_CAT if test -n "$CONF_CAT"; then echo "$as_me:$LINENO: result: $CONF_CAT" >&5 echo "${ECHO_T}$CONF_CAT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$CONF_CAT" = "" then { { echo "$as_me:$LINENO: error: Required utility cat not found." >&5 echo "$as_me: error: Required utility cat not found." >&2;} { (exit 1); exit 1; }; } fi # Extract the first word of "sed", so it can be a program name with args. set dummy sed; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CONF_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CONF_SED in [\\/]* | ?:[\\/]*) ac_cv_path_CONF_SED="$CONF_SED" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CONF_SED="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi CONF_SED=$ac_cv_path_CONF_SED if test -n "$CONF_SED"; then echo "$as_me:$LINENO: result: $CONF_SED" >&5 echo "${ECHO_T}$CONF_SED" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$CONF_SED" = "" then { { echo "$as_me:$LINENO: error: Required utility sed not found." >&5 echo "$as_me: error: Required utility sed not found." >&2;} { (exit 1); exit 1; }; } fi # Extract the first word of "echo", so it can be a program name with args. set dummy echo; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CONF_ECHO+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CONF_ECHO in [\\/]* | ?:[\\/]*) ac_cv_path_CONF_ECHO="$CONF_ECHO" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CONF_ECHO="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi CONF_ECHO=$ac_cv_path_CONF_ECHO if test -n "$CONF_ECHO"; then echo "$as_me:$LINENO: result: $CONF_ECHO" >&5 echo "${ECHO_T}$CONF_ECHO" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$CONF_ECHO" = "" then { { echo "$as_me:$LINENO: error: Required utility echo not found." >&5 echo "$as_me: error: Required utility echo not found." >&2;} { (exit 1); exit 1; }; } fi # Extract the first word of "formail", so it can be a program name with args. set dummy formail; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CONF_FORMAIL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CONF_FORMAIL in [\\/]* | ?:[\\/]*) ac_cv_path_CONF_FORMAIL="$CONF_FORMAIL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CONF_FORMAIL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi CONF_FORMAIL=$ac_cv_path_CONF_FORMAIL if test -n "$CONF_FORMAIL"; then echo "$as_me:$LINENO: result: $CONF_FORMAIL" >&5 echo "${ECHO_T}$CONF_FORMAIL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$CONF_FORMAIL" = "" then { { echo "$as_me:$LINENO: error: Required utility formail not found." >&5 echo "$as_me: error: Required utility formail not found." >&2;} { (exit 1); exit 1; }; } fi # Extract the first word of "mktemp", so it can be a program name with args. set dummy mktemp; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CONF_MKTEMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CONF_MKTEMP in [\\/]* | ?:[\\/]*) ac_cv_path_CONF_MKTEMP="$CONF_MKTEMP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CONF_MKTEMP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi CONF_MKTEMP=$ac_cv_path_CONF_MKTEMP if test -n "$CONF_MKTEMP"; then echo "$as_me:$LINENO: result: $CONF_MKTEMP" >&5 echo "${ECHO_T}$CONF_MKTEMP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$CONF_MKTEMP" = "" then { { echo "$as_me:$LINENO: error: Required utility mktemp not found." >&5 echo "$as_me: error: Required utility mktemp not found." >&2;} { (exit 1); exit 1; }; } fi # Extract the first word of "sigtool", so it can be a program name with args. set dummy sigtool; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CONF_SIGTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CONF_SIGTOOL in [\\/]* | ?:[\\/]*) ac_cv_path_CONF_SIGTOOL="$CONF_SIGTOOL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CONF_SIGTOOL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi CONF_SIGTOOL=$ac_cv_path_CONF_SIGTOOL if test -n "$CONF_SIGTOOL"; then echo "$as_me:$LINENO: result: $CONF_SIGTOOL" >&5 echo "${ECHO_T}$CONF_SIGTOOL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$CONF_SIGTOOL" = "" then { { echo "$as_me:$LINENO: error: Required utility sigtool not found." >&5 echo "$as_me: error: Required utility sigtool not found." >&2;} { (exit 1); exit 1; }; } fi # Extract the first word of "clamscan", so it can be a program name with args. set dummy clamscan; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CONF_CLAMSCAN+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CONF_CLAMSCAN in [\\/]* | ?:[\\/]*) ac_cv_path_CONF_CLAMSCAN="$CONF_CLAMSCAN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CONF_CLAMSCAN="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi CONF_CLAMSCAN=$ac_cv_path_CONF_CLAMSCAN if test -n "$CONF_CLAMSCAN"; then echo "$as_me:$LINENO: result: $CONF_CLAMSCAN" >&5 echo "${ECHO_T}$CONF_CLAMSCAN" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$CONF_CLAMSCAN" = "" then { { echo "$as_me:$LINENO: error: Required utility clamscan not found." >&5 echo "$as_me: error: Required utility clamscan not found." >&2;} { (exit 1); exit 1; }; } fi CONF_CLAMSCANNER=${CONF_CLAMSCAN} # Extract the first word of "clamdscan", so it can be a program name with args. set dummy clamdscan; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CONF_CLAMDSCAN+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CONF_CLAMDSCAN in [\\/]* | ?:[\\/]*) ac_cv_path_CONF_CLAMDSCAN="$CONF_CLAMDSCAN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CONF_CLAMDSCAN="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi CONF_CLAMDSCAN=$ac_cv_path_CONF_CLAMDSCAN if test -n "$CONF_CLAMDSCAN"; then echo "$as_me:$LINENO: result: $CONF_CLAMDSCAN" >&5 echo "${ECHO_T}$CONF_CLAMDSCAN" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi echo "$as_me:$LINENO: checking for /tmp/clamd" >&5 echo $ECHO_N "checking for /tmp/clamd... $ECHO_C" >&6 if test "${ac_cv_file__tmp_clamd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/tmp/clamd"; then ac_cv_file__tmp_clamd=yes else ac_cv_file__tmp_clamd=no fi fi echo "$as_me:$LINENO: result: $ac_cv_file__tmp_clamd" >&5 echo "${ECHO_T}$ac_cv_file__tmp_clamd" >&6 if test $ac_cv_file__tmp_clamd = yes; then cat >>confdefs.h <<_ACEOF #define HAVE__TMP_CLAMD 1 _ACEOF fi if test "$ac_cv_file__tmp_clamd" = "yes" then if test "$CONF_CLAMDSCAN" = "" then { echo "$as_me:$LINENO: /tmp/clamd found, but can't find clamdscan" >&5 echo "$as_me: /tmp/clamd found, but can't find clamdscan" >&6;} else CONF_CLAMSCANNER=${CONF_CLAMDSCAN} fi else CONF_CLAMSCANNER=${CONF_CLAMSCAN} fi # Check whether --enable-clamdscan or --disable-clamdscan was given. if test "${enable_clamdscan+set}" = set; then enableval="$enable_clamdscan" case $enableval in no) CONF_CLAMSCANNER=${CONF_CLAMSCAN} ;; *) if test "$CONF_CLAMDSCAN" = "" then { echo "$as_me:$LINENO: --enable-clamdscan requested, but can't find clamdscan" >&5 echo "$as_me: --enable-clamdscan requested, but can't find clamdscan" >&6;} else CONF_CLAMSCANNER=${CONF_CLAMDSCAN} fi ;; esac fi; DO_VERSION_CHECK="yes"; # Check whether --enable-version-check or --disable-version-check was given. if test "${enable_version_check+set}" = set; then enableval="$enable_version_check" if test "$enableval" = "no" then DO_VERSION_CHECK="no"; fi fi; if test "${DO_VERSION_CHECK}" = "yes" then CLAMVERS=`${CONF_CLAMSCAN} -V --stdout | ${CONF_SED} -e "s/.*ClamAV //" \ -e "s/version //" -e "s/\/.*//"` CLAMVERSMAJ=`${CONF_ECHO} ${CLAMVERS} | ${CONF_SED} -e "s/[-\.].*//"` CLAMVERSMIN=`${CONF_ECHO} ${CLAMVERS} | \ ${CONF_SED} -e "s/[^-\.]*[-\.]*//" -e "s/[^0-9].*//"` CLAMVERSEXT=`${CONF_ECHO} ${CLAMVERS} | \ ${CONF_SED} -e "s/[^-\.]*[-\.]*//" \ -e "s/[0-9]*\([^0-9]*\)/\1/" -e "s/^[-\.]//"` { echo "$as_me:$LINENO: ClamAV version ${CLAMVERS} detected." >&5 echo "$as_me: ClamAV version ${CLAMVERS} detected." >&6;} # AC_MSG_NOTICE([maj ${CLAMVERSMAJ} min ${CLAMVERSMIN} ext ${CLAMVERSEXT}]) case ${CLAMVERSMAJ} in devel) { echo "$as_me:$LINENO: WARNING: You are running a devel version of ClamAV. I guess you know what you're doing" >&5 echo "$as_me: WARNING: You are running a devel version of ClamAV. I guess you know what you're doing" >&2;} ;; 0) if test ${CLAMVERSMIN} -lt 90 then { { echo "$as_me:$LINENO: error: clamassassin requires ClamAV 0.90 or higher" >&5 echo "$as_me: error: clamassassin requires ClamAV 0.90 or higher" >&2;} { (exit 1); exit 1; }; } fi ;; esac fi { echo "$as_me:$LINENO: Using scanner ${CONF_CLAMSCANNER}" >&5 echo "$as_me: Using scanner ${CONF_CLAMSCANNER}" >&6;} CONF_CLAMSCANOPT="--no-summary --stdout" { echo "$as_me:$LINENO: Using scanner options ${CONF_CLAMSCANOPT}" >&5 echo "$as_me: Using scanner options ${CONF_CLAMSCANOPT}" >&6;} SIGLOC=`${CONF_CLAMSCAN} --debug --tempdir=/dev/null /dev/null 2>&1 | ${CONF_SED} -e "/^LibClamAV debug: Loading databases from /!d" -e "s/.* //" -e q` if test "$SIGLOC" = "" then { { echo "$as_me:$LINENO: error: Cannot determine virus signature file directory" >&5 echo "$as_me: error: Cannot determine virus signature file directory" >&2;} { (exit 1); exit 1; }; } else { echo "$as_me:$LINENO: Using virus signature file dir ${SIGLOC}" >&5 echo "$as_me: Using virus signature file dir ${SIGLOC}" >&6;} CONF_SIGLOC=${SIGLOC} fi CONF_SIGVERSFLAG=0 # Check whether --enable-signature-version or --disable-signature-version was given. if test "${enable_signature_version+set}" = set; then enableval="$enable_signature_version" if test "$enableval" = "no" then CONF_SIGVERSFLAG=0 else CONF_SIGVERSFLAG=1 fi fi; if test ${CONF_SIGVERSFLAG} -eq 1 then { echo "$as_me:$LINENO: Signature version reporting is on." >&5 echo "$as_me: Signature version reporting is on." >&6;} else { echo "$as_me:$LINENO: Signature version reporting is off." >&5 echo "$as_me: Signature version reporting is off." >&6;} fi CONF_ADDSCANNERFLAG=1 # Check whether --enable-name-adding or --disable-name-adding was given. if test "${enable_name_adding+set}" = set; then enableval="$enable_name_adding" if test "$enableval" = "no" then CONF_ADDSCANNERFLAG=0 else CONF_ADDSCANNERFLAG=1 fi fi; if test ${CONF_ADDSCANNERFLAG} -eq 1 then { echo "$as_me:$LINENO: Scanner name adding is on." >&5 echo "$as_me: Scanner name adding is on." >&6;} else { echo "$as_me:$LINENO: Scanner name adding is off." >&5 echo "$as_me: Scanner name adding is off." >&6;} fi if test "$TMP" = "" then CONF_TMP=/tmp else CONF_TMP=$TMP fi { echo "$as_me:$LINENO: Using temporary directory $CONF_TMP" >&5 echo "$as_me: Using temporary directory $CONF_TMP" >&6;} # Check whether --enable-subject_rewrite or --disable-subject_rewrite was given. if test "${enable_subject_rewrite+set}" = set; then enableval="$enable_subject_rewrite" case $enableval in yes) SUBJECTHEAD="*****VIRUS*****" ;; no) SUBJECTHEAD="" ;; *) SUBJECTHEAD=$enableval ;; esac else SUBJECTHEAD="" fi; if test "$SUBJECTHEAD" = "" then { echo "$as_me:$LINENO: Subject header rewriting is off." >&5 echo "$as_me: Subject header rewriting is off." >&6;} else { echo "$as_me:$LINENO: Subject header rewriting is on: $SUBJECTHEAD" >&5 echo "$as_me: Subject header rewriting is on: $SUBJECTHEAD" >&6;} SUBJECTHEAD="${SUBJECTHEAD} " CONF_SUBJECTHEAD=$SUBJECTHEAD fi 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, don't put newlines in cache variables' values. # 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. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *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 \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!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" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" 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}' # 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 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then we branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. cat >confdef2opt.sed <<\_ACEOF t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g s,\$,$$,g p _ACEOF # We use echo to avoid assuming a particular line-breaking character. # The extra dot is to prevent the shell from consuming trailing # line-breaks from the sub-command output. A line-break within # single-quotes doesn't work because, if this script is created in a # platform that uses two characters for line-breaks (e.g., DOS), tr # would break. ac_LF_and_DOT=`echo; echo .` DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` rm -f confdef2opt.sed 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_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $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} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by clamassassin $as_me 1.2.4, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet 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 Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ clamassassin config.status 1.2.4 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. 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 ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; 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 if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "clamassassin" ) CONFIG_FILES="$CONFIG_FILES clamassassin" ;; "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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 fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@CONF_RM@,$CONF_RM,;t t s,@CONF_CAT@,$CONF_CAT,;t t s,@CONF_SED@,$CONF_SED,;t t s,@CONF_ECHO@,$CONF_ECHO,;t t s,@CONF_FORMAIL@,$CONF_FORMAIL,;t t s,@CONF_MKTEMP@,$CONF_MKTEMP,;t t s,@CONF_SIGTOOL@,$CONF_SIGTOOL,;t t s,@CONF_CLAMSCAN@,$CONF_CLAMSCAN,;t t s,@CONF_CLAMSCANNER@,$CONF_CLAMSCANNER,;t t s,@CONF_CLAMDSCAN@,$CONF_CLAMDSCAN,;t t s,@CONF_CLAMSCANOPT@,$CONF_CLAMSCANOPT,;t t s,@CONF_SIGLOC@,$CONF_SIGLOC,;t t s,@CONF_SIGVERSFLAG@,$CONF_SIGVERSFLAG,;t t s,@CONF_ADDSCANNERFLAG@,$CONF_ADDSCANNERFLAG,;t t s,@CONF_TMP@,$CONF_TMP,;t t s,@CONF_SUBJECTHEAD@,$CONF_SUBJECTHEAD,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # 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. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi # Run the commands associated with the file. case $ac_file in clamassassin ) chmod 555 clamassassin ;; Makefile ) chmod 555 clamassassin ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # 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 || { (exit 1); exit 1; } fi clamassassin-1.2.4/configure.ac0000644000031000003100000001270410572715144016131 0ustar jlickcavemuckAC_INIT(clamassassin, 1.2.4, james.lick@gmail.com) AC_REVISION($Id: configure.ac.in,v 1.53 2007/03/04 13:02:44 jlick Exp $) AC_CONFIG_FILES([clamassassin Makefile],[chmod 555 clamassassin]) AC_PATH_PROG(CONF_RM, rm) if test "$CONF_RM" = "" then AC_MSG_ERROR([Required utility rm not found.]) fi AC_PATH_PROG(CONF_CAT, cat) if test "$CONF_CAT" = "" then AC_MSG_ERROR([Required utility cat not found.]) fi AC_PATH_PROG(CONF_SED, sed) if test "$CONF_SED" = "" then AC_MSG_ERROR([Required utility sed not found.]) fi AC_PATH_PROG(CONF_ECHO, echo) if test "$CONF_ECHO" = "" then AC_MSG_ERROR([Required utility echo not found.]) fi AC_PATH_PROG(CONF_FORMAIL, formail) if test "$CONF_FORMAIL" = "" then AC_MSG_ERROR([Required utility formail not found.]) fi AC_PATH_PROG(CONF_MKTEMP, mktemp) if test "$CONF_MKTEMP" = "" then AC_MSG_ERROR([Required utility mktemp not found.]) fi AC_PATH_PROG(CONF_SIGTOOL, sigtool) if test "$CONF_SIGTOOL" = "" then AC_MSG_ERROR([Required utility sigtool not found.]) fi AC_PATH_PROG(CONF_CLAMSCAN, clamscan) if test "$CONF_CLAMSCAN" = "" then AC_MSG_ERROR([Required utility clamscan not found.]) fi AC_SUBST(CONF_CLAMSCANNER,${CONF_CLAMSCAN}) AC_PATH_PROG(CONF_CLAMDSCAN, clamdscan) AC_CHECK_FILES(/tmp/clamd) if test "$ac_cv_file__tmp_clamd" = "yes" then if test "$CONF_CLAMDSCAN" = "" then AC_MSG_NOTICE([/tmp/clamd found, but can't find clamdscan]) else AC_SUBST(CONF_CLAMSCANNER,${CONF_CLAMDSCAN}) fi else AC_SUBST(CONF_CLAMSCANNER,${CONF_CLAMSCAN}) fi AC_ARG_ENABLE(clamdscan, [ --enable-clamdscan Force clamassassin to use clamdscan even if /tmp/clamd not found. --disable-clamdscan Force clamassassin not to use clamdscan even if /tmp/clamd found.], [ case $enableval in no) AC_SUBST(CONF_CLAMSCANNER,${CONF_CLAMSCAN}) ;; *) if test "$CONF_CLAMDSCAN" = "" then AC_MSG_NOTICE([--enable-clamdscan requested, but can't find clamdscan]) else AC_SUBST(CONF_CLAMSCANNER,${CONF_CLAMDSCAN}) fi ;; esac ]) DO_VERSION_CHECK="yes"; AC_ARG_ENABLE(version-check, [ --enable-version-check (default) Checks ClamAV version for compatibility. --disable-version-check Skips checking ClamAV version for compatibility.], [ if test "$enableval" = "no" then DO_VERSION_CHECK="no"; fi ]) if test "${DO_VERSION_CHECK}" = "yes" then CLAMVERS=`${CONF_CLAMSCAN} -V --stdout | ${CONF_SED} -e "s/.*ClamAV //" \ -e "s/version //" -e "s/\/.*//"` CLAMVERSMAJ=`${CONF_ECHO} ${CLAMVERS} | ${CONF_SED} -e "s/[[-\.]].*//"` CLAMVERSMIN=`${CONF_ECHO} ${CLAMVERS} | \ ${CONF_SED} -e "s/[[^-\.]]*[[-\.]]*//" -e "s/[[^0-9]].*//"` CLAMVERSEXT=`${CONF_ECHO} ${CLAMVERS} | \ ${CONF_SED} -e "s/[[^-\.]]*[[-\.]]*//" \ -e "s/[[0-9]]*\([[^0-9]]*\)/\1/" -e "s/^[[-\.]]//"` AC_MSG_NOTICE([ClamAV version ${CLAMVERS} detected.]) # AC_MSG_NOTICE([maj ${CLAMVERSMAJ} min ${CLAMVERSMIN} ext ${CLAMVERSEXT}]) case ${CLAMVERSMAJ} in devel) AC_MSG_WARN([You are running a devel version of ClamAV. I guess you know what you're doing]) ;; 0) if test ${CLAMVERSMIN} -lt 90 then AC_MSG_ERROR([clamassassin requires ClamAV 0.90 or higher]) fi ;; esac fi AC_MSG_NOTICE([Using scanner ${CONF_CLAMSCANNER}]) AC_SUBST(CONF_CLAMSCANOPT,"--no-summary --stdout") AC_MSG_NOTICE([Using scanner options ${CONF_CLAMSCANOPT}]) SIGLOC=`${CONF_CLAMSCAN} --debug --tempdir=/dev/null /dev/null 2>&1 | ${CONF_SED} -e "/^LibClamAV debug: Loading databases from /!d" -e "s/.* //" -e q` if test "$SIGLOC" = "" then AC_MSG_ERROR([Cannot determine virus signature file directory]) else AC_MSG_NOTICE([Using virus signature file dir ${SIGLOC}]) AC_SUBST(CONF_SIGLOC,${SIGLOC}) fi AC_SUBST(CONF_SIGVERSFLAG,0) AC_ARG_ENABLE(signature-version, [ --enable-signature-version Turns on signature version reporting --disable-signature-version Turns off signature version reporting (default)], [ if test "$enableval" = "no" then AC_SUBST(CONF_SIGVERSFLAG,0) else AC_SUBST(CONF_SIGVERSFLAG,1) fi ]) if test ${CONF_SIGVERSFLAG} -eq 1 then AC_MSG_NOTICE([Signature version reporting is on.]) else AC_MSG_NOTICE([Signature version reporting is off.]) fi AC_SUBST(CONF_ADDSCANNERFLAG,1) AC_ARG_ENABLE(name-adding, [ --enable-name-adding Turns on adding of scanner name (default) --disable-name-adding Turns off adding of scanner name], [ if test "$enableval" = "no" then AC_SUBST(CONF_ADDSCANNERFLAG,0) else AC_SUBST(CONF_ADDSCANNERFLAG,1) fi ]) if test ${CONF_ADDSCANNERFLAG} -eq 1 then AC_MSG_NOTICE([Scanner name adding is on.]) else AC_MSG_NOTICE([Scanner name adding is off.]) fi if test "$TMP" = "" then AC_SUBST(CONF_TMP,/tmp) else AC_SUBST(CONF_TMP,$TMP) fi AC_MSG_NOTICE([Using temporary directory $CONF_TMP]) AC_ARG_ENABLE(subject_rewrite, [ --enable-subject-rewrite[[=message]] When a virus is detected, rewrite Subject: header to be prefixed with *****VIRUS***** or [[message]] if specified --disable-subject-rewrite Do not do Subject: header rewriting (default)], [ case $enableval in yes) SUBJECTHEAD="*****VIRUS*****" ;; no) SUBJECTHEAD="" ;; *) SUBJECTHEAD=$enableval ;; esac ],[ SUBJECTHEAD="" ]) if test "$SUBJECTHEAD" = "" then AC_MSG_NOTICE([Subject header rewriting is off.]) else AC_MSG_NOTICE([Subject header rewriting is on: $SUBJECTHEAD]) SUBJECTHEAD="${SUBJECTHEAD} " AC_SUBST(CONF_SUBJECTHEAD,$SUBJECTHEAD) fi AC_OUTPUT() clamassassin-1.2.4/LICENSE0000444000031000003100000000275510572715144014653 0ustar jlickcavemuckLicense for use of clamassassin Copyright (c) 2003-2007, James Lick All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of James Lick nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. clamassassin-1.2.4/Makefile.in0000444000031000003100000000361710572715144015711 0ustar jlickcavemuck# # clamassassin makefile # # this is pretty simple since it doesn't need to make anything, just install # # --- BEGIN LICENSE --- # # Copyright (c) 2003-2007, James Lick # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of James Lick nor the names of its contributors may # be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # --- END LICENSE --- bindir= @bindir@ exec_prefix= @exec_prefix@ prefix= @prefix@ all: install: cp -f clamassassin ${bindir} chmod 555 ${bindir}/clamassassin clean: rm -f clamassassin distclean: rm -f Makefile clamassassin config.status config.log clamassassin-1.2.4/README0000644000031000003100000003211010572715144014514 0ustar jlickcavemuckclamassassin 1.2.4 Author: James Lick Website: http://jameslick.com/clamassassin/ Announcement Mailing List: http://lists.jameslick.com/mailman/listinfo/clamassassin-announce Discussion Mailing List: http://lists.jameslick.com/mailman/listinfo/clamassassin-discuss Copyright (c) 2003-2007, James Lick All rights reserved. See LICENSE file for information on your legal rights to use this software. clamassassin is a simple script for virus scanning an e-mail message as a filter. If a message is virus infected, the X-Virus-Status header is set to Yes and the X-Virus-Report header is set to the virus(es) found. If the message is fine, it is passed through with X-Virus-Status set to No. If something goes wrong, X-Virus-Status is set to Failed and X-Virus-Report contains a message indicating the problem. This can mean that the script could not create tempfiles, or some internal error occurred in ClamAV. The latter case has been seen on some spam messages with malformed headers when using older versions of ClamAV, but is more often due to a ClamAV misconfiguration. An X-Virus-Checker-Version will be added to all messages showing the version of clamassassin and ClamAV which were used, whether clamscan or clamdscan is being used, as well as the version of the virus signature files. If any of the headers clamassassin uses already exist on the incoming message, they will be removed or replaced. This is to avoid your sorting rules from being fooled by bogus headers. Only infected messages or messages which failed to scan will have an X-Virus-Report header. You also have the option of enabling subject rewriting so that the subject is prefixed with a string such as '*****VIRUS*****'. This is useful for users who cannot use folders, cannot sort their email in their mail reader, whose mail reader sorting can't use arbitrary headers such as X-Virus-Status, or for those dangerous individuals who insist that none of their mail be discarded or altered. This function is similiar to SpamAssassin's rewrite_subject option. This is off by default but can be set by using the --enable-subject-rewrite option during configuration as documented below. This is intended to act much like spamassassin does. This makes it possible to plug it into a procmail or other filter quite easily. If you've already set up a system to use spamassassin, you can easily use similiar procedures to implement clamassassin. REQUIREMENTS: A unix-like system. ClamAV: http://www.clamav.net/ Version 0.90 or higher is required. formail (included in procmail): http://www.procmail.org/ mktemp: http://www.mktemp.org/mktemp/ formail and mktemp are already installed on many systems, but not on some proprietary systems such as Solaris. The following standard unix utilities are also required: rm, cat, echo and sed. It's very rare not to have these on any kind of unix-like system. Starting with clamassassin 1.2.4, the minimum required ClamAV version is 0.90. In the past clamassassin tried to accommodate older versions of ClamAV. However, it is not possible to adequately protect your system when running old versions of ClamAV, and removing support for obsolete versions greatly simplifies the clamassassin code. In general, you are highly encouraged to keep ClamAV upgraded to the latest stable version at all times. Older versions are unable to detect some forms of the newer viruses. At the time of this release, 0.90 or higher is the recommended version of ClamAV. Check the clamassassin website for details on any compatibility problems with versions newer than this. There are no known compatibility problems with any of the other required utilities. If you discover any issues, please let the author know. clamassassin is developed and tested on Solaris 10, but should work on any unix-like system which meet the requirements above. It has been reported to work on various versions of Unix, Linux, and BSD platforms. Please let me know which platforms you successfully run clamasassin on by sending me the output of the 'uname -a' command. clamassassin is Made in Taiwan. QUICK INSTALL GUIDE: Most people will simply need to do: ./configure make install Then setup your procmail rc files as below. If you need to do something more complicated, read on: CONFIGURATION: With version 1.2.0 and later, you must use automatic configuration first. Every effort has been made to ensure that configurable options are available through the automatic configuration process. If for some reason you still need to make changes, run the automatic configuration first, then make your changes in the resulting clamassassin script. Run './configure' which will try to figure out where things are installed based on your path. It will use clamdscan instead of clamscan if it sees /tmp/clamd. Make sure to read the notes below on using clamdscan to make sure your system is configured properly. If you want to force clamdscan to be used, or force it not to be used, you can try the following options to configure: --enable-clamdscan Force clamassassin to use clamdscan even if /tmp/clamd not found. --disable-clamdscan Force clamassassin not to use clamdscan even if /tmp/clamd found. If the configure script doesn't find the preferred location of your system utilities, try checking your shell's path setting. Changing the order of directories in your path may result in the desired location being found. clamassassin uses a temporary directory to store some files during processing. Normally this is the /tmp directory, and in most cases this is the optimal choice. In some cases you may choose to change this for various reasons. To do so, set the TMP environment variable to the directory you wish to use. This directory will need to be writable by whichever user the script is run as. By default, configure will set things to install in /usr/local/bin. If you would like to install elsewhere, use the --prefix or --bindir options to configure. For example, to install in /usr/bin, use one of the following options: --prefix=/usr or --bindir=/usr/bin To enable subject header rewriting use these flags when running configure: --enable-subject-rewrite[=message] When a virus is detected, rewrite Subject: header to be prefixed with *****VIRUS***** or [message] if specified --disable-subject-rewrite Do not do Subject: header rewriting (default) Starting with version 1.2.1, the configure script will detect the ClamAV version and make sure it is compatible with clamassassin. Currently clamassassin requires ClamAV 0.90 or higher. You can disable this version checking if it causes problems, but you are highly encouraged not to: --enable-version-check (default) Checks ClamAV version for compatibility. --disable-version-check Skips checking ClamAV version for compatibility. With ClamAV 0.80 and higher, the version of the signature files is included in the version string. Previously ClamAV did not report the signature versions, so clamassassin had to determine these and add it to the X-Virus-Checker-Version header. The current default for clamassassin is not to add the signature version itself. If for some reason the default is incorrect, you can use the following configuration options: --enable-signature-version Turns on signature version reporting --disable-signature-version Turns off signature version reporting (default) Also with ClamAV 0.80 and higher, the version string no longer includes the command being used (clamscan, clamdscan, etc.) in the version string. clamassassin will add this back into the version string by default. If for some reason the default setting is incorrect, you can use the following configuration options: --enable-name-adding Turns on adding of scanner name (default) --disable-name-adding Turns off adding of scanner name If you need more assistance, run './configure --help' for a complete list of options. Please note that not all options are applicable to clamassassin. If the paths detected are incorrect, or you wish to make other changes, you can edit the 'clamassassin' file after running './configure'. I've tried to make everything I could think of configurable using the configure script, so if you have to edit something manually, please send me a suggestion to make that configurable. INSTALLATION: When you are satisfied with the results, run 'make install'. In most cases you will need to run this command as root, or some other priveleged user. PROCMAIL: This script will most commonly be used as a filter in procmail. It is beyond the scope of this document to explain how to setup procmail, so this assumes that you already are familiar with it. To pass your mail through clamassassin, add the following command to your procmail rc file: :0fw | /usr/local/bin/clamassassin If you installed the program elsewhere, change the path. The above will scan the mesage for viruses and add the headers X-Virus-Status and X-Virus-Report as appropriate. Procmail then continues processing the message as normal. Nothing else will happen unless you add additional rules to sort or discard detected viruses. To do this, you might do the following as the next procmail rule: :0: * ^X-Virus-Status: Yes IN.virus This will sort any mail detected as a virus to the "IN.virus" mail folder. If you want to destroy such messages altogether, change IN.virus to /dev/null. I encourage you to test the filter thoroughly before discarding messages. NOTE: DO NOT set up rules to bounce viruses or warning messages back to the sender. Nearly all modern viruses use forged mail headers, meaning the sender noted on the message has nothing to do with it. Sending a warning to them does nothing but annoy an innocent party. I highly recommend inserting the above rules FIRST in your procmail filters. This is to ensure that viruses aren't inadvertently whitelisted later in your sorting rules. Remember, even if a message looks like it comes from a known friend or mailing list, it could be a virus in disguise. I've been running this on my mail for months now and it has never given a false positive on an infected email. ADVANCED PROCMAIL: David Hiebert wrote in to suggest a procmail recipe that only checks MIME messages for viruses. After reminding him that some viruses (Happy99 and MyParty) used uuencoded files to propagate, he added those to his recipe. I highly recommend scanning ALL messages for viruses, as there is no telling whether future viruses will propagate using alternative methods. If you have limited resources, look into using clamdscan first, as this saves tremendous amounts of CPU. If you still need to optimize things further, you may find this recipe useful to cut down on the messages scanned: :0fBHw * ^Content\-(?:Disposition|Transfer-Encoding|Type)\: (?:attachment|base64|multipart) | /usr/local/bin/clamassassin :0fBHw * ^begin [0-9]+ | /usr/local/bin/clamassassin :0: * ^X-Virus-Status: Yes IN.virus Thanks to David for supplying the sample recipe. USING CLAMDSCAN: ClamAV can do virus scanning using a client/server model. This greatly increases the efficiency of scanning messages, as you avoid startup overhead. To use this feature, you must enable clamd to run as a daemon process, then use clamdscan instead of clamscan as your virus scanner. Here are some things to check to make sure clamdscan works correctly: 1) Make sure clamd is running 2) Make sure clamd starts on bootup before your mail server does 3) Make sure the ScanMail option is enabled in clamd.conf (or in clamav.conf in older versions of ClamAV) 4) Make sure freshclam.conf is configured to notify the daemon when updates are made. 5) If you use TCP sockets instead of /tmp/clamd as a socket, the automatic configuration may not use clamdscan by default. Try using the --enable-clamdscan flag when running configure. NOTES: Steve Johnson reported a problem where temp files were not deleted on certain debian systems due to some problems with the rm command. Apparently the root cause is a version mismatch between the binutils package and the system shared libraries. Because of limitations in ClamAV, only the first infection found in any message will be reported when using clamdscan. Reporting of multiple infections in one message only works properly when using clamscan. This capability also varies depending on the version of ClamAV installed. In some cases, the virus signature versions are pulled out of the signature files themselves. If you use clamdscan there is a small chance that the versions used by clamd are not the same. Gary Weinfurther reports that his web hoster has restricted the use of /bin/sh, though /bin/bash works. You can manually edit the configure script and the clamassassin script to use /bin/bash instead in this situation. ACKNOWLEDGEMENTS: Since releasing clamassassin, I've received many emails with suggestions. Those that have led to improvements in later versions have been acknowledged where possible in this README or the CHANGELOG file. Thanks also to everyone who wrote in who may not have been mentioned. You all helped make the improvements in this version. PROBLEMS, COMMENTS, ETC: Please send feedback to the author above.