Browse code

backport changes for clamav-0.75

git-svn-id: file:///var/lib/svn/clamav-devel/branches/stable@2765 77e5149b-7576-45b1-b177-96237e5ba77b

Sven Strickroth authored on 2007/02/18 22:58:55
Showing 147 changed files
... ...
@@ -1,3 +1,25 @@
1
+Thu Jul 22 21:31:41 CEST 2004
2
+-----------------------------
3
+  V 0.75, backported changes:
4
+
5
+  * clamav-milter: Use gethostbyname_r when available
6
+  * clamav-milter: Add mutex around gethostbyname
7
+  * clamav-milter: Add sanity check to clamfi_connect()
8
+  * libclamav/message.c: Code tidy - remove overlapping strcpy
9
+  * libclamav: Some MyDoom.I were getting through
10
+  * clamav-milter: Added --dont-wait and --advisory options
11
+  * libclamav/mbox.c: Better handling of Gibe.3 boundary exploit improves
12
+		      the speed of scanning other emails
13
+  * clamdscan: fix bug (introduced in -20040622) in stream scanning in TCP
14
+               mode. Patch by Piotr Gackiewicz <gacek*intertele.pl>.
15
+  * libclamav/mbox.c: Some TR.Happy99.SKA were getting through
16
+  * libclamav/mbox.c: Fix compilation error on old Solaris
17
+  * libclamav/ole2_extract.c: check against recursion limits
18
+
19
+Wed Jun 30 00:00:13 CEST 2004 (tk)
20
+----------------------------------
21
+  V 0.74 (Based on CVS, with PowerPoint-VBA, MSCAB, PE and UPX code excluded)
22
+
1 23
 Tue Jun 29 23:24:44 CEST 2004 (tk)
2 24
 ----------------------------------
3 25
   * doc: update
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -389,14 +389,16 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) clamav-config.h.in $(TAGS_DEPENDENCIE
389 389
 		$(TAGS_FILES) $(LISP)
390 390
 	tags=; \
391 391
 	here=`pwd`; \
392
-	if (etags --etags-include --version) >/dev/null 2>&1; then \
392
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
393 393
 	  include_option=--etags-include; \
394
+	  empty_fix=.; \
394 395
 	else \
395 396
 	  include_option=--include; \
397
+	  empty_fix=; \
396 398
 	fi; \
397 399
 	list='$(SUBDIRS)'; for subdir in $$list; do \
398 400
 	  if test "$$subdir" = .; then :; else \
399
-	    test -f $$subdir/TAGS && \
401
+	    test ! -f $$subdir/TAGS || \
400 402
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
401 403
 	  fi; \
402 404
 	done; \
... ...
@@ -406,9 +408,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) clamav-config.h.in $(TAGS_DEPENDENCIE
406 406
 	  done | \
407 407
 	  $(AWK) '    { files[$$0] = 1; } \
408 408
 	       END { for (i in files) print i; }'`; \
409
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
410
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
411
-	     $$tags $$unique
409
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
410
+	  test -n "$$unique" || unique=$$empty_fix; \
411
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
412
+	    $$tags $$unique; \
413
+	fi
412 414
 ctags: CTAGS
413 415
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) clamav-config.h.in $(TAGS_DEPENDENCIES) \
414 416
 		$(TAGS_FILES) $(LISP)
... ...
@@ -517,7 +521,7 @@ distcheck: dist
517 517
 	*.tar.Z*) \
518 518
 	  uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\
519 519
 	*.shar.gz*) \
520
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | unshar ;;\
520
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
521 521
 	*.zip*) \
522 522
 	  unzip $(distdir).zip ;;\
523 523
 	esac
... ...
@@ -2,6 +2,35 @@ Note: This README/NEWS file refers to the source tarball. Some things described
2 2
 here may not be available in binary packages.
3 3
 --
4 4
 
5
+0.75
6
+----
7
+
8
+This release fixes detection of e-mails generated by Worm.Mydoom.I.
9
+
10
+Important notice for people using ClamAV 0.60:
11
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12
+
13
+Our logs show that there is still a small percentage of ClamAV 0.60
14
+installations updating their database. ClamAV 0.60 was released on
15
+July 29th, 2003 and it was the last release to use the old database
16
+format. Starting from version 0.65, released on November 12nd, ClamAV
17
+uses a new database format, which is compressed and digitally signed.
18
+We have been distributing the database in both formats till now, but
19
+we plan to drop support for ClamAV 0.60 on September 1st.
20
+
21
+We encourage _all_ users to upgrade to the latest release available.
22
+People running an old version of ClamAV are missing many viruses and 
23
+may experience stability problems.
24
+
25
+On non-production systems you can try the latest development version.
26
+The new engine not only speeds up the scanning process but also limits
27
+memory usage by about 8 MB ! It's able to scan new formats, including
28
+CAB, CHM, UPX, HTML (normalisation), PowerPoint macros and can detect
29
+annoying e-mails with empty attachments generated by new Bagle variants.
30
+
31
+--
32
+The ClamAV team (http://www.clamav.net/team.html)
33
+
5 34
 0.74
6 35
 ----
7 36
 
... ...
@@ -2,6 +2,35 @@ Note: This README/NEWS file refers to the source tarball. Some things described
2 2
 here may not be available in binary packages.
3 3
 --
4 4
 
5
+0.75
6
+----
7
+
8
+This release fixes detection of e-mails generated by Worm.Mydoom.I.
9
+
10
+Important notice for people using ClamAV 0.60:
11
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12
+
13
+Our logs show that there is still a small percentage of ClamAV 0.60
14
+installations updating their database. ClamAV 0.60 was released on
15
+July 29th, 2003 and it was the last release to use the old database
16
+format. Starting from version 0.65, released on November 12nd, ClamAV
17
+uses a new database format, which is compressed and digitally signed.
18
+We have been distributing the database in both formats till now, but
19
+we plan to drop support for ClamAV 0.60 on September 1st.
20
+
21
+We encourage _all_ users to upgrade to the latest release available.
22
+People running an old version of ClamAV are missing many viruses and 
23
+may experience stability problems.
24
+
25
+On non-production systems you can try the latest development version.
26
+The new engine not only speeds up the scanning process but also limits
27
+memory usage by about 8 MB ! It's able to scan new formats, including
28
+CAB, CHM, UPX, HTML (normalisation), PowerPoint macros and can detect
29
+annoying e-mails with empty attachments generated by new Bagle variants.
30
+
31
+--
32
+The ClamAV team (http://www.clamav.net/team.html)
33
+
5 34
 0.74
6 35
 ----
7 36
 
... ...
@@ -1,4 +1,4 @@
1
-# generated automatically by aclocal 1.8.3 -*- Autoconf -*-
1
+# generated automatically by aclocal 1.8.5 -*- Autoconf -*-
2 2
 
3 3
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
4 4
 # Free Software Foundation, Inc.
... ...
@@ -40,7 +40,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"])
40 40
 # Call AM_AUTOMAKE_VERSION so it can be traced.
41 41
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
42 42
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
43
-	 [AM_AUTOMAKE_VERSION([1.8.3])])
43
+	 [AM_AUTOMAKE_VERSION([1.8.5])])
44 44
 
45 45
 # AM_AUX_DIR_EXPAND
46 46
 
... ...
@@ -266,9 +266,14 @@ AC_CACHE_CHECK([dependency style of $depcc],
266 266
        grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
267 267
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
268 268
       # icc doesn't choke on unknown options, it will just issue warnings
269
-      # (even with -Werror).  So we grep stderr for any message
270
-      # that says an option was ignored.
271
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
269
+      # or remarks (even with -Werror).  So we grep stderr for any message
270
+      # that says an option was ignored or not supported.
271
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
272
+      #   icc: Command line warning: ignoring option '-M'; no argument required
273
+      # The diagnosis changed in icc 8.0:
274
+      #   icc: Command line remark: option '-MP' not supported
275
+      if (grep 'ignoring option' conftest.err ||
276
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
272 277
         am_cv_$1_dependencies_compiler_type=$depmode
273 278
         break
274 279
       fi
275 280
deleted file mode 100755
... ...
@@ -1,74 +0,0 @@
1
-#! /bin/sh
2
-# Originally from libxml, Copyright (C) Daniel Veillard
3
-
4
-prefix=/usr/local
5
-exec_prefix=${prefix}
6
-includedir=${prefix}/include
7
-libdir=${exec_prefix}/lib
8
-
9
-usage()
10
-{
11
-    cat <<EOF
12
-Usage: clamav-config [OPTION]
13
-
14
-Known values for OPTION are:
15
-
16
-  --prefix=DIR		change libclamav prefix [default $prefix]
17
-  --libs		print library linking information
18
-  --cflags		print pre-processor and compiler flags
19
-  --help		display this help and exit
20
-  --version		output version information
21
-EOF
22
-
23
-    exit $1
24
-}
25
-
26
-if test $# -eq 0; then
27
-    usage 1
28
-fi
29
-
30
-cflags=false
31
-libs=false
32
-
33
-while test $# -gt 0; do
34
-    case "$1" in
35
-    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
36
-    *) optarg= ;;
37
-    esac
38
-
39
-    case "$1" in
40
-    --prefix=*)
41
-	prefix=$optarg
42
-	;;
43
-
44
-    --prefix)
45
-	echo $prefix
46
-	;;
47
-
48
-    --version)
49
-	echo devel-20040627
50
-	exit 0
51
-	;;
52
-
53
-    --help)
54
-	usage 0
55
-	;;
56
-
57
-    --cflags)
58
-       	echo -I${prefix}/include -g -O2
59
-       	;;
60
-
61
-    --libs)
62
-       	echo -L${exec_prefix}/lib  -lz -lbz2 -lgmp -lpthread
63
-       	;;
64
-
65
-    *)
66
-	usage
67
-	exit 1
68
-	;;
69
-    esac
70
-    shift
71
-done
72
-
73
-exit 0
74
-
... ...
@@ -84,6 +84,9 @@
84 84
 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
85 85
 #undef HAVE_FSEEKO
86 86
 
87
+/* Define to 1 if you have the `gethostbyname_r' function. */
88
+#undef HAVE_GETHOSTBYNAME_R
89
+
87 90
 /* Define to 1 if you have the `getpagesize' function. */
88 91
 #undef HAVE_GETPAGESIZE
89 92
 
... ...
@@ -64,6 +64,17 @@ INSTALLATION
64 64
 
65 65
 Install into /usr/local/sbin/clamav-milter.
66 66
 
67
+Ensure that your sendmail supports milters by running
68
+	/usr/lib/sendmail -d0 < /dev/null | fgrep MILTER
69
+or
70
+	/usr/sbin/sendmail -d0 < /dev/null | fgrep MILTER
71
+
72
+You should see something like:
73
+	MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
74
+It doesn't matter exactly what you see, as long as the word MILTER is printed.
75
+
76
+If you see no output you MUST upgrade your sendmail.
77
+
67 78
 See http://www.nmt.edu/~wcolburn/sendmail-8.12.5/libmilter/docs/sample.html
68 79
 
69 80
 Installations for RedHat Linux and it's derivatives such as YellowDog:
... ...
@@ -86,6 +97,9 @@ Installations for RedHat Linux and it's derivatives such as YellowDog:
86 86
 	chown clamav /var/run/clamav	(if you use User clamav in clamav.conf)
87 87
 	chmod 700 /var/run/clamav
88 88
 
89
+	Where /var/run/spamass.sock is the location of the spamass-milt
90
+	socket file (on some systems it is in /var/run/sendmail/spamass.sock).
91
+
89 92
 You may find INPUT_MAIL_FILTERS is not needed on your machine, however it
90 93
 is recommended by the Sendmail documentation and I recommend going along
91 94
 with that.
... ...
@@ -417,6 +431,14 @@ Changes
417 417
 			already exists
418 418
 0.74	29/6/04	Up-issued
419 419
 0.74a	29/6/04	Allow the child timeout to be configurable
420
+0.74b	8/7/04	Validate the arguments to inet_ntop
421
+0.74c	14/7/04	Added --dont-wait
422
+		Added --advisory
423
+0.74d	18/7/04	Added sanity check in clamfi_connect
424
+0.74e	21/7/04	Fixed thread unsafe code causing problems with multi-CPU
425
+		machines running Solaris
426
+0.74f	22/7/04	Use gethostbyname_r() if available
427
+0.75	22/7/04	Up-issue
420 428
 
421 429
 BUG REPORTS
422 430
 
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -471,9 +471,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
471 471
 	  done | \
472 472
 	  $(AWK) '    { files[$$0] = 1; } \
473 473
 	       END { for (i in files) print i; }'`; \
474
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
475
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
476
-	     $$tags $$unique
474
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
475
+	  test -n "$$unique" || unique=$$empty_fix; \
476
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
477
+	    $$tags $$unique; \
478
+	fi
477 479
 ctags: CTAGS
478 480
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
479 481
 		$(TAGS_FILES) $(LISP)
... ...
@@ -26,6 +26,24 @@
26 26
  *
27 27
  * Change History:
28 28
  * $Log: clamav-milter.c,v $
29
+ * Revision 1.108  2004/07/22 15:45:03  nigelhorne
30
+ * Up-issue
31
+ *
32
+ * Revision 1.107  2004/07/22 09:14:32  nigelhorne
33
+ * Use gethostbyname_r when available
34
+ *
35
+ * Revision 1.106  2004/07/21 21:23:29  nigelhorne
36
+ * Mutex gethostbyname result
37
+ *
38
+ * Revision 1.105  2004/07/21 17:46:06  nigelhorne
39
+ * Added note about needing MILTER support in sendmail
40
+ *
41
+ * Revision 1.104  2004/07/14 10:17:05  nigelhorne
42
+ * Added dont-wait and advisory options
43
+ *
44
+ * Revision 1.103  2004/07/08 22:22:39  nigelhorne
45
+ * Don't pass empty arguments to inet_ntop
46
+ *
29 47
  * Revision 1.102  2004/06/29 15:26:14  nigelhorne
30 48
  * Support the --timeout argument
31 49
  *
... ...
@@ -317,9 +335,9 @@
317 317
  * Revision 1.6  2003/09/28 16:37:23  nigelhorne
318 318
  * Added -f flag use MaxThreads if --max-children not set
319 319
  */
320
-static	char	const	rcsid[] = "$Id: clamav-milter.c,v 1.102 2004/06/29 15:26:14 nigelhorne Exp $";
320
+static	char	const	rcsid[] = "$Id: clamav-milter.c,v 1.108 2004/07/22 15:45:03 nigelhorne Exp $";
321 321
 
322
-#define	CM_VERSION	"0.74a"
322
+#define	CM_VERSION	"0.75"
323 323
 
324 324
 /*#define	CONFDIR	"/usr/local/etc"*/
325 325
 
... ...
@@ -466,6 +484,7 @@ static	void	header_list_print(header_list_t list, FILE *fp);
466 466
 static	int	connect2clamd(struct privdata *privdata);
467 467
 static	void	checkClamd(void);
468 468
 static	int	sendtemplate(SMFICTX *ctx, const char *filename, FILE *sendmail, const char *clamdMessage);
469
+static	void	setsubject(SMFICTX *ctx, const char *virusname);
469 470
 
470 471
 static	char	clamav_version[128];
471 472
 static	int	fflag = 0;	/* force a scan, whatever */
... ...
@@ -547,6 +566,16 @@ static	int	child_timeout = 60;	/* number of seconds to wait for
547 547
 					 * a child to die. Set to 0 to
548 548
 					 * wait forever
549 549
 					 */
550
+static	int	dont_wait = 0;	/*
551
+				 * If 1 send retry later to the remote end
552
+				 * if max_chilren is exceeded, otherwise we
553
+				 * wait for the number to go down
554
+				 */
555
+static	int	advisory = 0;	/*
556
+				 * Run clamav-milter in advisory mode - viruses
557
+				 * are flagged rather than deleted. Incompatible
558
+				 * with quarantine options
559
+				 */
550 560
 short	use_syslog = 0;
551 561
 static	const	char	*pidFile;
552 562
 static	int	logVerbose = 0;
... ...
@@ -578,11 +607,13 @@ help(void)
578 578
 	printf("\n\tclamav-milter version %s\n", CM_VERSION);
579 579
 	puts("\tCopyright (C) 2004 Nigel Horne <njh@despammed.com>\n");
580 580
 
581
+	puts("\t--advisory\t\t-A\tFlag viruses rather than deleting them.");
581 582
 	puts("\t--bounce\t\t-b\tSend a failure message to the sender.");
582 583
 	puts("\t--config-file=FILE\t-c FILE\tRead configuration from FILE.");
583 584
 	puts("\t--debug\t\t\t-D\tPrint debug messages.");
584 585
 	puts("\t--dont-log-clean\t-C\tDon't add an entry to syslog that a mail is clean.");
585 586
 	puts("\t--dont-scan-on-error\t-d\tPass e-mails through unscanned if a system error occurs.");
587
+	puts("\t--dont-wait\t\t\tAsk remote end to resend if max-children exceeded.");
586 588
 	puts("\t--from=EMAIL\t\t-a EMAIL\tError messages come from here.");
587 589
 	puts("\t--force-scan\t\t-f\tForce scan all messages (overrides (-o and -l).");
588 590
 	puts("\t--help\t\t\t-h\tThis message.");
... ...
@@ -601,7 +632,7 @@ help(void)
601 601
 	puts("\t--sign\t\t\t-S\tAdd a hard-coded signature to each scanned message.");
602 602
 	puts("\t--signature-file=FILE\t-F FILE\tLocation of signature file.");
603 603
 	puts("\t--template-file=FILE\t-t FILE\tLocation of e-mail template file.");
604
-	puts("\t--timeout=SECS\t-T SECS\tTimeout waiting to childen to die.");
604
+	puts("\t--timeout=SECS\t\t-T SECS\tTimeout waiting to childen to die.");
605 605
 	puts("\t--version\t\t-V\tPrint the version number of this software.");
606 606
 #ifdef	CL_DEBUG
607 607
 	puts("\t--debug-level=n\t\t-x n\tSets the debug level to 'n'.");
... ...
@@ -650,9 +681,9 @@ main(int argc, char **argv)
650 650
 	for(;;) {
651 651
 		int opt_index = 0;
652 652
 #ifdef	CL_DEBUG
653
-		const char *args = "a:bc:CDfF:lm:nNop:PqQ:dhHs:St:T:U:Vx:";
653
+		const char *args = "a:Abc:CDfF:lm:nNop:PqQ:dhHs:St:T:U:Vx:";
654 654
 #else
655
-		const char *args = "a:bc:CDfF:lm:nNop:PqQ:dhHs:St:T:U:V";
655
+		const char *args = "a:Abc:CDfF:lm:nNop:PqQ:dhHs:St:T:U:V";
656 656
 #endif
657 657
 
658 658
 		static struct option long_options[] = {
... ...
@@ -660,6 +691,9 @@ main(int argc, char **argv)
660 660
 				"from", 1, NULL, 'a'
661 661
 			},
662 662
 			{
663
+				"advisory", 0, NULL, 'A'
664
+			},
665
+			{
663 666
 				"bounce", 0, NULL, 'b'
664 667
 			},
665 668
 			{
... ...
@@ -672,6 +706,9 @@ main(int argc, char **argv)
672 672
 				"dont-scan-on-error", 0, NULL, 'd'
673 673
 			},
674 674
 			{
675
+				"dont-wait", 0, NULL, 'w'
676
+			},
677
+			{
675 678
 				"debug", 0, NULL, 'D'
676 679
 			},
677 680
 			{
... ...
@@ -755,6 +792,10 @@ main(int argc, char **argv)
755 755
 			case 'a':	/* e-mail errors from here */
756 756
 				from = optarg;
757 757
 				break;
758
+			case 'A':
759
+				advisory++;
760
+				smfilter.xxfi_flags |= SMFIF_CHGHDRS;
761
+				break;
758 762
 			case 'b':	/* bounce worms/viruses */
759 763
 				bflag++;
760 764
 				break;
... ...
@@ -834,6 +875,9 @@ main(int argc, char **argv)
834 834
 			case 'V':
835 835
 				puts(clamav_version);
836 836
 				return EX_OK;
837
+			case 'w':
838
+				dont_wait++;
839
+				break;
837 840
 #ifdef	CL_DEBUG
838 841
 			case 'x':
839 842
 				debug_level = atoi(optarg);
... ...
@@ -903,16 +947,24 @@ main(int argc, char **argv)
903 903
 		} else
904 904
 			fprintf(stderr, "%s: running as root is not recommended\n", argv[0]);
905 905
 	}
906
+	if(advisory && quarantine) {
907
+		fprintf(stderr, "%s: Advisory mode doesn't work with quarantine mode\n", argv[0]);
908
+		return EX_USAGE;
909
+	}
906 910
 	if(quarantine_dir) {
907 911
 		struct stat statb;
908 912
 
913
+		if(advisory) {
914
+			fprintf(stderr, "%s: Advisory mode doesn't work with quarantine directories\n", argv[0]);
915
+			return EX_USAGE;
916
+		}
909 917
 		if(access(quarantine_dir, W_OK) < 0) {
910 918
 			perror(quarantine_dir);
911
-			return EX_CONFIG;
919
+			return EX_USAGE;
912 920
 		}
913 921
 		if(stat(quarantine_dir, &statb) < 0) {
914 922
 			perror(quarantine_dir);
915
-			return EX_CONFIG;
923
+			return EX_USAGE;
916 924
 		}
917 925
 		/*
918 926
 		 * Quit if the quarantine directory is publically readable
... ...
@@ -1409,16 +1461,21 @@ clamfi_connect(SMFICTX *ctx, char *hostname, _SOCK_ADDR *hostaddr)
1409 1409
 #endif
1410 1410
 	char *remoteIP;
1411 1411
 
1412
+	if(ctx == NULL) {
1413
+		if(use_syslog)
1414
+			syslog(LOG_ERR, "clamfi_connect: ctx is null");
1415
+		return cl_error;
1416
+	}
1412 1417
 	if(hostname == NULL) {
1413 1418
 		if(use_syslog)
1414 1419
 			syslog(LOG_ERR, "clamfi_connect: hostname is null");
1415 1420
 		return cl_error;
1416 1421
 	}
1417
-	if(hostaddr == NULL)
1422
+	if((hostaddr == NULL) || (&(((struct sockaddr_in *)(hostaddr))->sin_addr) == NULL))
1418 1423
 		/*
1419 1424
 		 * According to the sendmail API hostaddr is NULL if
1420 1425
 		 * "the type is not supported in the current version". What
1421
-		 * the documentation doesn't say is the type of what?
1426
+		 * the documentation doesn't say is the type of what.
1422 1427
 		 *
1423 1428
 		 * Possibly the input is not a TCP/IP socket e.g. stdin?
1424 1429
 		 */
... ...
@@ -1451,7 +1508,15 @@ clamfi_connect(SMFICTX *ctx, char *hostname, _SOCK_ADDR *hostaddr)
1451 1451
 	 */
1452 1452
 	if(strncasecmp(port, "inet:", 5) == 0) {
1453 1453
 		const char *hostmail;
1454
-		const struct hostent *hp = NULL;
1454
+#ifdef	HAVE_GETHOSTBYNAME_R
1455
+		struct hostent *hp, hostent;
1456
+		char buf[BUFSIZ];
1457
+		int ret;
1458
+#else
1459
+		const struct hostent *hp2, *hp;
1460
+		struct hostent hostent;
1461
+		static pthread_mutex_t hostent_mutex = PTHREAD_MUTEX_INITIALIZER;
1462
+#endif
1455 1463
 
1456 1464
 		/*
1457 1465
 		 * Using TCP/IP for the sendmail->clamav-milter connection
... ...
@@ -1462,14 +1527,28 @@ clamfi_connect(SMFICTX *ctx, char *hostname, _SOCK_ADDR *hostaddr)
1462 1462
 			hostmail = "unknown";
1463 1463
 		}
1464 1464
 
1465
-		if((hp = gethostbyname(hostmail)) == NULL) {
1465
+#ifdef	HAVE_GETHOSTBYNAME_R
1466
+		if(gethostbyname_r(hostmail, &hostent, buf, sizeof(buf), &hp, &ret) != 0) {
1466 1467
 			if(use_syslog)
1467 1468
 				syslog(LOG_WARNING, "Access Denied: Host Unknown (%s)", hostname);
1468 1469
 			return cl_error;
1469 1470
 		}
1471
+#else
1472
+		pthread_mutex_lock(&hostent_mutex);
1473
+		if((hp2 = gethostbyname(hostmail)) == NULL) {
1474
+			pthread_mutex_unlock(&hostent_mutex);
1475
+			if(use_syslog)
1476
+				syslog(LOG_WARNING, "Access Denied: Host Unknown (%s)", hostname);
1477
+			return cl_error;
1478
+		}
1479
+		memcpy(&hostent, hp2, sizeof(struct hostent));
1480
+		pthread_mutex_unlock(&hostent_mutex);
1481
+		hp = &hostent;
1482
+#endif
1470 1483
 
1471 1484
 #ifdef HAVE_INET_NTOP
1472
-		if(inet_ntop(AF_INET, (struct in_addr *)hp->h_addr, ip, sizeof(ip)) == NULL) {
1485
+		if(hp->h_addr &&
1486
+		   (inet_ntop(AF_INET, (struct in_addr *)hp->h_addr, ip, sizeof(ip)) == NULL)) {
1473 1487
 			perror(hp->h_name);
1474 1488
 			/*if(use_syslog)
1475 1489
 				syslog(LOG_WARNING, "Can't get IP address for (%s)", hp->h_name);
... ...
@@ -1479,7 +1558,7 @@ clamfi_connect(SMFICTX *ctx, char *hostname, _SOCK_ADDR *hostaddr)
1479 1479
 			return cl_error;
1480 1480
 		}
1481 1481
 #else
1482
-		strncpy(ip, (char *)inet_ntoa(*(struct in_addr *)hp->h_addr), sizeof(ip) - 1);
1482
+		strncpy(ip, (char *)inet_ntoa(*(struct in_addr *)hp->h_addr), sizeof(ip));
1483 1483
 #endif
1484 1484
 
1485 1485
 		/*
... ...
@@ -1583,6 +1662,14 @@ clamfi_envfrom(SMFICTX *ctx, char **argv)
1583 1583
 					"hit max-children limit (%u >= %u): waiting for some to exit",
1584 1584
 					n_children, max_children);
1585 1585
 
1586
+			if(dont_wait) {
1587
+				pthread_mutex_unlock(&n_children_mutex);
1588
+				/*
1589
+				 * TODO: use smfi_setreply to send a useful
1590
+				 * message to the remote SMTP client
1591
+				 */
1592
+				return SMFIS_TEMPFAIL;
1593
+			}
1586 1594
 			/*
1587 1595
 			 * Wait for an amount of time for a child to go (default
1588 1596
 			 * 60 seconds).
... ...
@@ -2224,17 +2311,11 @@ clamfi_eom(SMFICTX *ctx)
2224 2224
 					syslog(LOG_DEBUG, "Can't set quarantine user %s", quarantine);
2225 2225
 				else
2226 2226
 					cli_warnmsg("Can't set quarantine user %s\n", quarantine);
2227
-			} else {
2228
-				char subject[128];
2229
-
2230
-				/*
2231
-				 * FIXME: doesn't work if there's no subject
2232
-				 */
2233
-				snprintf(subject, sizeof(subject) - 1,
2234
-					"[Virus] %s", virusname);
2235
-				smfi_chgheader(ctx, "Subject", 1, subject);
2236
-			}
2237
-		} else if(rejectmail) {
2227
+			} else
2228
+				setsubject(ctx, virusname);
2229
+		} else if(advisory)
2230
+			setsubject(ctx, virusname);
2231
+		else if(rejectmail) {
2238 2232
 			if(privdata->discard)
2239 2233
 				rc = SMFIS_DISCARD;
2240 2234
 			else
... ...
@@ -2997,3 +3078,18 @@ sendtemplate(SMFICTX *ctx, const char *filename, FILE *sendmail, const char *cla
2997 2997
 
2998 2998
 	return 0;
2999 2999
 }
3000
+
3001
+/*
3002
+ * Store the name of the virus in the subject of the e-mail
3003
+ */
3004
+static void
3005
+setsubject(SMFICTX *ctx, const char *virusname)
3006
+{
3007
+	char subject[128];
3008
+
3009
+	/*
3010
+	 * FIXME: doesn't work if there's no subject
3011
+	 */
3012
+	snprintf(subject, sizeof(subject) - 1, "[Virus] %s", virusname);
3013
+	smfi_chgheader(ctx, "Subject", 1, subject);
3014
+}
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -503,9 +503,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
503 503
 	  done | \
504 504
 	  $(AWK) '    { files[$$0] = 1; } \
505 505
 	       END { for (i in files) print i; }'`; \
506
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
507
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
508
-	     $$tags $$unique
506
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
507
+	  test -n "$$unique" || unique=$$empty_fix; \
508
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
509
+	    $$tags $$unique; \
510
+	fi
509 511
 ctags: CTAGS
510 512
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
511 513
 		$(TAGS_FILES) $(LISP)
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -425,9 +425,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
425 425
 	  done | \
426 426
 	  $(AWK) '    { files[$$0] = 1; } \
427 427
 	       END { for (i in files) print i; }'`; \
428
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
429
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
430
-	     $$tags $$unique
428
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
429
+	  test -n "$$unique" || unique=$$empty_fix; \
430
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
431
+	    $$tags $$unique; \
432
+	fi
431 433
 ctags: CTAGS
432 434
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
433 435
 		$(TAGS_FILES) $(LISP)
... ...
@@ -95,6 +95,8 @@ int dsstream(int sockd)
95 95
 {
96 96
 	int wsockd, loopw = 60, bread, port, infected = 0;
97 97
 	struct sockaddr_in server;
98
+	struct sockaddr_in peer;
99
+	int peer_size;
98 100
 	char buff[4096], *pt;
99 101
 
100 102
     if(write(sockd, "STREAM", 6) <= 0) {
... ...
@@ -129,6 +131,15 @@ int dsstream(int sockd)
129 129
     server.sin_family = AF_INET;
130 130
     server.sin_port = htons(port);
131 131
 
132
+    peer_size = sizeof(peer);
133
+    if(getpeername(sockd, (struct sockaddr *) &peer, &peer_size) < 0) {
134
+	perror("getpeername()");
135
+	mprintf("@Can't get socket peer name.\n");
136
+	return -1;
137
+    }
138
+
139
+    server.sin_addr.s_addr = peer.sin_addr.s_addr;
140
+
132 141
     if(connect(wsockd, (struct sockaddr *) &server, sizeof(struct sockaddr_in)) < 0) {
133 142
 	close(wsockd);
134 143
 	perror("connect()");
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -458,9 +458,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
458 458
 	  done | \
459 459
 	  $(AWK) '    { files[$$0] = 1; } \
460 460
 	       END { for (i in files) print i; }'`; \
461
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
462
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
463
-	     $$tags $$unique
461
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
462
+	  test -n "$$unique" || unique=$$empty_fix; \
463
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
464
+	    $$tags $$unique; \
465
+	fi
464 466
 ctags: CTAGS
465 467
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
466 468
 		$(TAGS_FILES) $(LISP)
... ...
@@ -2055,7 +2055,7 @@ fi
2055 2055
 
2056 2056
 # Define the identity of the package.
2057 2057
  PACKAGE=clamav
2058
- VERSION="devel-`date +%Y%m%d`"
2058
+ VERSION="0.75"
2059 2059
 
2060 2060
 
2061 2061
 cat >>confdefs.h <<_ACEOF
... ...
@@ -3290,9 +3290,14 @@ else
3290 3290
        grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
3291 3291
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
3292 3292
       # icc doesn't choke on unknown options, it will just issue warnings
3293
-      # (even with -Werror).  So we grep stderr for any message
3294
-      # that says an option was ignored.
3295
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
3293
+      # or remarks (even with -Werror).  So we grep stderr for any message
3294
+      # that says an option was ignored or not supported.
3295
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
3296
+      #   icc: Command line warning: ignoring option '-M'; no argument required
3297
+      # The diagnosis changed in icc 8.0:
3298
+      #   icc: Command line remark: option '-MP' not supported
3299
+      if (grep 'ignoring option' conftest.err ||
3300
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
3296 3301
         am_cv_CC_dependencies_compiler_type=$depmode
3297 3302
         break
3298 3303
       fi
... ...
@@ -5009,7 +5014,7 @@ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
5009 5009
 case $host in
5010 5010
 *-*-irix6*)
5011 5011
   # Find out which ABI we are using.
5012
-  echo '#line 5012 "configure"' > conftest.$ac_ext
5012
+  echo '#line 5017 "configure"' > conftest.$ac_ext
5013 5013
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5014 5014
   (eval $ac_compile) 2>&5
5015 5015
   ac_status=$?
... ...
@@ -5582,7 +5587,7 @@ chmod -w .
5582 5582
 save_CFLAGS="$CFLAGS"
5583 5583
 CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
5584 5584
 compiler_c_o=no
5585
-if { (eval echo configure:5585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
5585
+if { (eval echo configure:5590: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
5586 5586
   # The compiler can only warn and ignore the option if not recognized
5587 5587
   # So say no if there are warnings
5588 5588
   if test -s out/conftest.err; then
... ...
@@ -7509,7 +7514,7 @@ else
7509 7509
     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
7510 7510
   lt_status=$lt_dlunknown
7511 7511
   cat > conftest.$ac_ext <<EOF
7512
-#line 7512 "configure"
7512
+#line 7517 "configure"
7513 7513
 #include "confdefs.h"
7514 7514
 
7515 7515
 #if HAVE_DLFCN_H
... ...
@@ -7607,7 +7612,7 @@ else
7607 7607
     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
7608 7608
   lt_status=$lt_dlunknown
7609 7609
   cat > conftest.$ac_ext <<EOF
7610
-#line 7610 "configure"
7610
+#line 7615 "configure"
7611 7611
 #include "confdefs.h"
7612 7612
 
7613 7613
 #if HAVE_DLFCN_H
... ...
@@ -8969,7 +8974,8 @@ _ACEOF
8969 8969
 
8970 8970
 
8971 8971
 
8972
-for ac_func in poll setsid memcpy snprintf vsnprintf strerror_r strlcpy strlcat inet_ntop setgroups initgroups
8972
+
8973
+for ac_func in poll setsid memcpy snprintf vsnprintf strerror_r strlcpy strlcat inet_ntop setgroups initgroups gethostbyname_r
8973 8974
 do
8974 8975
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
8975 8976
 echo "$as_me:$LINENO: checking for $ac_func" >&5
... ...
@@ -17,7 +17,7 @@ dnl   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 17
 
18 18
 AC_INIT(clamscan/clamscan.c)
19 19
 AC_CREATE_TARGET_H(target.h)
20
-AM_INIT_AUTOMAKE(clamav, "devel-`date +%Y%m%d`")
20
+AM_INIT_AUTOMAKE(clamav, "0.75")
21 21
 AM_CONFIG_HEADER(clamav-config.h)
22 22
 
23 23
 LC_CURRENT=1
... ...
@@ -42,7 +42,7 @@ AC_TYPE_OFF_T
42 42
 AC_COMPILE_CHECK_SIZEOF(short)
43 43
 AC_COMPILE_CHECK_SIZEOF(int)
44 44
 AC_COMPILE_CHECK_SIZEOF(long)
45
-AC_CHECK_FUNCS(poll setsid memcpy snprintf vsnprintf strerror_r strlcpy strlcat inet_ntop setgroups initgroups)
45
+AC_CHECK_FUNCS(poll setsid memcpy snprintf vsnprintf strerror_r strlcpy strlcat inet_ntop setgroups initgroups gethostbyname_r)
46 46
 AC_FUNC_MMAP
47 47
 AC_FUNC_FSEEKO
48 48
 
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5 5
new file mode 100644
... ...
@@ -0,0 +1,294 @@
0
+# -----------------------------------------------------------------
1
+# clamd+daemontools HOWTO
2
+# -----------------------------------------------------------------
3
+# Author   : Jesse D. Guardiani 
4
+# Email    : jesse (at) wingnet (dot) net
5
+# Created  : 09/12/03
6
+# Modified : 10/07/03
7
+# Version  : 0.002
8
+# -----------------------------------------------------------------
9
+# This is an unofficial appendix to "Life with qmail"
10
+# (http://www.lifewithqmail.org/).
11
+#
12
+# ChangeLog
13
+# ---------
14
+#
15
+# 10/07/03 - JDG
16
+# --------------
17
+# - The new howto has been updated to be compliant with the UID
18
+#   change in qmail-scanner-1.20rc3. clamd now runs as 'qscand'.
19
+#
20
+# - have added a "ClamAV Install" section to the top of the file.
21
+#   This section provides a cut-and-paste method of adding the
22
+#   clamav user to the FreeBSD password database. You'll probably
23
+#   have to use different syntax/commands under a different OS.
24
+# 
25
+# - made a slight change at the bottom of the howto to better
26
+#   indicate the end of the /usr/local/clamav/supervise/clamd/run
27
+#   file.
28
+#
29
+# 09/12/03 - JDG
30
+# --------------
31
+# - Created
32
+# -----------------------------------------------------------------
33
+
34
+# -----------------------------------------------------------------
35
+# 1.) do the Clam AV install
36
+# -----------------------------------------------------------------
37
+    wget http://aleron.dl.sourceforge.net/sourceforge/clamav/clamav-0.60.tar.gz
38
+    tar -xvzf clamav-0.60.tar.gz
39
+    cd clamav-0.60
40
+
41
+# --
42
+# NOTE: The below `pw` command is probably specific to FreeBSD.
43
+#       You will probably have to use different syntax/commands
44
+#       under a different OS.
45
+# --
46
+    pw groupadd clamav
47
+    pw useradd clamav -g clamav -c "Clam AntiVirus" -s /nonexistent
48
+
49
+    ./configure
50
+    gmake
51
+    gmake install
52
+    cd ..
53
+
54
+
55
+# -----------------------------------------------------------------
56
+# 2.) do the Clam AV post-install configuration
57
+# -----------------------------------------------------------------
58
+    vim /usr/local/etc/clamav.conf
59
+# --
60
+# Do the following to the clamav.conf file:
61
+# -----------------------------------------
62
+# 1.) Comment out "Example" line.
63
+# 2.) Uncomment "LogSyslog"
64
+# 3.) Uncomment "StreamSaveToDisk"
65
+# 4.) Uncomment "MaxThreads" and change value to "30"
66
+# 5.) Uncomment "User" and change value to "qscand"
67
+# 6.) Uncomment "Foreground"
68
+# 7.) Uncomment "ScanMail"
69
+# --
70
+
71
+
72
+
73
+# --
74
+# Create the clamav directory
75
+# --
76
+    mkdir -p /usr/local/clamav/bin
77
+
78
+# --
79
+# Create the clamdctl script
80
+# --
81
+    
82
+    vim /usr/local/clamav/bin/clamdctl
83
+
84
+# *****************************************************************
85
+# NOTE: Place this script in /usr/local/clamav/bin/clamdctl
86
+# *****************************************************************
87
+
88
+#!/bin/sh
89
+
90
+# For Red Hat chkconfig
91
+# chkconfig: - 80 30
92
+# description: the ClamAV clamd daemon
93
+
94
+PATH=/usr/local/clamav/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
95
+export PATH
96
+
97
+case "$1" in
98
+  start)
99
+    echo "Starting clamd"
100
+    if svok /service/clamd ; then
101
+      svc -u /service/clamd
102
+    else
103
+      echo clamd supervise not running
104
+    fi  
105
+    if [ -d /var/lock/subsys ]; then
106
+      touch /var/lock/subsys/clamd
107
+    fi
108
+    ;;
109
+  stop)
110
+    echo "Stopping clamd..."
111
+    echo "  clamd"
112
+    svc -d /service/clamd
113
+    if [ -f /var/lock/subsys/clamd ]; then
114
+      rm /var/lock/subsys/clamd
115
+    fi
116
+    ;;
117
+  stat)
118
+    svstat /service/clamd
119
+    svstat /service/clamd/log
120
+    ;;
121
+  restart)
122
+    echo "Restarting clamd:"
123
+    echo "* Stopping clamd."
124
+    svc -d /service/clamd
125
+    echo "* Sending clamd SIGTERM and restarting."
126
+    svc -t /service/clamd
127
+    echo "* Restarting clamd."
128
+    svc -u /service/clamd
129
+    ;;
130
+  hup)
131
+    echo "Sending HUP signal to clamd."
132
+    svc -h /service/clamd
133
+    ;;
134
+  help)
135
+    cat <<HELP
136
+   stop -- stops clamd service (smtp connections refused, nothing goes out)
137
+  start -- starts clamd service (smtp connection accepted, mail can go out)
138
+   stat -- displays status of clamd service
139
+restart -- stops and restarts the clamd service
140
+    hup -- same as reload
141
+HELP
142
+    ;;
143
+  *)
144
+    echo "Usage: $0 {start|stop|stat|restart|hup|help}"
145
+    exit 1
146
+    ;;
147
+esac
148
+
149
+exit 0
150
+
151
+
152
+# --
153
+# Create your boot symlink to clamdctl:
154
+# --
155
+    ln -s /usr/local/clamav/bin/clamdctl /usr/local/etc/rc.d/clamdctl.sh
156
+
157
+
158
+# --
159
+# Make clamdctl an executable and link to path:
160
+# --
161
+    chmod 755 /usr/local/clamav/bin/clamdctl
162
+    chown clamav /usr/local/clamav/bin/clamdctl
163
+    ln -s /usr/local/clamav/bin/clamdctl /usr/local/bin
164
+
165
+
166
+# --
167
+# Create the supervise directories for the clamd service:
168
+# --
169
+
170
+    mkdir -p /usr/local/clamav/supervise/clamd/log
171
+
172
+    vim /usr/local/clamav/supervise/clamd/run
173
+# --
174
+# Create the /usr/local/clamav/supervise/clamd/run file:
175
+# --
176
+
177
+#!/bin/sh
178
+#
179
+# --------------------------------------------------
180
+# run
181
+#
182
+# Purpose     - Start the clamd daemon/service.
183
+#                               
184
+# Author      - Jesse D. Guardiani
185
+# Created     - 09/10/03
186
+# Modified    - 09/25/03
187
+# --------------------------------------------------
188
+# This script is designed to be run under DJB's
189
+# daemontools package.
190
+#         
191
+#  ChangeLog
192
+#  ---------
193
+#
194
+#  09/25/03 - JDG
195
+#  --------------
196
+#  - Changed clamd user to qscand in compliance with
197
+#    the change to qmail-scanner-1.20rc3
198
+#
199
+#  09/10/03 - JDG
200
+#  --------------
201
+#  - Created
202
+# --------------------------------------------------
203
+# Copyright (C) 2003 WingNET Internet Services
204
+# Contact: Jesse D. Guardiani (jesse at wingnet dot net)
205
+# --------------------------------------------------
206
+
207
+lockfile="/tmp/clamd"   # Location of clamd lock file
208
+path_to_clamd="/usr/local/sbin/clamd"
209
+                        # Location of the clamd binary
210
+BAD_EXIT_CODE=1         # The exit code we use to announce that something bad has happened
211
+
212
+# The following pipeline is designed to return the pid of each
213
+# clamd process currently running.
214
+get_clam_pids_pipeline=`ps -ax | grep -E "${path_to_clamd}\$" | grep -v grep | awk '{print $1}'`
215
+
216
+
217
+# --------------------------------------------------
218
+# Generic helper functions
219
+# --------------------------------------------------
220
+
221
+# Basic return code error message function
222
+die_rcode() {
223
+	EXIT_CODE=$1
224
+	ERROR_MSG=$2
225
+
226
+	if [ $EXIT_CODE -ne '0' ]; then
227
+		echo "$ERROR_MSG" 1>&2
228
+		echo "Exiting!" 1>&2
229
+		exit "$BAD_EXIT_CODE"
230
+	fi
231
+}
232
+
233
+
234
+# --------------------------------------------------
235
+# Main
236
+# --------------------------------------------------
237
+
238
+ps_clamd=""
239
+ps_clamd="$get_clam_pids_pipeline"
240
+
241
+if [ -n "$ps_clamd" ]; then
242
+	pid_count="0"
243
+	for pid in $ps_clamd
244
+	do
245
+		pid_count=`expr $pid_count + 1`
246
+	done
247
+	
248
+	die_rcode $BAD_EXIT_CODE "Error: $pid_count clamd process(es) already running!"
249
+
250
+fi
251
+
252
+if [ -e "$lockfile" ]; then
253
+	rm "$lockfile"
254
+	exit_code="$?"
255
+	die_rcode $exit_code "Error: 'rm $lockfile' call failed."
256
+fi
257
+
258
+exec /usr/local/bin/setuidgid qscand $path_to_clamd
259
+
260
+# --
261
+# END /usr/local/clamav/supervise/clamd/run file.
262
+# --
263
+
264
+
265
+    vim /usr/local/clamav/supervise/clamd/log/run
266
+# --
267
+# Create the /usr/local/clamav/supervise/clamd/log/run file:
268
+# --
269
+
270
+#!/bin/sh
271
+exec /usr/local/bin/setuidgid qscand /usr/local/bin/multilog t s1000000 n20 /var/log/clamd
272
+
273
+
274
+# Make the run files executable:
275
+
276
+    chmod 755 /usr/local/clamav/supervise/clamd/run
277
+    chmod 755 /usr/local/clamav/supervise/clamd/log/run
278
+
279
+# Then set up the log directories:
280
+
281
+    mkdir -p /var/log/clamd
282
+    chown qscand /var/log/clamd 
283
+
284
+# Finally, link the supervise directory into /service:
285
+
286
+    ln -s /usr/local/clamav/supervise/clamd /service
287
+
288
+# *****************************************************************
289
+# Note: The clamd script will start automatically shortly 
290
+#       after these links are created. If you don't want it running
291
+#       yet, do the following:
292
+# *****************************************************************
293
+    clamdctl stop
0 294
Binary files a/docs/clamdoc.pdf and b/docs/clamdoc.pdf differ
... ...
@@ -1,6 +1,6 @@
1 1
 /* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
2 2
 .MATH    { font-family: "Century Schoolbook", serif; }
3
-.MATH I  { font-family: "Century Schoolbook", serif; font-shape: italic }
3
+.MATH I  { font-family: "Century Schoolbook", serif; font-style: italic }
4 4
 .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
5 5
 
6 6
 /* implement both fixed-size and relative sizes */
... ...
@@ -28,3 +28,11 @@ TD.eqno			{ }	/* equation-number cells */
28 28
 
29 29
 
30 30
 /* document-specific styles come next */
31
+DIV.center		{   }
32
+DIV.flushright		{   }
33
+DIV.navigation		{   }
34
+PRE.preform		{   }
35
+SPAN.textbf		{ font-weight: bold  }
36
+SPAN.arabic		{   }
37
+SPAN.textit		{ font-style: italic  }
38
+#hue36		{ color: #ffffff;  }
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,23 +13,23 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22
-<LINK REL="previous" HREF="node87.html">
21
+<LINK REL="previous" HREF="node90.html">
23 22
 <LINK REL="up" HREF="clamdoc.html">
24 23
 </HEAD>
25 24
 
26 25
 <BODY >
27 26
 
28 27
 <DL>
29
-<DT><A NAME="foot88">... moderated</A><A NAME="foot88"
30
- HREF="node4.html#tex2html1"><SUP>1</SUP></A>
28
+<DT><A NAME="foot88">... moderated</A><A
29
+ HREF="node4.html#tex2html1"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
31 30
 <DD>That means the
32 31
     subscribers are not allowed to write into the mailing list
32
+
33 33
 <PRE>.
34 34
 .
35 35
 .
... ...
@@ -61,9 +61,11 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
61 61
 .
62 62
 .
63 63
 </PRE>
64
-<DT><A NAME="foot159">... script</A><A NAME="foot159"
65
- HREF="node10.html#tex2html17"><SUP>2</SUP></A>
64
+</DD>
65
+<DT><A NAME="foot160">... script</A><A
66
+ HREF="node10.html#tex2html17"><SUP><SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
66 67
 <DD>Thanks to Ed Phillips
68
+
67 69
 <PRE>.
68 70
 .
69 71
 .
... ...
@@ -95,10 +97,12 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
95 95
 .
96 96
 .
97 97
 </PRE>
98
-<DT><A NAME="foot167">... system:</A><A NAME="foot167"
99
- HREF="node12.html#tex2html18"><SUP>3</SUP></A>
98
+</DD>
99
+<DT><A NAME="foot168">... system:</A><A
100
+ HREF="node12.html#tex2html18"><SUP><SPAN CLASS="arabic">3</SPAN></SUP></A></DT>
100 101
 <DD>Cygwin note: If you don't have
101 102
     /etc/passwd you don't need that.
103
+
102 104
 <PRE>.
103 105
 .
104 106
 .
... ...
@@ -130,10 +134,12 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
130 130
 .
131 131
 .
132 132
 </PRE>
133
-<DT><A NAME="foot1033">... file.</A><A NAME="foot1033"
134
- HREF="node15.html#tex2html20"><SUP>4</SUP></A>
133
+</DD>
134
+<DT><A NAME="foot1050">... file.</A><A
135
+ HREF="node15.html#tex2html20"><SUP><SPAN CLASS="arabic">4</SPAN></SUP></A></DT>
135 136
 <DD>More info
136
-    on clamscan options: <B>man clamscan</B>
137
+    on clamscan options: <SPAN  CLASS="textbf">man clamscan</SPAN>
138
+
137 139
 <PRE>.
138 140
 .
139 141
 .
... ...
@@ -165,10 +171,12 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
165 165
 .
166 166
 .
167 167
 </PRE>
168
-<DT><A NAME="foot415">... tests.</A><A NAME="foot415"
169
- HREF="node22.html#tex2html78"><SUP>5</SUP></A>
168
+</DD>
169
+<DT><A NAME="foot418">... tests.</A><A
170
+ HREF="node22.html#tex2html79"><SUP><SPAN CLASS="arabic">5</SPAN></SUP></A></DT>
170 171
 <DD>It works
171 172
     similarly to the well known file(1) command.
173
+
172 174
 <PRE>.
173 175
 .
174 176
 .
... ...
@@ -200,10 +208,12 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
200 200
 .
201 201
 .
202 202
 </PRE>
203
-<DT><A NAME="foot465">... automatically.</A><A NAME="foot465"
204
- HREF="node25.html#tex2html79"><SUP>6</SUP></A>
205
-<DD>Make sure the commercial scanner's
206
-    license does not disallow sigtool usage !
203
+</DD>
204
+<DT><A NAME="foot468">... !</A><A
205
+ HREF="node25.html#tex2html80"><SUP><SPAN CLASS="arabic">6</SPAN></SUP></A></DT>
206
+<DD>sigtool is not used by the ClamAV team to create official
207
+    signatures
208
+
207 209
 <PRE>.
208 210
 .
209 211
 .
... ...
@@ -235,10 +245,12 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
235 235
 .
236 236
 .
237 237
 </PRE>
238
-<DT><A NAME="foot1107">... read.</A><A NAME="foot1107"
239
- HREF="node27.html#tex2html80"><SUP>7</SUP></A>
238
+</DD>
239
+<DT><A NAME="foot1124">... read.</A><A
240
+ HREF="node27.html#tex2html81"><SUP><SPAN CLASS="arabic">7</SPAN></SUP></A></DT>
240 241
 <DD>Only in a one-file mode (in recursive mode those errors
241 242
 	    are ignored).
243
+
242 244
 <PRE>.
243 245
 .
244 246
 .
... ...
@@ -270,10 +282,12 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
270 270
 .
271 271
 .
272 272
 </PRE>
273
-<DT><A NAME="foot728">...added </A><A NAME="foot728"
274
- HREF="node75.html#tex2html125"><SUP>8</SUP></A>
273
+</DD>
274
+<DT><A NAME="foot742">...added </A><A
275
+ HREF="node78.html#tex2html129"><SUP><SPAN CLASS="arabic">8</SPAN></SUP></A></DT>
275 276
 <DD>Remember to initialize
276 277
     the virus counter variable with 0.
278
+
277 279
 <PRE>.
278 280
 .
279 281
 .
... ...
@@ -305,6 +319,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
305 305
 .
306 306
 .
307 307
 </PRE>
308
+</DD>
308 309
 </DL>
309 310
 </BODY>
310 311
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -23,8 +22,9 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
23 23
 </HEAD>
24 24
 
25 25
 <BODY >
26
-<!--Navigation Panel-->
27
-<A NAME="tex2html167"
26
+
27
+<DIV CLASS="navigation"><!--Navigation Panel-->
28
+<A NAME="tex2html173"
28 29
   HREF="node1.html">
29 30
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
30 31
  SRC="/usr/share/latex2html/icons/next.png"></A> 
... ...
@@ -32,23 +32,23 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
32 32
  SRC="/usr/share/latex2html/icons/up_g.png"> 
33 33
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
34 34
  SRC="/usr/share/latex2html/icons/prev_g.png"> 
35
-<A NAME="tex2html165"
35
+<A NAME="tex2html171"
36 36
   HREF="node1.html">
37 37
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
38 38
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
39 39
 <BR>
40
-<B> Next:</B> <A NAME="tex2html168"
40
+<B> Next:</B> <A NAME="tex2html174"
41 41
   HREF="node1.html">Contents</A>
42
- &nbsp <B>  <A NAME="tex2html166"
42
+ &nbsp; <B>  <A NAME="tex2html172"
43 43
   HREF="node1.html">Contents</A></B> 
44 44
 <BR>
45
-<BR>
45
+<BR></DIV>
46 46
 <!--End of Navigation Panel-->
47 47
 
48 48
 <P>
49 49
 
50 50
     <IMG
51
- WIDTH="562" HEIGHT="552" ALIGN="BOTTOM" BORDER="0"
51
+ WIDTH="561" HEIGHT="552" ALIGN="BOTTOM" BORDER="0"
52 52
  SRC="img2.png"
53 53
  ALT="\includegraphics[width=353pt]{clam.eps}">
54 54
     <BR>
... ...
@@ -60,12 +60,12 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
60 60
 <BR>
61 61
 <BR>
62 62
     <DIV ALIGN="RIGHT">
63
-<BR>	<FONT SIZE="+3">Clam AntiVirus 0.74
64
-<BR>	<FONT SIZE="+3">User Manual
63
+<BR>	<BIG CLASS="HUGE">Clam AntiVirus 0.75
64
+<BR>	<BIG CLASS="HUGE">User Manual
65 65
 <BR>	<BR>
66
-	<FONT SIZE="+2"><I>by Tomasz Kojm</I>
66
+	<BIG CLASS="XLARGE"><SPAN  CLASS="textit">by Tomasz Kojm</SPAN>
67 67
     
68
-</FONT></FONT></FONT></DIV>
68
+</BIG></BIG></BIG></DIV>
69 69
 
70 70
 <P>
71 71
 
... ...
@@ -73,213 +73,219 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
73 73
 <!--Table of Child-Links-->
74 74
 <A NAME="CHILD_LINKS"></A>
75 75
 
76
-<UL>
77
-<LI><A NAME="tex2html169"
76
+<UL CLASS="ChildLinks">
77
+<LI><A NAME="tex2html175"
78 78
   HREF="node1.html">Contents</A>
79
-<LI><A NAME="tex2html170"
79
+<LI><A NAME="tex2html176"
80 80
   HREF="node2.html">Introduction</A>
81 81
 <UL>
82
-<LI><A NAME="tex2html171"
82
+<LI><A NAME="tex2html177"
83 83
   HREF="node3.html">Features</A>
84
-<LI><A NAME="tex2html172"
84
+<LI><A NAME="tex2html178"
85 85
   HREF="node4.html">Mailing lists</A>
86
-<LI><A NAME="tex2html173"
86
+<LI><A NAME="tex2html179"
87 87
   HREF="node5.html">Virus submitting</A>
88 88
 </UL>
89 89
 <BR>
90
-<LI><A NAME="tex2html174"
90
+<LI><A NAME="tex2html180"
91 91
   HREF="node6.html">Installation</A>
92 92
 <UL>
93
-<LI><A NAME="tex2html175"
93
+<LI><A NAME="tex2html181"
94 94
   HREF="node7.html">Supported platforms</A>
95
-<LI><A NAME="tex2html176"
95
+<LI><A NAME="tex2html182"
96 96
   HREF="node8.html">Binary packages - stable versions</A>
97
-<LI><A NAME="tex2html177"
97
+<LI><A NAME="tex2html183"
98 98
   HREF="node9.html">Binary packages - snapshots</A>
99
-<LI><A NAME="tex2html178"
99
+<LI><A NAME="tex2html184"
100 100
   HREF="node10.html">Requirements</A>
101
-<LI><A NAME="tex2html179"
101
+<LI><A NAME="tex2html185"
102 102
   HREF="node11.html">Installing on a shell account</A>
103
-<LI><A NAME="tex2html180"
103
+<LI><A NAME="tex2html186"
104 104
   HREF="node12.html">New system user and group</A>
105
-<LI><A NAME="tex2html181"
105
+<LI><A NAME="tex2html187"
106 106
   HREF="node13.html">Compilation</A>
107
-<LI><A NAME="tex2html182"
107
+<LI><A NAME="tex2html188"
108 108
   HREF="node14.html">Configuration</A>
109
-<LI><A NAME="tex2html183"
109
+<LI><A NAME="tex2html189"
110 110
   HREF="node15.html">Testing</A>
111
-<LI><A NAME="tex2html184"
111
+<LI><A NAME="tex2html190"
112 112
   HREF="node16.html">freshclam: Setting up auto-updating</A>
113
-<LI><A NAME="tex2html185"
113
+<LI><A NAME="tex2html191"
114 114
   HREF="node17.html">Database mirrors</A>
115 115
 </UL>
116 116
 <BR>
117
-<LI><A NAME="tex2html186"
117
+<LI><A NAME="tex2html192"
118 118
   HREF="node18.html">Usage</A>
119 119
 <UL>
120
-<LI><A NAME="tex2html187"
120
+<LI><A NAME="tex2html193"
121 121
   HREF="node19.html">Clam daemon</A>
122
-<LI><A NAME="tex2html188"
123
-  HREF="node20.html">Clam<B>d</B>scan</A>
124
-<LI><A NAME="tex2html189"
122
+<LI><A NAME="tex2html194"
123
+  HREF="node20.html">Clam<SPAN  CLASS="textbf">d</SPAN>scan</A>
124
+<LI><A NAME="tex2html195"
125 125
   HREF="node21.html">Clamuko</A>
126
-<LI><A NAME="tex2html190"
126
+<LI><A NAME="tex2html196"
127 127
   HREF="node22.html">Archives and compressed files</A>
128
-<LI><A NAME="tex2html191"
128
+<LI><A NAME="tex2html197"
129 129
   HREF="node23.html">Mail files</A>
130
-<LI><A NAME="tex2html192"
130
+<LI><A NAME="tex2html198"
131 131
   HREF="node24.html">Output format</A>
132
-<LI><A NAME="tex2html193"
132
+<LI><A NAME="tex2html199"
133 133
   HREF="node25.html">Signature Tool</A>
134 134
 </UL>
135 135
 <BR>
136
-<LI><A NAME="tex2html194"
136
+<LI><A NAME="tex2html200"
137 137
   HREF="node26.html">Problem solving</A>
138 138
 <UL>
139
-<LI><A NAME="tex2html195"
139
+<LI><A NAME="tex2html201"
140 140
   HREF="node27.html">Return codes</A>
141 141
 </UL>
142 142
 <BR>
143
-<LI><A NAME="tex2html196"
143
+<LI><A NAME="tex2html202"
144 144
   HREF="node28.html">Third party software</A>
145 145
 <UL>
146
-<LI><A NAME="tex2html197"
147
-  HREF="node29.html">clamav-milter</A>
148
-<LI><A NAME="tex2html198"
149
-  HREF="node30.html">IVS Milter</A>
150
-<LI><A NAME="tex2html199"
151
-  HREF="node31.html">smtp-vilter</A>
152
-<LI><A NAME="tex2html200"
153
-  HREF="node32.html">mod_clamav</A>
154
-<LI><A NAME="tex2html201"
155
-  HREF="node33.html">AMaViS - "Next Generation"</A>
156
-<LI><A NAME="tex2html202"
157
-  HREF="node34.html">amavisd-new</A>
158 146
 <LI><A NAME="tex2html203"
159
-  HREF="node35.html">Qmail-Scanner</A>
147
+  HREF="node29.html">clamav-milter</A>
160 148
 <LI><A NAME="tex2html204"
161
-  HREF="node36.html">Sagator</A>
149
+  HREF="node30.html">IVS Milter</A>
162 150
 <LI><A NAME="tex2html205"
163
-  HREF="node37.html">ClamdMail</A>
151
+  HREF="node31.html">smtp-vilter</A>
164 152
 <LI><A NAME="tex2html206"
165
-  HREF="node38.html">BlackHole</A>
153
+  HREF="node32.html">mod_clamav</A>
166 154
 <LI><A NAME="tex2html207"
167
-  HREF="node39.html">MailScanner</A>
155
+  HREF="node33.html">AMaViS - "Next Generation"</A>
168 156
 <LI><A NAME="tex2html208"
169
-  HREF="node40.html">MIMEDefang</A>
157
+  HREF="node34.html">amavisd-new</A>
170 158
 <LI><A NAME="tex2html209"
171
-  HREF="node41.html">exiscan</A>
159
+  HREF="node35.html">Qmail-Scanner</A>
172 160
 <LI><A NAME="tex2html210"
173
-  HREF="node42.html">scanexi</A>
161
+  HREF="node36.html">Sagator</A>
174 162
 <LI><A NAME="tex2html211"
175
-  HREF="node43.html">Mail::ClamAV</A>
163
+  HREF="node37.html">ClamdMail</A>
176 164
 <LI><A NAME="tex2html212"
177
-  HREF="node44.html">OpenAntiVirus samba-vscan</A>
165
+  HREF="node38.html">BlackHole</A>
178 166
 <LI><A NAME="tex2html213"
179
-  HREF="node45.html">Sylpheed Claws</A>
167
+  HREF="node39.html">MailScanner</A>
180 168
 <LI><A NAME="tex2html214"
181
-  HREF="node46.html">nclamd</A>
169
+  HREF="node40.html">MIMEDefang</A>
182 170
 <LI><A NAME="tex2html215"
183
-  HREF="node47.html">cgpav</A>
171
+  HREF="node41.html">exiscan</A>
184 172
 <LI><A NAME="tex2html216"
185
-  HREF="node48.html">j-chkmail</A>
173
+  HREF="node42.html">scanexi</A>
186 174
 <LI><A NAME="tex2html217"
187
-  HREF="node49.html">qscanq</A>
175
+  HREF="node43.html">Mail::ClamAV</A>
188 176
 <LI><A NAME="tex2html218"
189
-  HREF="node50.html">clamavr</A>
177
+  HREF="node44.html">File::Scan::ClamAV</A>
190 178
 <LI><A NAME="tex2html219"
191
-  HREF="node51.html">pyclamav</A>
179
+  HREF="node45.html">OpenAntiVirus samba-vscan</A>
192 180
 <LI><A NAME="tex2html220"
193
-  HREF="node52.html">DansGuardian Anti-Virus Plugin</A>
181
+  HREF="node46.html">Sylpheed Claws</A>
194 182
 <LI><A NAME="tex2html221"
195
-  HREF="node53.html">Viralator</A>
183
+  HREF="node47.html">nclamd</A>
196 184
 <LI><A NAME="tex2html222"
197
-  HREF="node54.html">ClamAssassin</A>
185
+  HREF="node48.html">cgpav</A>
198 186
 <LI><A NAME="tex2html223"
199
-  HREF="node55.html">clamscan-procfilter</A>
187
+  HREF="node49.html">j-chkmail</A>
200 188
 <LI><A NAME="tex2html224"
201
-  HREF="node56.html">MyClamMailFilter</A>
189
+  HREF="node50.html">qscanq</A>
202 190
 <LI><A NAME="tex2html225"
203
-  HREF="node57.html">Gadoyanvirus</A>
191
+  HREF="node51.html">clamavr</A>
204 192
 <LI><A NAME="tex2html226"
205
-  HREF="node58.html">OpenProtect</A>
193
+  HREF="node52.html">pyclamav</A>
206 194
 <LI><A NAME="tex2html227"
207
-  HREF="node59.html">RevolSys SMTP kit for Postfix</A>
195
+  HREF="node53.html">DansGuardian Anti-Virus Plugin</A>
208 196
 <LI><A NAME="tex2html228"
209
-  HREF="node60.html">POP3 Virus Scanner Daemon</A>
197
+  HREF="node54.html">Viralator</A>
210 198
 <LI><A NAME="tex2html229"
211
-  HREF="node61.html">mailman-clamav</A>
199
+  HREF="node55.html">ClamAssassin</A>
212 200
 <LI><A NAME="tex2html230"
213
-  HREF="node62.html">wbmclamav</A>
201
+  HREF="node56.html">clamscan-procfilter</A>
214 202
 <LI><A NAME="tex2html231"
215
-  HREF="node63.html">Scan Log Analyzer</A>
203
+  HREF="node57.html">MyClamMailFilter</A>
216 204
 <LI><A NAME="tex2html232"
217
-  HREF="node64.html">mailgraph</A>
205
+  HREF="node58.html">Gadoyanvirus</A>
218 206
 <LI><A NAME="tex2html233"
219
-  HREF="node65.html">INSERT</A>
207
+  HREF="node59.html">OpenProtect</A>
220 208
 <LI><A NAME="tex2html234"
221
-  HREF="node66.html">Local Area Security</A>
209
+  HREF="node60.html">RevolSys SMTP kit for Postfix</A>
222 210
 <LI><A NAME="tex2html235"
223
-  HREF="node67.html">ClamWin</A>
211
+  HREF="node61.html">POP3 Virus Scanner Daemon</A>
224 212
 <LI><A NAME="tex2html236"
225
-  HREF="node68.html">KlamAV</A>
213
+  HREF="node62.html">mailman-clamav</A>
226 214
 <LI><A NAME="tex2html237"
227
-  HREF="node69.html">Clamaktion</A>
215
+  HREF="node63.html">wbmclamav</A>
228 216
 <LI><A NAME="tex2html238"
229
-  HREF="node70.html">QMVC - Qmail Mail and Virus Control</A>
217
+  HREF="node64.html">Scan Log Analyzer</A>
230 218
 <LI><A NAME="tex2html239"
231
-  HREF="node71.html">FETCAV</A>
219
+  HREF="node65.html">mailgraph</A>
232 220
 <LI><A NAME="tex2html240"
233
-  HREF="node72.html">Famuko</A>
221
+  HREF="node66.html">INSERT</A>
234 222
 <LI><A NAME="tex2html241"
235
-  HREF="node73.html">SoftlabsAV</A>
236
-</UL>
237
-<BR>
223
+  HREF="node67.html">Local Area Security</A>
238 224
 <LI><A NAME="tex2html242"
239
-  HREF="node74.html">LibClamAV</A>
240
-<UL>
225
+  HREF="node68.html">redWall Firewall</A>
241 226
 <LI><A NAME="tex2html243"
242
-  HREF="node75.html">General API</A>
227
+  HREF="node69.html">ClamWin</A>
243 228
 <LI><A NAME="tex2html244"
244
-  HREF="node76.html">Database reloading</A>
229
+  HREF="node70.html">KlamAV</A>
245 230
 <LI><A NAME="tex2html245"
246
-  HREF="node77.html">Scan engine</A>
231
+  HREF="node71.html">Clamaktion</A>
247 232
 <LI><A NAME="tex2html246"
248
-  HREF="node78.html">CVD format</A>
249
-</UL>
250
-<BR>
233
+  HREF="node72.html">QMVC - Qmail Mail and Virus Control</A>
251 234
 <LI><A NAME="tex2html247"
252
-  HREF="node79.html">Credits</A>
253
-<UL>
235
+  HREF="node73.html">FETCAV</A>
254 236
 <LI><A NAME="tex2html248"
255
-  HREF="node80.html">Contributors</A>
237
+  HREF="node74.html">Famuko</A>
256 238
 <LI><A NAME="tex2html249"
257
-  HREF="node81.html">Donors</A>
239
+  HREF="node75.html">SoftlabsAV</A>
240
+<LI><A NAME="tex2html250"
241
+  HREF="node76.html">OdeiaVir</A>
258 242
 </UL>
259 243
 <BR>
260
-<LI><A NAME="tex2html250"
261
-  HREF="node82.html">Authors</A>
262
-<UL>
263 244
 <LI><A NAME="tex2html251"
264
-  HREF="node83.html">Virus database maintainers</A>
245
+  HREF="node77.html">LibClamAV</A>
246
+<UL>
265 247
 <LI><A NAME="tex2html252"
266
-  HREF="node84.html">Network management</A>
248
+  HREF="node78.html">General API</A>
267 249
 <LI><A NAME="tex2html253"
268
-  HREF="node85.html">Graphics</A>
250
+  HREF="node79.html">Database reloading</A>
269 251
 <LI><A NAME="tex2html254"
270
-  HREF="node86.html">Core developers</A>
252
+  HREF="node80.html">Scan engine</A>
253
+<LI><A NAME="tex2html255"
254
+  HREF="node81.html">CVD format</A>
271 255
 </UL>
272 256
 <BR>
273
-<LI><A NAME="tex2html255"
274
-  HREF="node87.html">Bibliography</A>
275 257
 <LI><A NAME="tex2html256"
276
-  HREF="node88.html">About this document ...</A>
258
+  HREF="node82.html">Credits</A>
259
+<UL>
260
+<LI><A NAME="tex2html257"
261
+  HREF="node83.html">Contributors</A>
262
+<LI><A NAME="tex2html258"
263
+  HREF="node84.html">Donors</A>
264
+</UL>
265
+<BR>
266
+<LI><A NAME="tex2html259"
267
+  HREF="node85.html">Authors</A>
268
+<UL>
269
+<LI><A NAME="tex2html260"
270
+  HREF="node86.html">Virus database maintainers</A>
271
+<LI><A NAME="tex2html261"
272
+  HREF="node87.html">Network management</A>
273
+<LI><A NAME="tex2html262"
274
+  HREF="node88.html">Graphics</A>
275
+<LI><A NAME="tex2html263"
276
+  HREF="node89.html">Core developers</A>
277
+</UL>
278
+<BR>
279
+<LI><A NAME="tex2html264"
280
+  HREF="node90.html">Bibliography</A>
281
+<LI><A NAME="tex2html265"
282
+  HREF="node91.html">About this document ...</A>
277 283
 </UL>
278 284
 <!--End of Table of Child-Links-->
279 285
 <BR><HR>
280 286
 <ADDRESS>
281 287
 Tomasz Kojm
282
-2004-06-29
288
+2004-07-22
283 289
 </ADDRESS>
284 290
 </BODY>
285 291
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,28 +25,29 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html265"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html274"
31 32
   HREF="node2.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html263"
35
+<A NAME="tex2html272"
35 36
   HREF="clamdoc.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html257"
39
+<A NAME="tex2html266"
39 40
   HREF="clamdoc.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A>   
42 43
 <BR>
43
-<B> Next:</B> <A NAME="tex2html266"
44
+<B> Next:</B> <A NAME="tex2html275"
44 45
   HREF="node2.html">Introduction</A>
45
-<B> Up:</B> <A NAME="tex2html264"
46
+<B> Up:</B> <A NAME="tex2html273"
46 47
   HREF="clamdoc.html">clamdoc</A>
47
-<B> Previous:</B> <A NAME="tex2html258"
48
+<B> Previous:</B> <A NAME="tex2html267"
48 49
   HREF="clamdoc.html">clamdoc</A>
49 50
 <BR>
50
-<BR>
51
+<BR></DIV>
51 52
 <!--End of Navigation Panel-->
52 53
 <BR>
53 54
 
... ...
@@ -56,205 +56,209 @@ Contents</A>
56 56
 </H2>
57 57
 <!--Table of Contents-->
58 58
 
59
-<UL>
60
-<LI><A NAME="tex2html267"
59
+<UL CLASS="TofC">
60
+<LI><A NAME="tex2html276"
61 61
   HREF="node2.html">Introduction</A>
62 62
 <UL>
63
-<LI><A NAME="tex2html268"
63
+<LI><A NAME="tex2html277"
64 64
   HREF="node3.html">Features</A>
65
-<LI><A NAME="tex2html269"
65
+<LI><A NAME="tex2html278"
66 66
   HREF="node4.html">Mailing lists</A>
67
-<LI><A NAME="tex2html270"
67
+<LI><A NAME="tex2html279"
68 68
   HREF="node5.html">Virus submitting</A>
69 69
 </UL>
70 70
 <BR>
71
-<LI><A NAME="tex2html271"
71
+<LI><A NAME="tex2html280"
72 72
   HREF="node6.html">Installation</A>
73 73
 <UL>
74
-<LI><A NAME="tex2html272"
74
+<LI><A NAME="tex2html281"
75 75
   HREF="node7.html">Supported platforms</A>
76
-<LI><A NAME="tex2html273"
76
+<LI><A NAME="tex2html282"
77 77
   HREF="node8.html">Binary packages - stable versions</A>
78
-<LI><A NAME="tex2html274"
78
+<LI><A NAME="tex2html283"
79 79
   HREF="node9.html">Binary packages - snapshots</A>
80
-<LI><A NAME="tex2html275"
80
+<LI><A NAME="tex2html284"
81 81
   HREF="node10.html">Requirements</A>
82
-<LI><A NAME="tex2html276"
82
+<LI><A NAME="tex2html285"
83 83
   HREF="node11.html">Installing on a shell account</A>
84
-<LI><A NAME="tex2html277"
84
+<LI><A NAME="tex2html286"
85 85
   HREF="node12.html">New system user and group</A>
86
-<LI><A NAME="tex2html278"
86
+<LI><A NAME="tex2html287"
87 87
   HREF="node13.html">Compilation</A>
88
-<LI><A NAME="tex2html279"
88
+<LI><A NAME="tex2html288"
89 89
   HREF="node14.html">Configuration</A>
90
-<LI><A NAME="tex2html280"
90
+<LI><A NAME="tex2html289"
91 91
   HREF="node15.html">Testing</A>
92
-<LI><A NAME="tex2html281"
92
+<LI><A NAME="tex2html290"
93 93
   HREF="node16.html">freshclam: Setting up auto-updating</A>
94
-<LI><A NAME="tex2html282"
94
+<LI><A NAME="tex2html291"
95 95
   HREF="node17.html">Database mirrors</A>
96 96
 </UL>
97 97
 <BR>
98
-<LI><A NAME="tex2html283"
98
+<LI><A NAME="tex2html292"
99 99
   HREF="node18.html">Usage</A>
100 100
 <UL>
101
-<LI><A NAME="tex2html284"
101
+<LI><A NAME="tex2html293"
102 102
   HREF="node19.html">Clam daemon</A>
103
-<LI><A NAME="tex2html285"
104
-  HREF="node20.html">Clam<B>d</B>scan</A>
105
-<LI><A NAME="tex2html286"
103
+<LI><A NAME="tex2html294"
104
+  HREF="node20.html">Clamdscan</A>
105
+<LI><A NAME="tex2html295"
106 106
   HREF="node21.html">Clamuko</A>
107
-<LI><A NAME="tex2html287"
107
+<LI><A NAME="tex2html296"
108 108
   HREF="node22.html">Archives and compressed files</A>
109
-<LI><A NAME="tex2html288"
109
+<LI><A NAME="tex2html297"
110 110
   HREF="node23.html">Mail files</A>
111
-<LI><A NAME="tex2html289"
111
+<LI><A NAME="tex2html298"
112 112
   HREF="node24.html">Output format</A>
113
-<LI><A NAME="tex2html290"
113
+<LI><A NAME="tex2html299"
114 114
   HREF="node25.html">Signature Tool</A>
115 115
 </UL>
116 116
 <BR>
117
-<LI><A NAME="tex2html291"
117
+<LI><A NAME="tex2html300"
118 118
   HREF="node26.html">Problem solving</A>
119 119
 <UL>
120
-<LI><A NAME="tex2html292"
120
+<LI><A NAME="tex2html301"
121 121
   HREF="node27.html">Return codes</A>
122 122
 </UL>
123 123
 <BR>
124
-<LI><A NAME="tex2html293"
124
+<LI><A NAME="tex2html302"
125 125
   HREF="node28.html">Third party software</A>
126 126
 <UL>
127
-<LI><A NAME="tex2html294"
128
-  HREF="node29.html">clamav-milter</A>
129
-<LI><A NAME="tex2html295"
130
-  HREF="node30.html">IVS Milter</A>
131
-<LI><A NAME="tex2html296"
132
-  HREF="node31.html">smtp-vilter</A>
133
-<LI><A NAME="tex2html297"
134
-  HREF="node32.html">mod_clamav</A>
135
-<LI><A NAME="tex2html298"
136
-  HREF="node33.html">AMaViS - "Next Generation"</A>
137
-<LI><A NAME="tex2html299"
138
-  HREF="node34.html">amavisd-new</A>
139
-<LI><A NAME="tex2html300"
140
-  HREF="node35.html">Qmail-Scanner</A>
141
-<LI><A NAME="tex2html301"
142
-  HREF="node36.html">Sagator</A>
143
-<LI><A NAME="tex2html302"
144
-  HREF="node37.html">ClamdMail</A>
145 127
 <LI><A NAME="tex2html303"
146
-  HREF="node38.html">BlackHole</A>
128
+  HREF="node29.html">clamav-milter</A>
147 129
 <LI><A NAME="tex2html304"
148
-  HREF="node39.html">MailScanner</A>
130
+  HREF="node30.html">IVS Milter</A>
149 131
 <LI><A NAME="tex2html305"
150
-  HREF="node40.html">MIMEDefang</A>
132
+  HREF="node31.html">smtp-vilter</A>
151 133
 <LI><A NAME="tex2html306"
152
-  HREF="node41.html">exiscan</A>
134
+  HREF="node32.html">mod_clamav</A>
153 135
 <LI><A NAME="tex2html307"
154
-  HREF="node42.html">scanexi</A>
136
+  HREF="node33.html">AMaViS - "Next Generation"</A>
155 137
 <LI><A NAME="tex2html308"
156
-  HREF="node43.html">Mail::ClamAV</A>
138
+  HREF="node34.html">amavisd-new</A>
157 139
 <LI><A NAME="tex2html309"
158
-  HREF="node44.html">OpenAntiVirus samba-vscan</A>
140
+  HREF="node35.html">Qmail-Scanner</A>
159 141
 <LI><A NAME="tex2html310"
160
-  HREF="node45.html">Sylpheed Claws</A>
142
+  HREF="node36.html">Sagator</A>
161 143
 <LI><A NAME="tex2html311"
162
-  HREF="node46.html">nclamd</A>
144
+  HREF="node37.html">ClamdMail</A>
163 145
 <LI><A NAME="tex2html312"
164
-  HREF="node47.html">cgpav</A>
146
+  HREF="node38.html">BlackHole</A>
165 147
 <LI><A NAME="tex2html313"
166
-  HREF="node48.html">j-chkmail</A>
148
+  HREF="node39.html">MailScanner</A>
167 149
 <LI><A NAME="tex2html314"
168
-  HREF="node49.html">qscanq</A>
150
+  HREF="node40.html">MIMEDefang</A>
169 151
 <LI><A NAME="tex2html315"
170
-  HREF="node50.html">clamavr</A>
152
+  HREF="node41.html">exiscan</A>
171 153
 <LI><A NAME="tex2html316"
172
-  HREF="node51.html">pyclamav</A>
154
+  HREF="node42.html">scanexi</A>
173 155
 <LI><A NAME="tex2html317"
174
-  HREF="node52.html">DansGuardian Anti-Virus Plugin</A>
156
+  HREF="node43.html">Mail::ClamAV</A>
175 157
 <LI><A NAME="tex2html318"
176
-  HREF="node53.html">Viralator</A>
158
+  HREF="node44.html">File::Scan::ClamAV</A>
177 159
 <LI><A NAME="tex2html319"
178
-  HREF="node54.html">ClamAssassin</A>
160
+  HREF="node45.html">OpenAntiVirus samba-vscan</A>
179 161
 <LI><A NAME="tex2html320"
180
-  HREF="node55.html">clamscan-procfilter</A>
162
+  HREF="node46.html">Sylpheed Claws</A>
181 163
 <LI><A NAME="tex2html321"
182
-  HREF="node56.html">MyClamMailFilter</A>
164
+  HREF="node47.html">nclamd</A>
183 165
 <LI><A NAME="tex2html322"
184
-  HREF="node57.html">Gadoyanvirus</A>
166
+  HREF="node48.html">cgpav</A>
185 167
 <LI><A NAME="tex2html323"
186
-  HREF="node58.html">OpenProtect</A>
168
+  HREF="node49.html">j-chkmail</A>
187 169
 <LI><A NAME="tex2html324"
188
-  HREF="node59.html">RevolSys SMTP kit for Postfix</A>
170
+  HREF="node50.html">qscanq</A>
189 171
 <LI><A NAME="tex2html325"
190
-  HREF="node60.html">POP3 Virus Scanner Daemon</A>
172
+  HREF="node51.html">clamavr</A>
191 173
 <LI><A NAME="tex2html326"
192
-  HREF="node61.html">mailman-clamav</A>
174
+  HREF="node52.html">pyclamav</A>
193 175
 <LI><A NAME="tex2html327"
194
-  HREF="node62.html">wbmclamav</A>
176
+  HREF="node53.html">DansGuardian Anti-Virus Plugin</A>
195 177
 <LI><A NAME="tex2html328"
196
-  HREF="node63.html">Scan Log Analyzer</A>
178
+  HREF="node54.html">Viralator</A>
197 179
 <LI><A NAME="tex2html329"
198
-  HREF="node64.html">mailgraph</A>
180
+  HREF="node55.html">ClamAssassin</A>
199 181
 <LI><A NAME="tex2html330"
200
-  HREF="node65.html">INSERT</A>
182
+  HREF="node56.html">clamscan-procfilter</A>
201 183
 <LI><A NAME="tex2html331"
202
-  HREF="node66.html">Local Area Security</A>
184
+  HREF="node57.html">MyClamMailFilter</A>
203 185
 <LI><A NAME="tex2html332"
204
-  HREF="node67.html">ClamWin</A>
186
+  HREF="node58.html">Gadoyanvirus</A>
205 187
 <LI><A NAME="tex2html333"
206
-  HREF="node68.html">KlamAV</A>
188
+  HREF="node59.html">OpenProtect</A>
207 189
 <LI><A NAME="tex2html334"
208
-  HREF="node69.html">Clamaktion</A>
190
+  HREF="node60.html">RevolSys SMTP kit for Postfix</A>
209 191
 <LI><A NAME="tex2html335"
210
-  HREF="node70.html">QMVC - Qmail Mail and Virus Control</A>
192
+  HREF="node61.html">POP3 Virus Scanner Daemon</A>
211 193
 <LI><A NAME="tex2html336"
212
-  HREF="node71.html">FETCAV</A>
194
+  HREF="node62.html">mailman-clamav</A>
213 195
 <LI><A NAME="tex2html337"
214
-  HREF="node72.html">Famuko</A>
196
+  HREF="node63.html">wbmclamav</A>
215 197
 <LI><A NAME="tex2html338"
216
-  HREF="node73.html">SoftlabsAV</A>
217
-</UL>
218
-<BR>
198
+  HREF="node64.html">Scan Log Analyzer</A>
219 199
 <LI><A NAME="tex2html339"
220
-  HREF="node74.html">LibClamAV</A>
221
-<UL>
200
+  HREF="node65.html">mailgraph</A>
222 201
 <LI><A NAME="tex2html340"
223
-  HREF="node75.html">General API</A>
202
+  HREF="node66.html">INSERT</A>
224 203
 <LI><A NAME="tex2html341"
225
-  HREF="node76.html">Database reloading</A>
204
+  HREF="node67.html">Local Area Security</A>
226 205
 <LI><A NAME="tex2html342"
227
-  HREF="node77.html">Scan engine</A>
206
+  HREF="node68.html">redWall Firewall</A>
228 207
 <LI><A NAME="tex2html343"
229
-  HREF="node78.html">CVD format</A>
230
-</UL>
231
-<BR>
208
+  HREF="node69.html">ClamWin</A>
232 209
 <LI><A NAME="tex2html344"
233
-  HREF="node79.html">Credits</A>
234
-<UL>
210
+  HREF="node70.html">KlamAV</A>
235 211
 <LI><A NAME="tex2html345"
236
-  HREF="node80.html">Contributors</A>
212
+  HREF="node71.html">Clamaktion</A>
237 213
 <LI><A NAME="tex2html346"
238
-  HREF="node81.html">Donors</A>
239
-</UL>
240
-<BR>
214
+  HREF="node72.html">QMVC - Qmail Mail and Virus Control</A>
241 215
 <LI><A NAME="tex2html347"
242
-  HREF="node82.html">Authors</A>
243
-<UL>
216
+  HREF="node73.html">FETCAV</A>
244 217
 <LI><A NAME="tex2html348"
245
-  HREF="node83.html">Virus database maintainers</A>
218
+  HREF="node74.html">Famuko</A>
246 219
 <LI><A NAME="tex2html349"
247
-  HREF="node84.html">Network management</A>
220
+  HREF="node75.html">SoftlabsAV</A>
248 221
 <LI><A NAME="tex2html350"
249
-  HREF="node85.html">Graphics</A>
250
-<LI><A NAME="tex2html351"
251
-  HREF="node86.html">Core developers</A>
222
+  HREF="node76.html">OdeiaVir</A>
252 223
 </UL>
253 224
 <BR>
225
+<LI><A NAME="tex2html351"
226
+  HREF="node77.html">LibClamAV</A>
227
+<UL>
254 228
 <LI><A NAME="tex2html352"
255
-  HREF="node87.html">Bibliography</A>
229
+  HREF="node78.html">General API</A>
256 230
 <LI><A NAME="tex2html353"
257
-  HREF="node88.html">About this document ...</A>
231
+  HREF="node79.html">Database reloading</A>
232
+<LI><A NAME="tex2html354"
233
+  HREF="node80.html">Scan engine</A>
234
+<LI><A NAME="tex2html355"
235
+  HREF="node81.html">CVD format</A>
236
+</UL>
237
+<BR>
238
+<LI><A NAME="tex2html356"
239
+  HREF="node82.html">Credits</A>
240
+<UL>
241
+<LI><A NAME="tex2html357"
242
+  HREF="node83.html">Contributors</A>
243
+<LI><A NAME="tex2html358"
244
+  HREF="node84.html">Donors</A>
245
+</UL>
246
+<BR>
247
+<LI><A NAME="tex2html359"
248
+  HREF="node85.html">Authors</A>
249
+<UL>
250
+<LI><A NAME="tex2html360"
251
+  HREF="node86.html">Virus database maintainers</A>
252
+<LI><A NAME="tex2html361"
253
+  HREF="node87.html">Network management</A>
254
+<LI><A NAME="tex2html362"
255
+  HREF="node88.html">Graphics</A>
256
+<LI><A NAME="tex2html363"
257
+  HREF="node89.html">Core developers</A>
258
+</UL>
259
+<BR>
260
+<LI><A NAME="tex2html364"
261
+  HREF="node90.html">Bibliography</A>
258 262
 </UL>
259 263
 <!--End of Table of Contents-->    <BR>
260 264
 <BR>
... ...
@@ -293,7 +297,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
293 293
 <BR><HR>
294 294
 <ADDRESS>
295 295
 Tomasz Kojm
296
-2004-06-29
296
+2004-07-22
297 297
 </ADDRESS>
298 298
 </BODY>
299 299
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html472"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html483"
31 32
   HREF="node11.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html468"
35
+<A NAME="tex2html479"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html462"
39
+<A NAME="tex2html473"
39 40
   HREF="node9.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html470"
43
+<A NAME="tex2html481"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html473"
48
+<B> Next:</B> <A NAME="tex2html484"
48 49
   HREF="node11.html">Installing on a shell</A>
49
-<B> Up:</B> <A NAME="tex2html469"
50
+<B> Up:</B> <A NAME="tex2html480"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html463"
52
+<B> Previous:</B> <A NAME="tex2html474"
52 53
   HREF="node9.html">Binary packages - snapshots</A>
53
- &nbsp <B>  <A NAME="tex2html471"
54
+ &nbsp; <B>  <A NAME="tex2html482"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00034000000000000000">
... ...
@@ -68,7 +68,7 @@ Requirements</A>
68 68
     
69 69
 </LI>
70 70
 </UL>
71
-    The following packages are optional but <B>highly recommended</B>:
71
+    The following packages are optional but <SPAN  CLASS="textbf">highly recommended</SPAN>:
72 72
     
73 73
 <UL>
74 74
 <LI>bzip2 and bzip2-devel library
... ...
@@ -82,10 +82,10 @@ It's very important to install the GMP package because it allows
82 82
 	update. You can download GNU MP at <TT><A NAME="tex2html16"
83 83
   HREF="http://www.swox.com/gmp">http://www.swox.com/gmp</A></TT>
84 84
 <BR>
85
-A note for Solaris users: you should set the <I>ABI</I> system
85
+A note for Solaris users: you should set the <SPAN  CLASS="textit">ABI</SPAN> system
86 86
 	variable to 32 (e.g. <code>setenv ABI 32</code>) before running the
87 87
 	GMP's configure script <A NAME="tex2html17"
88
-  HREF="footnode.html#foot159"><SUP>2</SUP></A>.
88
+  HREF="footnode.html#foot160"><SUP><SPAN CLASS="arabic">2</SPAN></SUP></A>.
89 89
     
90 90
 </LI>
91 91
 </UL>
... ...
@@ -94,7 +94,7 @@ A note for Solaris users: you should set the <I>ABI</I> system
94 94
 <BR><HR>
95 95
 <ADDRESS>
96 96
 Tomasz Kojm
97
-2004-06-29
97
+2004-07-22
98 98
 </ADDRESS>
99 99
 </BODY>
100 100
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html484"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html495"
31 32
   HREF="node12.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html480"
35
+<A NAME="tex2html491"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html474"
39
+<A NAME="tex2html485"
39 40
   HREF="node10.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html482"
43
+<A NAME="tex2html493"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html485"
48
+<B> Next:</B> <A NAME="tex2html496"
48 49
   HREF="node12.html">New system user and</A>
49
-<B> Up:</B> <A NAME="tex2html481"
50
+<B> Up:</B> <A NAME="tex2html492"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html475"
52
+<B> Previous:</B> <A NAME="tex2html486"
52 53
   HREF="node10.html">Requirements</A>
53
- &nbsp <B>  <A NAME="tex2html483"
54
+ &nbsp; <B>  <A NAME="tex2html494"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00035000000000000000">
... ...
@@ -76,7 +76,7 @@ Installing on a shell account</A>
76 76
 <BR><HR>
77 77
 <ADDRESS>
78 78
 Tomasz Kojm
79
-2004-06-29
79
+2004-07-22
80 80
 </ADDRESS>
81 81
 </BODY>
82 82
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html496"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html507"
31 32
   HREF="node13.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html492"
35
+<A NAME="tex2html503"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html486"
39
+<A NAME="tex2html497"
39 40
   HREF="node11.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html494"
43
+<A NAME="tex2html505"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html497"
48
+<B> Next:</B> <A NAME="tex2html508"
48 49
   HREF="node13.html">Compilation</A>
49
-<B> Up:</B> <A NAME="tex2html493"
50
+<B> Up:</B> <A NAME="tex2html504"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html487"
52
+<B> Previous:</B> <A NAME="tex2html498"
52 53
   HREF="node11.html">Installing on a shell</A>
53
- &nbsp <B>  <A NAME="tex2html495"
54
+ &nbsp; <B>  <A NAME="tex2html506"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00036000000000000000">
... ...
@@ -61,27 +61,27 @@ New system user and group</A>
61 61
 </H2>
62 62
     If you are installing ClamAV for the first time, you have to add a new
63 63
     user and group to your system: <A NAME="tex2html18"
64
-  HREF="footnode.html#foot167"><SUP>3</SUP></A>    <PRE>
64
+  HREF="footnode.html#foot168"><SUP><SPAN CLASS="arabic">3</SPAN></SUP></A>    <PRE>
65 65
 	# groupadd clamav
66 66
 	# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
67 67
 </PRE>
68 68
     The above method works on Linux and Solaris - in case you don't have
69
-    <I>groupadd, useradd</I> please consult the system manual.
69
+    <SPAN  CLASS="textit">groupadd, useradd</SPAN> please consult the system manual.
70 70
     If you are installing ClamAV on a user account you may omit this step with
71 71
     the <code>--disable-clamav</code> option passed to the <code>configure</code> script:
72 72
     <PRE>
73 73
 	$ ./configure --disable-clamav
74 74
 </PRE>
75
-    It disables testing for existence of the <I>clamav</I> user and group.
76
-    <B>clamscan still requires the unprivileged user and group to work
77
-    in the superuser mode.</B> The password for that account should be locked
78
-    in <I>/etc/passwd</I> or <I>/etc/shadow</I>.
75
+    It disables testing for existence of the <SPAN  CLASS="textit">clamav</SPAN> user and group.
76
+    <SPAN  CLASS="textbf">clamscan still requires the unprivileged user and group to work
77
+    in the superuser mode.</SPAN> The password for that account should be locked
78
+    in <SPAN  CLASS="textit">/etc/passwd</SPAN> or <SPAN  CLASS="textit">/etc/shadow</SPAN>.
79 79
 
80 80
 <P>
81 81
 <BR><HR>
82 82
 <ADDRESS>
83 83
 Tomasz Kojm
84
-2004-06-29
84
+2004-07-22
85 85
 </ADDRESS>
86 86
 </BODY>
87 87
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html508"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html519"
31 32
   HREF="node14.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html504"
35
+<A NAME="tex2html515"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html498"
39
+<A NAME="tex2html509"
39 40
   HREF="node12.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html506"
43
+<A NAME="tex2html517"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html509"
48
+<B> Next:</B> <A NAME="tex2html520"
48 49
   HREF="node14.html">Configuration</A>
49
-<B> Up:</B> <A NAME="tex2html505"
50
+<B> Up:</B> <A NAME="tex2html516"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html499"
52
+<B> Previous:</B> <A NAME="tex2html510"
52 53
   HREF="node12.html">New system user and</A>
53
- &nbsp <B>  <A NAME="tex2html507"
54
+ &nbsp; <B>  <A NAME="tex2html518"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00037000000000000000">
... ...
@@ -70,21 +70,21 @@ Compilation</A>
70 70
     <PRE>
71 71
 	$ ./configure --sysconfdir=/etc
72 72
 </PRE>
73
-    Currently <I>gcc</I> is required for the compilation. Support for other
73
+    Currently <SPAN  CLASS="textit">gcc</SPAN> is required for the compilation. Support for other
74 74
     compilers will be added in the near future.
75 75
     <PRE>
76 76
 	$ make
77 77
 	$ su -c "make install"
78 78
 </PRE>
79 79
     In the last step software is installed in the /usr/local directory
80
-    and the config file goes to /etc. <B>WARNING: Never enable the SUID
81
-    or SGID bits in Clam AntiVirus binaries.</B>
80
+    and the config file goes to /etc. <SPAN  CLASS="textbf">WARNING: Never enable the SUID
81
+    or SGID bits in Clam AntiVirus binaries.</SPAN>
82 82
 
83 83
 <P>
84 84
 <BR><HR>
85 85
 <ADDRESS>
86 86
 Tomasz Kojm
87
-2004-06-29
87
+2004-07-22
88 88
 </ADDRESS>
89 89
 </BODY>
90 90
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html520"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html531"
31 32
   HREF="node15.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html516"
35
+<A NAME="tex2html527"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html510"
39
+<A NAME="tex2html521"
39 40
   HREF="node13.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html518"
43
+<A NAME="tex2html529"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html521"
48
+<B> Next:</B> <A NAME="tex2html532"
48 49
   HREF="node15.html">Testing</A>
49
-<B> Up:</B> <A NAME="tex2html517"
50
+<B> Up:</B> <A NAME="tex2html528"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html511"
52
+<B> Previous:</B> <A NAME="tex2html522"
52 53
   HREF="node13.html">Compilation</A>
53
- &nbsp <B>  <A NAME="tex2html519"
54
+ &nbsp; <B>  <A NAME="tex2html530"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00038000000000000000">
... ...
@@ -67,15 +67,15 @@ Configuration</A>
67 67
 	       /etc/clamav.conf.
68 68
 </PRE>
69 69
     This shows a location of the configuration file. The format and
70
-    options of this file are fully described in the <I>clamav.conf(5)</I>
70
+    options of this file are fully described in the <SPAN  CLASS="textit">clamav.conf(5)</SPAN>
71 71
     manual. clamd configuration is very easy because the config file is well
72 72
     commented. Remember - you must remove the "Example" directive.
73 73
 
74 74
 <P>
75 75
 Another feature of clamd is on-access scanning based on the Dazuko module,
76 76
     available from <TT><A NAME="tex2html19"
77
-  HREF="http://dazuko.org">http://dazuko.org</A></TT>. <B>This is not required to
78
-    run clamd - furthermore, you shouldn't run Dazuko on production systems</B>.
77
+  HREF="http://dazuko.org">http://dazuko.org</A></TT>. <SPAN  CLASS="textbf">This is not required to
78
+    run clamd - furthermore, you shouldn't run Dazuko on production systems</SPAN>.
79 79
     A special thread in clamd responsible for a communication with Dazuko
80 80
     is called "Clamuko" (it's due to the funny name of Dazuko - we don't know
81 81
     what Clamuko means). Clamuko is supported on Linux and FreeBSD only.
... ...
@@ -92,53 +92,54 @@ Another feature of clamd is on-access scanning based on the Dazuko module,
92 92
 	# depmod -a
93 93
 </PRE>
94 94
     Depending on your Linux distribution you have to add a "dazuko" entry to
95
-<BR>    <I>/etc/modules</I> or something like:
95
+<BR>    <SPAN  CLASS="textit">/etc/modules</SPAN> or something like:
96 96
     <PRE>
97 97
 	modprobe dazuko
98 98
 </PRE>
99 99
     to some startup file in order to load dazuko at a boot time. Compilation
100
-    on FreeBSD is very similar. You must also create the <I>/dev/dazuko</I>
100
+    on FreeBSD is very similar. You must also create the <SPAN  CLASS="textit">/dev/dazuko</SPAN>
101 101
     device:
102 102
     <PRE>
103 103
 	$ cat /proc/devices | grep dazuko
104 104
 	254 dazuko
105 105
 	$ su -c "mknod -m 600 /dev/dazuko c 254 0"
106 106
 </PRE>
107
-    Now just configure Clamuko in <I>clamav.conf</I> and see the <A HREF="node21.html#clamuko">3.3</A>
107
+    Now just configure Clamuko in <SPAN  CLASS="textit">clamav.conf</SPAN> and see the <A HREF="node21.html#clamuko">3.3</A>
108 108
     section.
109 109
 
110 110
 <P>
111
-<HR>
111
+
112
+<DIV CLASS="navigation"><HR>
112 113
 <!--Navigation Panel-->
113
-<A NAME="tex2html520"
114
+<A NAME="tex2html531"
114 115
   HREF="node15.html">
115 116
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
116 117
  SRC="/usr/share/latex2html/icons/next.png"></A> 
117
-<A NAME="tex2html516"
118
+<A NAME="tex2html527"
118 119
   HREF="node6.html">
119 120
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
120 121
  SRC="/usr/share/latex2html/icons/up.png"></A> 
121
-<A NAME="tex2html510"
122
+<A NAME="tex2html521"
122 123
   HREF="node13.html">
123 124
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
124 125
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
125
-<A NAME="tex2html518"
126
+<A NAME="tex2html529"
126 127
   HREF="node1.html">
127 128
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
128 129
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
129 130
 <BR>
130
-<B> Next:</B> <A NAME="tex2html521"
131
+<B> Next:</B> <A NAME="tex2html532"
131 132
   HREF="node15.html">Testing</A>
132
-<B> Up:</B> <A NAME="tex2html517"
133
+<B> Up:</B> <A NAME="tex2html528"
133 134
   HREF="node6.html">Installation</A>
134
-<B> Previous:</B> <A NAME="tex2html511"
135
+<B> Previous:</B> <A NAME="tex2html522"
135 136
   HREF="node13.html">Compilation</A>
136
- &nbsp <B>  <A NAME="tex2html519"
137
-  HREF="node1.html">Contents</A></B> 
137
+ &nbsp; <B>  <A NAME="tex2html530"
138
+  HREF="node1.html">Contents</A></B> </DIV>
138 139
 <!--End of Navigation Panel-->
139 140
 <ADDRESS>
140 141
 Tomasz Kojm
141
-2004-06-29
142
+2004-07-22
142 143
 </ADDRESS>
143 144
 </BODY>
144 145
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html532"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html543"
31 32
   HREF="node16.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html528"
35
+<A NAME="tex2html539"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html522"
39
+<A NAME="tex2html533"
39 40
   HREF="node14.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html530"
43
+<A NAME="tex2html541"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html533"
48
+<B> Next:</B> <A NAME="tex2html544"
48 49
   HREF="node16.html">freshclam: Setting up auto-updating</A>
49
-<B> Up:</B> <A NAME="tex2html529"
50
+<B> Up:</B> <A NAME="tex2html540"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html523"
52
+<B> Previous:</B> <A NAME="tex2html534"
52 53
   HREF="node14.html">Configuration</A>
53
- &nbsp <B>  <A NAME="tex2html531"
54
+ &nbsp; <B>  <A NAME="tex2html542"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00039000000000000000">
... ...
@@ -65,19 +65,19 @@ Testing</A>
65 65
 </PRE>
66 66
     It should find some test viruses in the clamav-x.yz/test directory.
67 67
     The scan result is saved in the scan.txt log file. <A NAME="tex2html20"
68
-  HREF="footnode.html#foot1033"><SUP>4</SUP></A>. To test clamd: start it and
69
-    use <I>clamdscan</I> (you can also connect directly to clamd and run
68
+  HREF="footnode.html#foot1050"><SUP><SPAN CLASS="arabic">4</SPAN></SUP></A>. To test clamd: start it and
69
+    use <SPAN  CLASS="textit">clamdscan</SPAN> (you can also connect directly to clamd and run
70 70
     the SCAN command):
71 71
     <PRE>
72 72
 	$ clamdscan -l scan.txt clamav-x.yz
73 73
 </PRE>
74
-    The output and the logfile should be similar to those of <I>clamscan</I>.
74
+    The output and the logfile should be similar to those of <SPAN  CLASS="textit">clamscan</SPAN>.
75 75
 
76 76
 <P>
77 77
 <BR><HR>
78 78
 <ADDRESS>
79 79
 Tomasz Kojm
80
-2004-06-29
80
+2004-07-22
81 81
 </ADDRESS>
82 82
 </BODY>
83 83
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,40 +25,41 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html544"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html555"
31 32
   HREF="node17.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html540"
35
+<A NAME="tex2html551"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html534"
39
+<A NAME="tex2html545"
39 40
   HREF="node15.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html542"
43
+<A NAME="tex2html553"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html545"
48
+<B> Next:</B> <A NAME="tex2html556"
48 49
   HREF="node17.html">Database mirrors</A>
49
-<B> Up:</B> <A NAME="tex2html541"
50
+<B> Up:</B> <A NAME="tex2html552"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html535"
52
+<B> Previous:</B> <A NAME="tex2html546"
52 53
   HREF="node15.html">Testing</A>
53
- &nbsp <B>  <A NAME="tex2html543"
54
+ &nbsp; <B>  <A NAME="tex2html554"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000310000000000000000">
60 61
 freshclam: Setting up auto-updating</A>
61 62
 </H2>
62
-    <I>freshclam</I> is a default database updater for Clam AntiVirus.
63
+    <SPAN  CLASS="textit">freshclam</SPAN> is a default database updater for Clam AntiVirus.
63 64
     It can work in two modes:
64 65
     
65 66
 <UL>
... ...
@@ -70,36 +70,36 @@ freshclam: Setting up auto-updating</A>
70 70
 </LI>
71 71
 </UL>
72 72
     When started by a superuser (by default) it drops privileges and switches
73
-    to the <I>clamav</I> user. <I>freshclam</I> uses the
73
+    to the <SPAN  CLASS="textit">clamav</SPAN> user. <SPAN  CLASS="textit">freshclam</SPAN> uses the
74 74
     <TT><A NAME="tex2html21"
75 75
   HREF="database.clamav.net">database.clamav.net</A></TT> round-robin DNS which automatically selects
76 76
     a database mirror<A HREF="node17.html#mirrors">2.11</A>. freshclam is an advanced tool: supports
77 77
     proxy servers (with authentication), digital signature verification and
78
-    various error scenarios. <B>Quick test: run <I>freshclam</I> (as
79
-    superuser) with no parameters and check the output.</B> If everything
80
-    is OK you may create the log file in /var/log (owned by <I>clamav</I> or
78
+    various error scenarios. <SPAN  CLASS="textbf">Quick test: run <SPAN  CLASS="textit">freshclam</SPAN> (as
79
+    superuser) with no parameters and check the output.</SPAN> If everything
80
+    is OK you may create the log file in /var/log (owned by <SPAN  CLASS="textit">clamav</SPAN> or
81 81
     another user freshclam will be running as (<code>--user</code>):
82 82
     <PRE>
83 83
 	# touch /var/log/clam-update.log
84 84
 	# chmod 600 /var/log/clam-update.log
85 85
 	# chown clamav /var/log/clam-update.log
86 86
 </PRE>
87
-    Now you <I>should</I> edit the configuration file (usually
88
-    <I>freshclam.conf</I>) and configure the <I>UpdateLogFile</I> directive
87
+    Now you <SPAN  CLASS="textit">should</SPAN> edit the configuration file (usually
88
+    <SPAN  CLASS="textit">freshclam.conf</SPAN>) and configure the <SPAN  CLASS="textit">UpdateLogFile</SPAN> directive
89 89
     to point the created log file (it's highly recommended). Optionally you
90
-    may force the log file path with <I>-l</I>. Finally, to run freshclam
90
+    may force the log file path with <SPAN  CLASS="textit">-l</SPAN>. Finally, to run freshclam
91 91
     in the daemon mode execute:
92 92
     <PRE>
93 93
 	# freshclam -d
94 94
 </PRE>
95
-    The other method is to use the <I>cron</I> daemon.  You have to add the
96
-    following line to the crontab of the <B>root</B> or <B>clamav</B> users:
97
-    <FONT SIZE="-1">    </FONT><PRE>
95
+    The other method is to use the <SPAN  CLASS="textit">cron</SPAN> daemon.  You have to add the
96
+    following line to the crontab of the <SPAN  CLASS="textbf">root</SPAN> or <SPAN  CLASS="textbf">clamav</SPAN> users:
97
+    <SMALL CLASS="SMALL">    </SMALL><PRE>
98 98
 N * * * *	/usr/local/bin/freshclam --quiet
99 99
 </PRE>
100
-    to check for a new database every hour. <B>N should be a
100
+    to check for a new database every hour. <SPAN  CLASS="textbf">N should be a
101 101
     number between 1 and 59 of your choice. Please don't choose any multiple
102
-    of 10, because there are already too many servers using those time slots.</B>
102
+    of 10, because there are already too many servers using those time slots.</SPAN>
103 103
     Proxy settings are only configurable via the configuration file (so you
104 104
     can setup proper permissions to protect your proxy password):
105 105
     <PRE>
... ...
@@ -110,37 +110,38 @@ N * * * *	/usr/local/bin/freshclam --quiet
110 110
 </PRE>
111 111
 
112 112
 <P>
113
-<HR>
113
+
114
+<DIV CLASS="navigation"><HR>
114 115
 <!--Navigation Panel-->
115
-<A NAME="tex2html544"
116
+<A NAME="tex2html555"
116 117
   HREF="node17.html">
117 118
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
118 119
  SRC="/usr/share/latex2html/icons/next.png"></A> 
119
-<A NAME="tex2html540"
120
+<A NAME="tex2html551"
120 121
   HREF="node6.html">
121 122
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
122 123
  SRC="/usr/share/latex2html/icons/up.png"></A> 
123
-<A NAME="tex2html534"
124
+<A NAME="tex2html545"
124 125
   HREF="node15.html">
125 126
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
126 127
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
127
-<A NAME="tex2html542"
128
+<A NAME="tex2html553"
128 129
   HREF="node1.html">
129 130
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
130 131
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
131 132
 <BR>
132
-<B> Next:</B> <A NAME="tex2html545"
133
+<B> Next:</B> <A NAME="tex2html556"
133 134
   HREF="node17.html">Database mirrors</A>
134
-<B> Up:</B> <A NAME="tex2html541"
135
+<B> Up:</B> <A NAME="tex2html552"
135 136
   HREF="node6.html">Installation</A>
136
-<B> Previous:</B> <A NAME="tex2html535"
137
+<B> Previous:</B> <A NAME="tex2html546"
137 138
   HREF="node15.html">Testing</A>
138
- &nbsp <B>  <A NAME="tex2html543"
139
-  HREF="node1.html">Contents</A></B> 
139
+ &nbsp; <B>  <A NAME="tex2html554"
140
+  HREF="node1.html">Contents</A></B> </DIV>
140 141
 <!--End of Navigation Panel-->
141 142
 <ADDRESS>
142 143
 Tomasz Kojm
143
-2004-06-29
144
+2004-07-22
144 145
 </ADDRESS>
145 146
 </BODY>
146 147
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -25,34 +24,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
25 25
 </HEAD>
26 26
 
27 27
 <BODY >
28
-<!--Navigation Panel-->
29
-<A NAME="tex2html554"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html565"
30 31
   HREF="node18.html">
31 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
33
-<A NAME="tex2html550"
34
+<A NAME="tex2html561"
34 35
   HREF="node6.html">
35 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
37
-<A NAME="tex2html546"
38
+<A NAME="tex2html557"
38 39
   HREF="node16.html">
39 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
-<A NAME="tex2html552"
42
+<A NAME="tex2html563"
42 43
   HREF="node1.html">
43 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
45 46
 <BR>
46
-<B> Next:</B> <A NAME="tex2html555"
47
+<B> Next:</B> <A NAME="tex2html566"
47 48
   HREF="node18.html">Usage</A>
48
-<B> Up:</B> <A NAME="tex2html551"
49
+<B> Up:</B> <A NAME="tex2html562"
49 50
   HREF="node6.html">Installation</A>
50
-<B> Previous:</B> <A NAME="tex2html547"
51
+<B> Previous:</B> <A NAME="tex2html558"
51 52
   HREF="node16.html">freshclam: Setting up auto-updating</A>
52
- &nbsp <B>  <A NAME="tex2html553"
53
+ &nbsp; <B>  <A NAME="tex2html564"
53 54
   HREF="node1.html">Contents</A></B> 
54 55
 <BR>
55
-<BR>
56
+<BR></DIV>
56 57
 <!--End of Navigation Panel-->
57 58
 
58 59
 <H2><A NAME="SECTION000311000000000000000"></A><A NAME="mirrors"></A>
... ...
@@ -70,760 +70,774 @@ Database mirrors
70 70
     Thanks to the help of many companies and organisations we have a few
71 71
     dozen of very fast and reliable mirrors:
72 72
     <DIV ALIGN="CENTER">
73
-<FONT SIZE="-1">    </FONT><TABLE CELLPADDING=3 BORDER="1">
74
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">
75
-	Mirror </FONT></TD>
76
-<TD ALIGN="CENTER"><FONT SIZE="-1"> IP </FONT></TD>
77
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Location </FONT></TD>
78
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Administrator</FONT></TD>
79
-</TR>
80
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html23"
81
-  HREF="clamav.man.olsztyn.pl">clamav.man.olsztyn.pl</A></TT> </FONT></TD>
82
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 213.184.16.3 </FONT></TD>
83
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Olsztyn, </FONT></TD>
84
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Robert d`Aystetten</FONT></TD>
85
-</TR>
86
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
87
-				    </FONT></TD>
88
-<TD ALIGN="CENTER"><FONT SIZE="-1">		   </FONT></TD>
89
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Poland   </FONT></TD>
90
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;dart*man.olsztyn.pl&gt;</FONT></TD>
91
-</TR>
92
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html24"
93
-  HREF="avmirror1.prod.rxgsys.com">avmirror1.prod.rxgsys.com</A></TT> </FONT></TD>
94
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 64.74.124.90 </FONT></TD>
95
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
96
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Graham Wooden</FONT></TD>
97
-</TR>
98
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
99
-					</FONT></TD>
100
-<TD ALIGN="CENTER"><FONT SIZE="-1">	       </FONT></TD>
101
-<TD ALIGN="CENTER"><FONT SIZE="-1">     </FONT></TD>
102
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;graham*rxgsys.com&gt;</FONT></TD>
103
-</TR>
104
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html25"
105
-  HREF="avmirror2.prod.rxgsys.com">avmirror2.prod.rxgsys.com</A></TT> </FONT></TD>
106
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 207.201.202.73 </FONT></TD>
107
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
108
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Graham Wooden</FONT></TD>
109
-</TR>
110
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
111
-					</FONT></TD>
112
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
113
-<TD ALIGN="CENTER"><FONT SIZE="-1">     </FONT></TD>
114
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;graham*rxgsys.com&gt;</FONT></TD>
115
-</TR>
116
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html26"
117
-  HREF="clamav.e-admin.de">clamav.e-admin.de</A></TT> </FONT></TD>
118
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 212.162.12.159 </FONT></TD>
119
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Dusseldorf, </FONT></TD>
120
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Andreas Gietl</FONT></TD>
121
-</TR>
122
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
123
-				</FONT></TD>
124
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
125
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Germany     </FONT></TD>
126
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;a.gietl*e-admin.de&gt;</FONT></TD>
127
-</TR>
128
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html27"
129
-  HREF="clamav.essentkabel.com">clamav.essentkabel.com</A></TT> </FONT></TD>
130
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 195.85.130.84 </FONT></TD>
131
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Netherlands </FONT></TD>
132
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Chris van Meerendonk</FONT></TD>
133
-</TR>
134
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
135
-				     </FONT></TD>
136
-<TD ALIGN="CENTER"><FONT SIZE="-1">		     </FONT></TD>
137
-<TD ALIGN="CENTER"><FONT SIZE="-1">		   </FONT></TD>
138
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;mirror*essentkabel.com&gt;</FONT></TD>
139
-</TR>
140
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html28"
141
-  HREF="clamav.inet6.fr">clamav.inet6.fr</A></TT> </FONT></TD>
142
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 62.210.153.201 </FONT></TD>
143
-<TD ALIGN="CENTER"><FONT SIZE="-1"> France </FONT></TD>
144
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Lionel Bouton</FONT></TD>
145
-</TR>
146
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
147
-			      </FONT></TD>
148
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 62.210.153.202 </FONT></TD>
149
-<TD ALIGN="CENTER"><FONT SIZE="-1">        </FONT></TD>
150
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;clamavdb*inet6.fr&gt;</FONT></TD>
151
-</TR>
152
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html29"
153
-  HREF="clamav.netopia.pt">clamav.netopia.pt</A></TT> </FONT></TD>
154
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 193.126.14.29 </FONT></TD>
155
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Portugal </FONT></TD>
156
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Miguel Bettencourt Dias</FONT></TD>
157
-</TR>
158
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
159
-				</FONT></TD>
160
-<TD ALIGN="CENTER"><FONT SIZE="-1">		</FONT></TD>
161
-<TD ALIGN="CENTER"><FONT SIZE="-1">	   </FONT></TD>
162
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;mbd*netopia.pt&gt;</FONT></TD>
163
-</TR>
164
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html30"
165
-  HREF="clamav.sonic.net">clamav.sonic.net</A></TT> </FONT></TD>
166
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 209.204.175.217 </FONT></TD>
167
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
168
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Kelsey Cummings</FONT></TD>
169
-</TR>
170
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
171
-			       </FONT></TD>
172
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
173
-<TD ALIGN="CENTER"><FONT SIZE="-1">     </FONT></TD>
174
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;kgc*sonic.net&gt;</FONT></TD>
175
-</TR>
176
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html31"
177
-  HREF="clamav.gossamer-threads.com">clamav.gossamer-threads.com</A></TT> </FONT></TD>
178
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 64.69.64.158 </FONT></TD>
179
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Canada </FONT></TD>
180
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Alex Krohn</FONT></TD>
181
-</TR>
182
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
183
-				          </FONT></TD>
184
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
185
-<TD ALIGN="CENTER"><FONT SIZE="-1">	  </FONT></TD>
186
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;mirrors*gossamer-threads.com&gt;</FONT></TD>
187
-</TR>
188
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html32"
189
-  HREF="clamav.catt.com">clamav.catt.com</A></TT> </FONT></TD>
190
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 64.18.100.4 </FONT></TD>
191
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
192
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Mike Cathey</FONT></TD>
193
-</TR>
194
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
195
-			      </FONT></TD>
196
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
197
-<TD ALIGN="CENTER"><FONT SIZE="-1">	  </FONT></TD>
198
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;mirrors*catt.com&gt;</FONT></TD>
199
-</TR>
200
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html33"
201
-  HREF="clamav.antispam.or.id">clamav.antispam.or.id</A></TT> </FONT></TD>
202
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 202.134.0.71 </FONT></TD>
203
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Indonesia </FONT></TD>
204
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Fajar Nugraha</FONT></TD>
205
-</TR>
206
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
207
-				     </FONT></TD>
208
-<TD ALIGN="CENTER"><FONT SIZE="-1">             </FONT></TD>
209
-<TD ALIGN="CENTER"><FONT SIZE="-1">           </FONT></TD>
210
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;fajar*telkom.co.id&gt;</FONT></TD>
211
-</TR>
212
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
73
+<SMALL CLASS="FOOTNOTESIZE">    </SMALL><TABLE CELLPADDING=3 BORDER="1">
74
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">
75
+	Mirror </SMALL></TD>
76
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> IP </SMALL></TD>
77
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Location </SMALL></TD>
78
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Administrator</SMALL></TD>
79
+</TR>
80
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html23"
81
+  HREF="clamav.man.olsztyn.pl">clamav.man.olsztyn.pl</A></TT> </SMALL></TD>
82
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 213.184.16.3 </SMALL></TD>
83
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Olsztyn, </SMALL></TD>
84
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Robert d`Aystetten</SMALL></TD>
85
+</TR>
86
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
87
+				    </SMALL></TD>
88
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		   </SMALL></TD>
89
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Poland   </SMALL></TD>
90
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;dart*man.olsztyn.pl&gt;</SMALL></TD>
91
+</TR>
92
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html24"
93
+  HREF="avmirror1.prod.rxgsys.com">avmirror1.prod.rxgsys.com</A></TT> </SMALL></TD>
94
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 64.74.124.90 </SMALL></TD>
95
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
96
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Graham Wooden</SMALL></TD>
97
+</TR>
98
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
99
+					</SMALL></TD>
100
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	       </SMALL></TD>
101
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">     </SMALL></TD>
102
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;graham*rxgsys.com&gt;</SMALL></TD>
103
+</TR>
104
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html25"
105
+  HREF="avmirror2.prod.rxgsys.com">avmirror2.prod.rxgsys.com</A></TT> </SMALL></TD>
106
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 207.201.202.73 </SMALL></TD>
107
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
108
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Graham Wooden</SMALL></TD>
109
+</TR>
110
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
111
+					</SMALL></TD>
112
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
113
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">     </SMALL></TD>
114
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;graham*rxgsys.com&gt;</SMALL></TD>
115
+</TR>
116
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html26"
117
+  HREF="clamav.e-admin.de">clamav.e-admin.de</A></TT> </SMALL></TD>
118
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 212.162.12.159 </SMALL></TD>
119
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Dusseldorf, </SMALL></TD>
120
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Andreas Gietl</SMALL></TD>
121
+</TR>
122
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
123
+				</SMALL></TD>
124
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
125
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Germany     </SMALL></TD>
126
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;a.gietl*e-admin.de&gt;</SMALL></TD>
127
+</TR>
128
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html27"
129
+  HREF="clamav.essentkabel.com">clamav.essentkabel.com</A></TT> </SMALL></TD>
130
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 195.85.130.84 </SMALL></TD>
131
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Netherlands </SMALL></TD>
132
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Chris van Meerendonk</SMALL></TD>
133
+</TR>
134
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
135
+				     </SMALL></TD>
136
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		     </SMALL></TD>
137
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		   </SMALL></TD>
138
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;mirror*essentkabel.com&gt;</SMALL></TD>
139
+</TR>
140
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html28"
141
+  HREF="clamav.inet6.fr">clamav.inet6.fr</A></TT> </SMALL></TD>
142
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 62.210.153.201 </SMALL></TD>
143
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> France </SMALL></TD>
144
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Lionel Bouton</SMALL></TD>
145
+</TR>
146
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
147
+			      </SMALL></TD>
148
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 62.210.153.202 </SMALL></TD>
149
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">        </SMALL></TD>
150
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;clamavdb*inet6.fr&gt;</SMALL></TD>
151
+</TR>
152
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html29"
153
+  HREF="clamav.netopia.pt">clamav.netopia.pt</A></TT> </SMALL></TD>
154
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 193.126.14.29 </SMALL></TD>
155
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Portugal </SMALL></TD>
156
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Miguel Bettencourt Dias</SMALL></TD>
157
+</TR>
158
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
159
+				</SMALL></TD>
160
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		</SMALL></TD>
161
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	   </SMALL></TD>
162
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;mbd*netopia.pt&gt;</SMALL></TD>
163
+</TR>
164
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html30"
165
+  HREF="clamav.sonic.net">clamav.sonic.net</A></TT> </SMALL></TD>
166
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 209.204.175.217 </SMALL></TD>
167
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
168
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Kelsey Cummings</SMALL></TD>
169
+</TR>
170
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
171
+			       </SMALL></TD>
172
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
173
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">     </SMALL></TD>
174
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;kgc*sonic.net&gt;</SMALL></TD>
175
+</TR>
176
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html31"
177
+  HREF="clamav.gossamer-threads.com">clamav.gossamer-threads.com</A></TT> </SMALL></TD>
178
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 64.69.64.158 </SMALL></TD>
179
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Canada </SMALL></TD>
180
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Alex Krohn</SMALL></TD>
181
+</TR>
182
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
183
+				          </SMALL></TD>
184
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
185
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	  </SMALL></TD>
186
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;mirrors*gossamer-threads.com&gt;</SMALL></TD>
187
+</TR>
188
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html32"
189
+  HREF="clamav.catt.com">clamav.catt.com</A></TT> </SMALL></TD>
190
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 64.18.100.4 </SMALL></TD>
191
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
192
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Mike Cathey</SMALL></TD>
193
+</TR>
194
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
195
+			      </SMALL></TD>
196
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
197
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	  </SMALL></TD>
198
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;mirrors*catt.com&gt;</SMALL></TD>
199
+</TR>
200
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html33"
201
+  HREF="clamav.antispam.or.id">clamav.antispam.or.id</A></TT> </SMALL></TD>
202
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 202.134.0.71 </SMALL></TD>
203
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Indonesia </SMALL></TD>
204
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Fajar Nugraha</SMALL></TD>
205
+</TR>
206
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
207
+				     </SMALL></TD>
208
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">             </SMALL></TD>
209
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">           </SMALL></TD>
210
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;fajar*telkom.co.id&gt;</SMALL></TD>
211
+</TR>
212
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
213 213
 	<TT><A NAME="tex2html34"
214
-  HREF="clamav-du.viaverio.com">clamav-du.viaverio.com</A></TT> </FONT></TD>
215
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 199.239.233.95 </FONT></TD>
216
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
217
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Scott Wiersdorf</FONT></TD>
218
-</TR>
219
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
220
-				     </FONT></TD>
221
-<TD ALIGN="CENTER"><FONT SIZE="-1">		      </FONT></TD>
222
-<TD ALIGN="CENTER"><FONT SIZE="-1">	    </FONT></TD>
223
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;scott*perlcode.org&gt;</FONT></TD>
224
-</TR>
225
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
214
+  HREF="clamav-du.viaverio.com">clamav-du.viaverio.com</A></TT> </SMALL></TD>
215
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 199.239.233.95 </SMALL></TD>
216
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
217
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Scott Wiersdorf</SMALL></TD>
218
+</TR>
219
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
220
+				     </SMALL></TD>
221
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		      </SMALL></TD>
222
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	    </SMALL></TD>
223
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;scott*perlcode.org&gt;</SMALL></TD>
224
+</TR>
225
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
226 226
 	<TT><A NAME="tex2html35"
227
-  HREF="clamav-sj.viaverio.com">clamav-sj.viaverio.com</A></TT> </FONT></TD>
228
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 128.121.60.235 </FONT></TD>
229
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
230
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Scott Wiersdorf</FONT></TD>
231
-</TR>
232
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
233
-				     </FONT></TD>
234
-<TD ALIGN="CENTER"><FONT SIZE="-1">		      </FONT></TD>
235
-<TD ALIGN="CENTER"><FONT SIZE="-1">	    </FONT></TD>
236
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;scott*perlcode.org&gt;</FONT></TD>
237
-</TR>
238
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
227
+  HREF="clamav-sj.viaverio.com">clamav-sj.viaverio.com</A></TT> </SMALL></TD>
228
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 128.121.60.235 </SMALL></TD>
229
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
230
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Scott Wiersdorf</SMALL></TD>
231
+</TR>
232
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
233
+				     </SMALL></TD>
234
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		      </SMALL></TD>
235
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	    </SMALL></TD>
236
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;scott*perlcode.org&gt;</SMALL></TD>
237
+</TR>
238
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
239 239
 	<TT><A NAME="tex2html36"
240
-  HREF="clamavdb.heanet.ie">clamavdb.heanet.ie</A></TT> </FONT></TD>
241
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 193.1.219.100 </FONT></TD>
242
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Ireland </FONT></TD>
243
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Colm MacCarthaigh</FONT></TD>
244
-</TR>
245
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
246
-				 </FONT></TD>
247
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
248
-<TD ALIGN="CENTER"><FONT SIZE="-1">	   </FONT></TD>
249
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;mirrors*heanet.ie&gt;</FONT></TD>
250
-</TR>
251
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html37"
252
-  HREF="clamav.crysys.hu">clamav.crysys.hu</A></TT> </FONT></TD>
253
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 152.66.249.132 </FONT></TD>
254
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Hungary </FONT></TD>
255
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Bencsath Boldizsar</FONT></TD>
256
-</TR>
257
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
258
-			       </FONT></TD>
259
-<TD ALIGN="CENTER"><FONT SIZE="-1">		</FONT></TD>
260
-<TD ALIGN="CENTER"><FONT SIZE="-1">	  </FONT></TD>
261
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;boldi*mail2004.crysys.hit.bme.hu&gt;</FONT></TD>
262
-</TR>
263
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html38"
264
-  HREF="clamav.rockriver.net">clamav.rockriver.net</A></TT> </FONT></TD>
265
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 209.94.36.5 </FONT></TD>
266
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Illinois, USA </FONT></TD>
267
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Thomas D. Harker</FONT></TD>
268
-</TR>
269
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
270
-				   </FONT></TD>
271
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
272
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
273
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;tom*rockriver.net&gt;</FONT></TD>
274
-</TR>
275
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
240
+  HREF="clamavdb.heanet.ie">clamavdb.heanet.ie</A></TT> </SMALL></TD>
241
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 193.1.219.100 </SMALL></TD>
242
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Ireland </SMALL></TD>
243
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Colm MacCarthaigh</SMALL></TD>
244
+</TR>
245
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
246
+				 </SMALL></TD>
247
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
248
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	   </SMALL></TD>
249
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;mirrors*heanet.ie&gt;</SMALL></TD>
250
+</TR>
251
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html37"
252
+  HREF="clamav.crysys.hu">clamav.crysys.hu</A></TT> </SMALL></TD>
253
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 152.66.249.132 </SMALL></TD>
254
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Hungary </SMALL></TD>
255
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Bencsath Boldizsar</SMALL></TD>
256
+</TR>
257
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
258
+			       </SMALL></TD>
259
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		</SMALL></TD>
260
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	  </SMALL></TD>
261
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;boldi*mail2004.crysys.hit.bme.hu&gt;</SMALL></TD>
262
+</TR>
263
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html38"
264
+  HREF="clamav.rockriver.net">clamav.rockriver.net</A></TT> </SMALL></TD>
265
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 209.94.36.5 </SMALL></TD>
266
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Illinois, USA </SMALL></TD>
267
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Thomas D. Harker</SMALL></TD>
268
+</TR>
269
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
270
+				   </SMALL></TD>
271
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
272
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
273
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;tom*rockriver.net&gt;</SMALL></TD>
274
+</TR>
275
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
276 276
 	<TT><A NAME="tex2html39"
277
-  HREF="clamav.xmundo.net">clamav.xmundo.net</A></TT> </FONT></TD>
278
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 200.68.106.40 </FONT></TD>
279
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Argentina </FONT></TD>
280
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Cristian Daniel Merz</FONT></TD>
281
-</TR>
282
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
283
-				</FONT></TD>
284
-<TD ALIGN="CENTER"><FONT SIZE="-1">		</FONT></TD>
285
-<TD ALIGN="CENTER"><FONT SIZE="-1">	    </FONT></TD>
286
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;mirrors*xmundo.net&gt;</FONT></TD>
287
-</TR>
288
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html40"
289
-  HREF="clamav.infotex.com">clamav.infotex.com</A></TT> </FONT></TD>
290
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 66.139.73.146 </FONT></TD>
291
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Texas, USA </FONT></TD>
292
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Matthew Jonkman</FONT></TD>
293
-</TR>
294
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
295
-				 </FONT></TD>
296
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
297
-<TD ALIGN="CENTER"><FONT SIZE="-1">	      </FONT></TD>
298
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;matt*infotex.com&gt;</FONT></TD>
277
+  HREF="clamav.xmundo.net">clamav.xmundo.net</A></TT> </SMALL></TD>
278
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 200.68.106.40 </SMALL></TD>
279
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Argentina </SMALL></TD>
280
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Cristian Daniel Merz</SMALL></TD>
281
+</TR>
282
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
283
+				</SMALL></TD>
284
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		</SMALL></TD>
285
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	    </SMALL></TD>
286
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;mirrors*xmundo.net&gt;</SMALL></TD>
287
+</TR>
288
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html40"
289
+  HREF="clamav.infotex.com">clamav.infotex.com</A></TT> </SMALL></TD>
290
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 66.139.73.146 </SMALL></TD>
291
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Texas, USA </SMALL></TD>
292
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Matthew Jonkman</SMALL></TD>
293
+</TR>
294
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
295
+				 </SMALL></TD>
296
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
297
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	      </SMALL></TD>
298
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;matt*infotex.com&gt;</SMALL></TD>
299 299
 </TR>
300 300
 </TABLE>
301 301
     
302 302
 </DIV>
303 303
     <DIV ALIGN="CENTER">
304
-<FONT SIZE="-1">    </FONT><TABLE CELLPADDING=3 BORDER="1">
305
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">
306
-	Mirror </FONT></TD>
307
-<TD ALIGN="CENTER"><FONT SIZE="-1"> IP </FONT></TD>
308
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Location </FONT></TD>
309
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Administrator</FONT></TD>
310
-</TR>
311
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
304
+<SMALL CLASS="FOOTNOTESIZE">    </SMALL><TABLE CELLPADDING=3 BORDER="1">
305
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">
306
+	Mirror </SMALL></TD>
307
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> IP </SMALL></TD>
308
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Location </SMALL></TD>
309
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Administrator</SMALL></TD>
310
+</TR>
311
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
312 312
 	<TT><A NAME="tex2html41"
313
-  HREF="clamav.santafesolutions.com">clamav.santafesolutions.com</A></TT> </FONT></TD>
314
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 196.40.71.226 </FONT></TD>
315
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Costa Rica </FONT></TD>
316

                
317
-</TR>
318
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
319
-				 </FONT></TD>
320
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
321
-<TD ALIGN="CENTER"><FONT SIZE="-1">	      </FONT></TD>
322
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;gregory*emailcr.com&gt;</FONT></TD>
323
-</TR>
324
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html42"
325
-  HREF="clamav.mirror.transip.nl">clamav.mirror.transip.nl</A></TT> </FONT></TD>
326
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 80.69.67.3 </FONT></TD>
327
-<TD ALIGN="CENTER"><FONT SIZE="-1"> The Netherlands </FONT></TD>
328
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Walter Hop</FONT></TD>
329
-</TR>
330
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
331
-				 </FONT></TD>
332
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
333
-<TD ALIGN="CENTER"><FONT SIZE="-1">	      </FONT></TD>
334
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;walter*transip.nl&gt;</FONT></TD>
335
-</TR>
336
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
313
+  HREF="clamav.santafesolutions.com">clamav.santafesolutions.com</A></TT> </SMALL></TD>
314
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 196.40.71.226 </SMALL></TD>
315
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Costa Rica </SMALL></TD>
316

                
317
+</TR>
318
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
319
+				 </SMALL></TD>
320
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
321
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	      </SMALL></TD>
322
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;gregory*emailcr.com&gt;</SMALL></TD>
323
+</TR>
324
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html42"
325
+  HREF="clamav.mirror.transip.nl">clamav.mirror.transip.nl</A></TT> </SMALL></TD>
326
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 80.69.67.3 </SMALL></TD>
327
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> The Netherlands </SMALL></TD>
328
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Walter Hop</SMALL></TD>
329
+</TR>
330
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
331
+				 </SMALL></TD>
332
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
333
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	      </SMALL></TD>
334
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;walter*transip.nl&gt;</SMALL></TD>
335
+</TR>
336
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
337 337
 	<TT><A NAME="tex2html43"
338
-  HREF="clamavdb.osj.net">clamavdb.osj.net</A></TT> </FONT></TD>
339
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 218.44.253.75 </FONT></TD>
340
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Japan </FONT></TD>
341
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Masaki Ikeda</FONT></TD>
342
-</TR>
343
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
344
-			       </FONT></TD>
345
-<TD ALIGN="CENTER"><FONT SIZE="-1">	       </FONT></TD>
346
-<TD ALIGN="CENTER"><FONT SIZE="-1">       </FONT></TD>
347
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;masaki*orange.co.jp&gt;</FONT></TD>
348
-</TR>
349
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html44"
350
-  HREF="clamav.ialfa.net">clamav.ialfa.net</A></TT> </FONT></TD>
351
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 210.22.201.152 </FONT></TD>
352
-<TD ALIGN="CENTER"><FONT SIZE="-1"> People's Republic </FONT></TD>
353
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Alfa Shen</FONT></TD>
354
-</TR>
355
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
356
-			       </FONT></TD>
357
-<TD ALIGN="CENTER"><FONT SIZE="-1">		</FONT></TD>
358
-<TD ALIGN="CENTER"><FONT SIZE="-1"> of China	    </FONT></TD>
359
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;alfa*ialfa.net&gt;</FONT></TD>
360
-</TR>
361
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html45"
362
-  HREF="clamavdb.ikk.sztaki.hu">clamavdb.ikk.sztaki.hu</A></TT> </FONT></TD>
363
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 193.225.86.3 </FONT></TD>
364
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Hungary </FONT></TD>
365
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Gabor Kiss</FONT></TD>
366
-</TR>
367
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
368
-				     </FONT></TD>
369
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
370
-<TD ALIGN="CENTER"><FONT SIZE="-1">	      </FONT></TD>
371
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;kissg*debella.ikk.sztaki.hu&gt;</FONT></TD>
372
-</TR>
373
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html46"
374
-  HREF="clamav.mirrors.nks.net">clamav.mirrors.nks.net</A></TT> </FONT></TD>
375
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 24.73.112.74 </FONT></TD>
376
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Florida, USA </FONT></TD>
377
-<TD ALIGN="CENTER"><FONT SIZE="-1"> James Neal</FONT></TD>
378
-</TR>
379
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
380
-				     </FONT></TD>
381
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
382
-<TD ALIGN="CENTER"><FONT SIZE="-1">		   </FONT></TD>
383
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;clam-admin*nks.net&gt;</FONT></TD>
384
-</TR>
385
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html47"
386
-  HREF="clamav.kratern.se">clamav.kratern.se</A></TT> </FONT></TD>
387
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 212.31.160.239 </FONT></TD>
388
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Sweden </FONT></TD>
389
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Emil Ljungdahl</FONT></TD>
390
-</TR>
391
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
392
-				</FONT></TD>
393
-<TD ALIGN="CENTER"><FONT SIZE="-1">	         </FONT></TD>
394
-<TD ALIGN="CENTER"><FONT SIZE="-1">	  </FONT></TD>
395
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;emil*kratern.se&gt;</FONT></TD>
396
-</TR>
397
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html48"
398
-  HREF="clamav.dif.dk">clamav.dif.dk</A></TT> </FONT></TD>
399
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 193.138.115.108 </FONT></TD>
400
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Denmark </FONT></TD>
401
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Jesper Juhl</FONT></TD>
402
-</TR>
403
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
404
-			    </FONT></TD>
405
-<TD ALIGN="CENTER"><FONT SIZE="-1">		      </FONT></TD>
406
-<TD ALIGN="CENTER"><FONT SIZE="-1">		</FONT></TD>
407
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;juhl*dif.dk&gt;</FONT></TD>
408
-</TR>
409
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html49"
410
-  HREF="clamav.dbplc.com">clamav.dbplc.com</A></TT> </FONT></TD>
411
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 217.154.108.81 </FONT></TD>
412
-<TD ALIGN="CENTER"><FONT SIZE="-1"> United Kingdom </FONT></TD>
413
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Simon Pither</FONT></TD>
414
-</TR>
415
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
416
-			       </FONT></TD>
417
-<TD ALIGN="CENTER"><FONT SIZE="-1">		</FONT></TD>
418
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
419
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;simon*digitalbrain.com&gt;</FONT></TD>
420
-</TR>
421
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html50"
422
-  HREF="clamav.unet.brandeis.edu">clamav.unet.brandeis.edu</A></TT> </FONT></TD>
423
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 129.64.99.170 </FONT></TD>
424
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
425
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Rich Graves</FONT></TD>
426
-</TR>
427
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
428
-				       </FONT></TD>
429
-<TD ALIGN="CENTER"><FONT SIZE="-1">	       </FONT></TD>
430
-<TD ALIGN="CENTER"><FONT SIZE="-1">     </FONT></TD>
431
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;rcgraves*brandeis.edu&gt;</FONT></TD>
432
-</TR>
433
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html51"
434
-  HREF="clamav.im1.net">clamav.im1.net</A></TT> </FONT></TD>
435
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 65.77.42.207 </FONT></TD>
436
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Florida, US </FONT></TD>
437
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Dmitri Pavlenkov</FONT></TD>
438
-</TR>
439
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
440
-			     </FONT></TD>
441
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
442
-<TD ALIGN="CENTER"><FONT SIZE="-1">		  </FONT></TD>
443
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;dmitri*im1.com&gt;</FONT></TD>
444
-</TR>
445
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html52"
446
-  HREF="clamav.elektrotech-ker.hu">clamav.elektrotech-ker.hu</A></TT> </FONT></TD>
447
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 80.95.80.7 </FONT></TD>
448
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Hungary </FONT></TD>
449
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Bodrogi Zsolt</FONT></TD>
450
-</TR>
451
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
452
-					</FONT></TD>
453
-<TD ALIGN="CENTER"><FONT SIZE="-1">	     </FONT></TD>
454
-<TD ALIGN="CENTER"><FONT SIZE="-1">	       </FONT></TD>
455
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;odin*szilank.hu&gt;</FONT></TD>
456
-</TR>
457
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html53"
458
-  HREF="clamav.stockingshq.com">clamav.stockingshq.com</A></TT> </FONT></TD>
459
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 212.113.16.74 </FONT></TD>
460
-<TD ALIGN="CENTER"><FONT SIZE="-1"> United Kingdom </FONT></TD>
461
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;dave*stockingshq.com&gt;</FONT></TD>
462
-</TR>
463
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"><TT><A NAME="tex2html54"
464
-  HREF="clamav.acnova.com">clamav.acnova.com</A></TT> </FONT></TD>
465
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 203.81.40.167 </FONT></TD>
466
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Singapore </FONT></TD>
467
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Lennard Seah</FONT></TD>
468
-</TR>
469
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
470
-				</FONT></TD>
471
-<TD ALIGN="CENTER"><FONT SIZE="-1">		</FONT></TD>
472
-<TD ALIGN="CENTER"><FONT SIZE="-1">	    </FONT></TD>
473
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;myself*lennardseah.com&gt;</FONT></TD>
474
-</TR>
475
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
338
+  HREF="clamavdb.osj.net">clamavdb.osj.net</A></TT> </SMALL></TD>
339
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 218.44.253.75 </SMALL></TD>
340
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Japan </SMALL></TD>
341
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Masaki Ikeda</SMALL></TD>
342
+</TR>
343
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
344
+			       </SMALL></TD>
345
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	       </SMALL></TD>
346
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">       </SMALL></TD>
347
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;masaki*orange.co.jp&gt;</SMALL></TD>
348
+</TR>
349
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html44"
350
+  HREF="clamav.ialfa.net">clamav.ialfa.net</A></TT> </SMALL></TD>
351
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 210.22.201.152 </SMALL></TD>
352
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> People's Republic </SMALL></TD>
353
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Alfa Shen</SMALL></TD>
354
+</TR>
355
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
356
+			       </SMALL></TD>
357
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		</SMALL></TD>
358
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> of China	    </SMALL></TD>
359
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;alfa*ialfa.net&gt;</SMALL></TD>
360
+</TR>
361
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html45"
362
+  HREF="clamavdb.ikk.sztaki.hu">clamavdb.ikk.sztaki.hu</A></TT> </SMALL></TD>
363
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 193.225.86.3 </SMALL></TD>
364
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Hungary </SMALL></TD>
365
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Gabor Kiss</SMALL></TD>
366
+</TR>
367
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
368
+				     </SMALL></TD>
369
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
370
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	      </SMALL></TD>
371
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;kissg*debella.ikk.sztaki.hu&gt;</SMALL></TD>
372
+</TR>
373
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html46"
374
+  HREF="clamav.mirrors.nks.net">clamav.mirrors.nks.net</A></TT> </SMALL></TD>
375
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 24.73.112.74 </SMALL></TD>
376
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Florida, USA </SMALL></TD>
377
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> James Neal</SMALL></TD>
378
+</TR>
379
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
380
+				     </SMALL></TD>
381
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
382
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		   </SMALL></TD>
383
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;clam-admin*nks.net&gt;</SMALL></TD>
384
+</TR>
385
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html47"
386
+  HREF="clamav.kratern.se">clamav.kratern.se</A></TT> </SMALL></TD>
387
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 212.31.160.239 </SMALL></TD>
388
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Sweden </SMALL></TD>
389
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Emil Ljungdahl</SMALL></TD>
390
+</TR>
391
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
392
+				</SMALL></TD>
393
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	         </SMALL></TD>
394
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	  </SMALL></TD>
395
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;emil*kratern.se&gt;</SMALL></TD>
396
+</TR>
397
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html48"
398
+  HREF="clamav.dif.dk">clamav.dif.dk</A></TT> </SMALL></TD>
399
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 193.138.115.108 </SMALL></TD>
400
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Denmark </SMALL></TD>
401
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Jesper Juhl</SMALL></TD>
402
+</TR>
403
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
404
+			    </SMALL></TD>
405
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		      </SMALL></TD>
406
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		</SMALL></TD>
407
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;juhl*dif.dk&gt;</SMALL></TD>
408
+</TR>
409
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html49"
410
+  HREF="clamav.dbplc.com">clamav.dbplc.com</A></TT> </SMALL></TD>
411
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 217.154.108.81 </SMALL></TD>
412
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> United Kingdom </SMALL></TD>
413
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Simon Pither</SMALL></TD>
414
+</TR>
415
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
416
+			       </SMALL></TD>
417
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		</SMALL></TD>
418
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
419
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;simon*digitalbrain.com&gt;</SMALL></TD>
420
+</TR>
421
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html50"
422
+  HREF="clamav.unet.brandeis.edu">clamav.unet.brandeis.edu</A></TT> </SMALL></TD>
423
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 129.64.99.170 </SMALL></TD>
424
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
425
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Rich Graves</SMALL></TD>
426
+</TR>
427
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
428
+				       </SMALL></TD>
429
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	       </SMALL></TD>
430
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">     </SMALL></TD>
431
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;rcgraves*brandeis.edu&gt;</SMALL></TD>
432
+</TR>
433
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html51"
434
+  HREF="clamav.im1.net">clamav.im1.net</A></TT> </SMALL></TD>
435
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 65.77.42.207 </SMALL></TD>
436
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Florida, US </SMALL></TD>
437
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Dmitri Pavlenkov</SMALL></TD>
438
+</TR>
439
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
440
+			     </SMALL></TD>
441
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
442
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		  </SMALL></TD>
443
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;dmitri*im1.com&gt;</SMALL></TD>
444
+</TR>
445
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html52"
446
+  HREF="clamav.elektrotech-ker.hu">clamav.elektrotech-ker.hu</A></TT> </SMALL></TD>
447
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 80.95.80.7 </SMALL></TD>
448
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Hungary </SMALL></TD>
449
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Bodrogi Zsolt</SMALL></TD>
450
+</TR>
451
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
452
+					</SMALL></TD>
453
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	     </SMALL></TD>
454
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	       </SMALL></TD>
455
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;odin*szilank.hu&gt;</SMALL></TD>
456
+</TR>
457
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html53"
458
+  HREF="clamav.stockingshq.com">clamav.stockingshq.com</A></TT> </SMALL></TD>
459
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 212.113.16.74 </SMALL></TD>
460
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> United Kingdom </SMALL></TD>
461
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;dave*stockingshq.com&gt;</SMALL></TD>
462
+</TR>
463
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"><TT><A NAME="tex2html54"
464
+  HREF="clamav.acnova.com">clamav.acnova.com</A></TT> </SMALL></TD>
465
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 203.81.40.167 </SMALL></TD>
466
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Singapore </SMALL></TD>
467
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Lennard Seah</SMALL></TD>
468
+</TR>
469
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
470
+				</SMALL></TD>
471
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		</SMALL></TD>
472
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	    </SMALL></TD>
473
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;myself*lennardseah.com&gt;</SMALL></TD>
474
+</TR>
475
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
476 476
 	<TT><A NAME="tex2html55"
477
-  HREF="clamdb.prolocation.net">clamdb.prolocation.net</A></TT> </FONT></TD>
478
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 213.73.255.243 </FONT></TD>
479
-<TD ALIGN="CENTER"><FONT SIZE="-1"> The Netherlands </FONT></TD>
480
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Raymond Dijkxhoorn</FONT></TD>
481
-</TR>
482
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
483
-				     </FONT></TD>
484
-<TD ALIGN="CENTER"><FONT SIZE="-1">		      </FONT></TD>
485
-<TD ALIGN="CENTER"><FONT SIZE="-1">			</FONT></TD>
486
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;raymond*prolocation.net&gt;</FONT></TD>
487
-</TR>
488
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
477
+  HREF="clamdb.prolocation.net">clamdb.prolocation.net</A></TT> </SMALL></TD>
478
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 213.73.255.243 </SMALL></TD>
479
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> The Netherlands </SMALL></TD>
480
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Raymond Dijkxhoorn</SMALL></TD>
481
+</TR>
482
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
483
+				     </SMALL></TD>
484
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		      </SMALL></TD>
485
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">			</SMALL></TD>
486
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;raymond*prolocation.net&gt;</SMALL></TD>
487
+</TR>
488
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
489 489
 	<TT><A NAME="tex2html56"
490
-  HREF="clamav.xyxx.com">clamav.xyxx.com</A></TT> </FONT></TD>
491
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 65.75.154.69 </FONT></TD>
492
-<TD ALIGN="CENTER"><FONT SIZE="-1"> San Francisco/Palo Alto </FONT></TD>
493
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Myron Davis</FONT></TD>
494
-</TR>
495
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
496
-			      </FONT></TD>
497
-<TD ALIGN="CENTER"><FONT SIZE="-1">		     </FONT></TD>
498
-<TD ALIGN="CENTER"><FONT SIZE="-1"> California, USA	       </FONT></TD>
499
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;myrond*xyxx.com&gt;</FONT></TD>
500
-</TR>
501
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
490
+  HREF="clamav.xyxx.com">clamav.xyxx.com</A></TT> </SMALL></TD>
491
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 65.75.154.69 </SMALL></TD>
492
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> San Francisco/Palo Alto </SMALL></TD>
493
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Myron Davis</SMALL></TD>
494
+</TR>
495
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
496
+			      </SMALL></TD>
497
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		     </SMALL></TD>
498
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> California, USA	       </SMALL></TD>
499
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;myrond*xyxx.com&gt;</SMALL></TD>
500
+</TR>
501
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
502 502
 	<TT><A NAME="tex2html57"
503
-  HREF="clamav.walkertek.com">clamav.walkertek.com</A></TT> </FONT></TD>
504
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 38.136.139.7 </FONT></TD>
505
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
506
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Stephen Walker</FONT></TD>
507
-</TR>
508
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
509
-				   </FONT></TD>
510
-<TD ALIGN="CENTER"><FONT SIZE="-1">		  </FONT></TD>
511
-<TD ALIGN="CENTER"><FONT SIZE="-1">	</FONT></TD>
512
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;swalker*walkertek.com&gt;</FONT></TD>
513
-</TR>
514
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
503
+  HREF="clamav.walkertek.com">clamav.walkertek.com</A></TT> </SMALL></TD>
504
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 38.136.139.7 </SMALL></TD>
505
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
506
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Stephen Walker</SMALL></TD>
507
+</TR>
508
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
509
+				   </SMALL></TD>
510
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		  </SMALL></TD>
511
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	</SMALL></TD>
512
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;swalker*walkertek.com&gt;</SMALL></TD>
513
+</TR>
514
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
515 515
 	<TT><A NAME="tex2html58"
516
-  HREF="clamav.mirror.cygnal.ca">clamav.mirror.cygnal.ca</A></TT> </FONT></TD>
517
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 24.244.193.21 </FONT></TD>
518
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Burlington,	</FONT></TD>
519
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Rafal Rzeczkowski</FONT></TD>
520
-</TR>
521
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
522
-				      </FONT></TD>
523
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 24.244.193.22 </FONT></TD>
524
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Ontario, Canada </FONT></TD>
525
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;mirrors*cygnal.ca&gt;</FONT></TD>
526
-</TR>
527
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
516
+  HREF="clamav.mirror.cygnal.ca">clamav.mirror.cygnal.ca</A></TT> </SMALL></TD>
517
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 24.244.193.21 </SMALL></TD>
518
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Burlington,	</SMALL></TD>
519
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Rafal Rzeczkowski</SMALL></TD>
520
+</TR>
521
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
522
+				      </SMALL></TD>
523
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 24.244.193.22 </SMALL></TD>
524
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Ontario, Canada </SMALL></TD>
525
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;mirrors*cygnal.ca&gt;</SMALL></TD>
526
+</TR>
527
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
528 528
 	<TT><A NAME="tex2html59"
529
-  HREF="clamav.mirrors.ilisys.com.au">clamav.mirrors.ilisys.com.au</A></TT> </FONT></TD>
530
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 203.202.10.60 </FONT></TD>
531
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Australia </FONT></TD>
532
-<TD ALIGN="CENTER"><FONT SIZE="-1"> David Wilcox</FONT></TD>
533
-</TR>
534
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
535
-					   </FONT></TD>
536
-<TD ALIGN="CENTER"><FONT SIZE="-1">		   </FONT></TD>
537
-<TD ALIGN="CENTER"><FONT SIZE="-1">	       </FONT></TD>
538
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;mirrors*ilisys.com.au&gt;</FONT></TD>
539
-</TR>
540
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
529
+  HREF="clamav.mirrors.ilisys.com.au">clamav.mirrors.ilisys.com.au</A></TT> </SMALL></TD>
530
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 203.202.10.60 </SMALL></TD>
531
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Australia </SMALL></TD>
532
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> David Wilcox</SMALL></TD>
533
+</TR>
534
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
535
+					   </SMALL></TD>
536
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		   </SMALL></TD>
537
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	       </SMALL></TD>
538
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;mirrors*ilisys.com.au&gt;</SMALL></TD>
539
+</TR>
540
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
541 541
 	<TT><A NAME="tex2html60"
542
-  HREF="clamav.securityminded.net">clamav.securityminded.net</A></TT> </FONT></TD>
543
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 209.8.40.140 </FONT></TD>
544
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Ashburn, USA </FONT></TD>
545
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Thomas Petersen</FONT></TD>
546
-</TR>
547
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
548
-					</FONT></TD>
549
-<TD ALIGN="CENTER"><FONT SIZE="-1">	       </FONT></TD>
550
-<TD ALIGN="CENTER"><FONT SIZE="-1">	      </FONT></TD>
551
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;tomp*securityminded.net&gt;</FONT></TD>
552
-</TR>
553
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
542
+  HREF="clamav.securityminded.net">clamav.securityminded.net</A></TT> </SMALL></TD>
543
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 209.8.40.140 </SMALL></TD>
544
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Ashburn, USA </SMALL></TD>
545
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Thomas Petersen</SMALL></TD>
546
+</TR>
547
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
548
+					</SMALL></TD>
549
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	       </SMALL></TD>
550
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	      </SMALL></TD>
551
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;tomp*securityminded.net&gt;</SMALL></TD>
552
+</TR>
553
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
554 554
 	<TT><A NAME="tex2html61"
555
-  HREF="clamav.island.net.au">clamav.island.net.au</A></TT> </FONT></TD>
556
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 203.28.142.36 </FONT></TD>
557
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Sydney    </FONT></TD>
558
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Hugh Blandford</FONT></TD>
559
-</TR>
560
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
561
-				   </FONT></TD>
562
-<TD ALIGN="CENTER"><FONT SIZE="-1">		   </FONT></TD>
563
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Australia </FONT></TD>
564
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;hugh*island.net.au&gt;</FONT></TD>
565
-</TR>
566
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
555
+  HREF="clamav.island.net.au">clamav.island.net.au</A></TT> </SMALL></TD>
556
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 203.28.142.36 </SMALL></TD>
557
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Sydney    </SMALL></TD>
558
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Hugh Blandford</SMALL></TD>
559
+</TR>
560
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
561
+				   </SMALL></TD>
562
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		   </SMALL></TD>
563
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Australia </SMALL></TD>
564
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;hugh*island.net.au&gt;</SMALL></TD>
565
+</TR>
566
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
567 567
 	<TT><A NAME="tex2html62"
568
-  HREF="clamav.iol.cz">clamav.iol.cz</A></TT> </FONT></TD>
569
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 194.228.2.38 </FONT></TD>
570
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Czech Republic </FONT></TD>
571
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Pavel Urban</FONT></TD>
572
-</TR>
573
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
574
-			    </FONT></TD>
575
-<TD ALIGN="CENTER"><FONT SIZE="-1">		   </FONT></TD>
576
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
577
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;pavel.urban*imaginet.cz&gt;</FONT></TD>
578
-</TR>
579
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
568
+  HREF="clamav.iol.cz">clamav.iol.cz</A></TT> </SMALL></TD>
569
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 194.228.2.38 </SMALL></TD>
570
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Czech Republic </SMALL></TD>
571
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Pavel Urban</SMALL></TD>
572
+</TR>
573
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
574
+			    </SMALL></TD>
575
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		   </SMALL></TD>
576
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
577
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;pavel.urban*imaginet.cz&gt;</SMALL></TD>
578
+</TR>
579
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
580 580
 	<TT><A NAME="tex2html63"
581
-  HREF="clamav.securitywonks.net">clamav.securitywonks.net</A></TT> </FONT></TD>
582
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 66.197.159.213 </FONT></TD>
583
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
584
-<TD ALIGN="CENTER"><FONT SIZE="-1"> D. Raghu Veer</FONT></TD>
585
-</TR>
586
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
587
-				       </FONT></TD>
588
-<TD ALIGN="CENTER"><FONT SIZE="-1">		</FONT></TD>
589
-<TD ALIGN="CENTER"><FONT SIZE="-1">     </FONT></TD>
590
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;clamav*zyserver.net&gt;</FONT></TD>
591
-</TR>
592
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
581
+  HREF="clamav.securitywonks.net">clamav.securitywonks.net</A></TT> </SMALL></TD>
582
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 66.197.159.213 </SMALL></TD>
583
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
584
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> D. Raghu Veer</SMALL></TD>
585
+</TR>
586
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
587
+				       </SMALL></TD>
588
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		</SMALL></TD>
589
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">     </SMALL></TD>
590
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;clamav*zyserver.net&gt;</SMALL></TD>
591
+</TR>
592
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
593 593
 	<TT><A NAME="tex2html64"
594
-  HREF="clamav.pcn.de">clamav.pcn.de</A></TT> </FONT></TD>
595
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 213.203.254.4 </FONT></TD>
596
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Hamburg, </FONT></TD>
597
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Karsten Gessner</FONT></TD>
594
+  HREF="clamav.pcn.de">clamav.pcn.de</A></TT> </SMALL></TD>
595
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 213.203.254.4 </SMALL></TD>
596
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Hamburg, </SMALL></TD>
597
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Karsten Gessner</SMALL></TD>
598 598
 </TR>
599
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
600
-			    </FONT></TD>
601
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
602
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Germany  </FONT></TD>
603
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;karsten*pcn.de&gt;</FONT></TD>
599
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
600
+			    </SMALL></TD>
601
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
602
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Germany  </SMALL></TD>
603
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;karsten*pcn.de&gt;</SMALL></TD>
604 604
 </TR>
605 605
 </TABLE>
606 606
     
607 607
 </DIV>
608 608
     <DIV ALIGN="CENTER">
609
-<FONT SIZE="-1">    </FONT><TABLE CELLPADDING=3 BORDER="1">
610
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">
611
-	Mirror </FONT></TD>
612
-<TD ALIGN="CENTER"><FONT SIZE="-1"> IP </FONT></TD>
613
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Location </FONT></TD>
614
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Administrator</FONT></TD>
615
-</TR>
616
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
609
+<SMALL CLASS="FOOTNOTESIZE">    </SMALL><TABLE CELLPADDING=3 BORDER="1">
610
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">
611
+	Mirror </SMALL></TD>
612
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> IP </SMALL></TD>
613
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Location </SMALL></TD>
614
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Administrator</SMALL></TD>
615
+</TR>
616
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
617 617
 	<TT><A NAME="tex2html65"
618
-  HREF="clamav.enderunix.org">clamav.enderunix.org</A></TT> </FONT></TD>
619
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 193.140.143.23 </FONT></TD>
620
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Turkey </FONT></TD>
621
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Omer Faruk Sen</FONT></TD>
622
-</TR>
623
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
624
-				   </FONT></TD>
625
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
626
-<TD ALIGN="CENTER"><FONT SIZE="-1">	     </FONT></TD>
627
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;ofsen*enderunix.org&gt;</FONT></TD>
628
-</TR>
629
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
618
+  HREF="clamav.enderunix.org">clamav.enderunix.org</A></TT> </SMALL></TD>
619
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 193.140.143.23 </SMALL></TD>
620
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Turkey </SMALL></TD>
621
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Omer Faruk Sen</SMALL></TD>
622
+</TR>
623
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
624
+				   </SMALL></TD>
625
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
626
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	     </SMALL></TD>
627
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;ofsen*enderunix.org&gt;</SMALL></TD>
628
+</TR>
629
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
630 630
 	<TT><A NAME="tex2html66"
631
-  HREF="clamav.ovh.net">clamav.ovh.net</A></TT> </FONT></TD>
632
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 213.186.33.38 </FONT></TD>
633
-<TD ALIGN="CENTER"><FONT SIZE="-1"> France </FONT></TD>
634
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Germain Masse</FONT></TD>
635
-</TR>
636
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
637
-			     </FONT></TD>
638
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 213.186.33.37 </FONT></TD>
639
-<TD ALIGN="CENTER"><FONT SIZE="-1">        </FONT></TD>
640
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;germain.masse*ovh.net&gt;</FONT></TD>
641
-</TR>
642
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
631
+  HREF="clamav.ovh.net">clamav.ovh.net</A></TT> </SMALL></TD>
632
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 213.186.33.38 </SMALL></TD>
633
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> France </SMALL></TD>
634
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Germain Masse</SMALL></TD>
635
+</TR>
636
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
637
+			     </SMALL></TD>
638
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 213.186.33.37 </SMALL></TD>
639
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">        </SMALL></TD>
640
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;germain.masse*ovh.net&gt;</SMALL></TD>
641
+</TR>
642
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
643 643
 	<TT><A NAME="tex2html67"
644
-  HREF="clamav.spod.org">clamav.spod.org</A></TT> </FONT></TD>
645
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 195.92.99.99 </FONT></TD>
646
-<TD ALIGN="CENTER"><FONT SIZE="-1"> United Kingdom </FONT></TD>
647
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Ian Kirk</FONT></TD>
648
-</TR>
649
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
650
-			      </FONT></TD>
651
-<TD ALIGN="CENTER"><FONT SIZE="-1">		     </FONT></TD>
652
-<TD ALIGN="CENTER"><FONT SIZE="-1">		      </FONT></TD>
653
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;blob*blob.co.uk&gt;</FONT></TD>
654
-</TR>
655
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
644
+  HREF="clamav.spod.org">clamav.spod.org</A></TT> </SMALL></TD>
645
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 195.92.99.99 </SMALL></TD>
646
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> United Kingdom </SMALL></TD>
647
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Ian Kirk</SMALL></TD>
648
+</TR>
649
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
650
+			      </SMALL></TD>
651
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		     </SMALL></TD>
652
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		      </SMALL></TD>
653
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;blob*blob.co.uk&gt;</SMALL></TD>
654
+</TR>
655
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
656 656
 	<TT><A NAME="tex2html68"
657
-  HREF="clamav.intercom.net.ua">clamav.intercom.net.ua</A></TT> </FONT></TD>
658
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 195.13.43.28 </FONT></TD>
659
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Ukraine </FONT></TD>
660
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Artie Missirov</FONT></TD>
661
-</TR>
662
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
663
-				     </FONT></TD>
664
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
665
-<TD ALIGN="CENTER"><FONT SIZE="-1">	      </FONT></TD>
666
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;kadjy*intercom.net.ua&gt;</FONT></TD>
667
-</TR>
668
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
657
+  HREF="clamav.intercom.net.ua">clamav.intercom.net.ua</A></TT> </SMALL></TD>
658
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 195.13.43.28 </SMALL></TD>
659
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Ukraine </SMALL></TD>
660
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Artie Missirov</SMALL></TD>
661
+</TR>
662
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
663
+				     </SMALL></TD>
664
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
665
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	      </SMALL></TD>
666
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;kadjy*intercom.net.ua&gt;</SMALL></TD>
667
+</TR>
668
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
669 669
 	<TT><A NAME="tex2html69"
670
-  HREF="clamav.mirror.vutbr.cz">clamav.mirror.vutbr.cz</A></TT> </FONT></TD>
671
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 147.229.3.16 </FONT></TD>
672
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Czech Republic </FONT></TD>
673
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Tomas Kreuzwieser</FONT></TD>
674
-</TR>
675
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
676
-				     </FONT></TD>
677
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
678
-<TD ALIGN="CENTER"><FONT SIZE="-1">		     </FONT></TD>
679
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;mirror-adm*cis.vutbr.cz&gt;</FONT></TD>
680
-</TR>
681
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
670
+  HREF="clamav.mirror.vutbr.cz">clamav.mirror.vutbr.cz</A></TT> </SMALL></TD>
671
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 147.229.3.16 </SMALL></TD>
672
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Czech Republic </SMALL></TD>
673
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Tomas Kreuzwieser</SMALL></TD>
674
+</TR>
675
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
676
+				     </SMALL></TD>
677
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
678
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		     </SMALL></TD>
679
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;mirror-adm*cis.vutbr.cz&gt;</SMALL></TD>
680
+</TR>
681
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
682 682
 	<TT><A NAME="tex2html70"
683
-  HREF="database.clamav.ps.pl">database.clamav.ps.pl</A></TT> </FONT></TD>
684
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 212.14.28.36 </FONT></TD>
685
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Poland </FONT></TD>
686
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Adam Popik</FONT></TD>
687
-</TR>
688
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
689
-				    </FONT></TD>
690
-<TD ALIGN="CENTER"><FONT SIZE="-1">		   </FONT></TD>
691
-<TD ALIGN="CENTER"><FONT SIZE="-1">	    </FONT></TD>
692
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;adam*popik.pl&gt;</FONT></TD>
693
-</TR>
694
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
683
+  HREF="database.clamav.ps.pl">database.clamav.ps.pl</A></TT> </SMALL></TD>
684
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 212.14.28.36 </SMALL></TD>
685
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Poland </SMALL></TD>
686
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Adam Popik</SMALL></TD>
687
+</TR>
688
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
689
+				    </SMALL></TD>
690
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		   </SMALL></TD>
691
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	    </SMALL></TD>
692
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;adam*popik.pl&gt;</SMALL></TD>
693
+</TR>
694
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
695 695
 	<TT><A NAME="tex2html71"
696
-  HREF="clamav.fx-services.com">clamav.fx-services.com</A></TT> </FONT></TD>
697
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 69.93.108.98 </FONT></TD>
698
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
699
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Robin Vley</FONT></TD>
700
-</TR>
701
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
702
-				     </FONT></TD>
703
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
704
-<TD ALIGN="CENTER"><FONT SIZE="-1">	  </FONT></TD>
705
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;robin*fx-services.com&gt;</FONT></TD>
706
-</TR>
707
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
696
+  HREF="clamav.fx-services.com">clamav.fx-services.com</A></TT> </SMALL></TD>
697
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 69.93.108.98 </SMALL></TD>
698
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
699
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Robin Vley</SMALL></TD>
700
+</TR>
701
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
702
+				     </SMALL></TD>
703
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
704
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	  </SMALL></TD>
705
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;robin*fx-services.com&gt;</SMALL></TD>
706
+</TR>
707
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
708 708
 	<TT><A NAME="tex2html72"
709
-  HREF="clamav.univ-nantes.fr">clamav.univ-nantes.fr</A></TT> </FONT></TD>
710
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 193.52.101.131 </FONT></TD>
711
-<TD ALIGN="CENTER"><FONT SIZE="-1"> France </FONT></TD>
712
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Yann Dupont</FONT></TD>
713
-</TR>
714
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
715
-				    </FONT></TD>
716
-<TD ALIGN="CENTER"><FONT SIZE="-1">		     </FONT></TD>
717
-<TD ALIGN="CENTER"><FONT SIZE="-1">	      </FONT></TD>
718
-<TD ALIGN="CENTER"><FONT SIZE="-1">	&lt;yann.dupont*univ-nantes.fr&gt;</FONT></TD>
719
-</TR>
720
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
709
+  HREF="clamav.univ-nantes.fr">clamav.univ-nantes.fr</A></TT> </SMALL></TD>
710
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 193.52.101.131 </SMALL></TD>
711
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> France </SMALL></TD>
712
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Yann Dupont</SMALL></TD>
713
+</TR>
714
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
715
+				    </SMALL></TD>
716
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		     </SMALL></TD>
717
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	      </SMALL></TD>
718
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	&lt;yann.dupont*univ-nantes.fr&gt;</SMALL></TD>
719
+</TR>
720
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
721 721
 	<TT><A NAME="tex2html73"
722
-  HREF="clamav.blackroute.net">clamav.blackroute.net</A></TT> </FONT></TD>
723
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 64.246.44.108 </FONT></TD>
724
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Texas, USA </FONT></TD>
725
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Maarten Van Horenbeeck</FONT></TD>
726
-</TR>
727
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
728
-				    </FONT></TD>
729
-<TD ALIGN="CENTER"><FONT SIZE="-1">		    </FONT></TD>
730
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
731
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;maarten*daemon.be&gt;</FONT></TD>
732
-</TR>
733
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
722
+  HREF="clamav.blackroute.net">clamav.blackroute.net</A></TT> </SMALL></TD>
723
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 64.246.44.108 </SMALL></TD>
724
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Texas, USA </SMALL></TD>
725
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Maarten Van Horenbeeck</SMALL></TD>
726
+</TR>
727
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
728
+				    </SMALL></TD>
729
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		    </SMALL></TD>
730
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
731
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;maarten*daemon.be&gt;</SMALL></TD>
732
+</TR>
733
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
734 734
 	<TT><A NAME="tex2html74"
735
-  HREF="clamavdb.mithril-linux.org">clamavdb.mithril-linux.org</A></TT> </FONT></TD>
736
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 211.10.155.48 </FONT></TD>
737
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Japan </FONT></TD>
738
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Hideki Yamane</FONT></TD>
739
-</TR>
740
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
741
-					 </FONT></TD>
742
-<TD ALIGN="CENTER"><FONT SIZE="-1">		 </FONT></TD>
743
-<TD ALIGN="CENTER"><FONT SIZE="-1">	 </FONT></TD>
744
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;henrich*samba.gr.jp&gt;</FONT></TD>
745
-</TR>
746
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
735
+  HREF="clamavdb.mithril-linux.org">clamavdb.mithril-linux.org</A></TT> </SMALL></TD>
736
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 211.10.155.48 </SMALL></TD>
737
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Japan </SMALL></TD>
738
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Hideki Yamane</SMALL></TD>
739
+</TR>
740
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
741
+					 </SMALL></TD>
742
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		 </SMALL></TD>
743
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	 </SMALL></TD>
744
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;henrich*samba.gr.jp&gt;</SMALL></TD>
745
+</TR>
746
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
747 747
 	<TT><A NAME="tex2html75"
748
-  HREF="clamavdb.planetmirror.com">clamavdb.planetmirror.com</A></TT> </FONT></TD>
749
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 203.16.234.78 </FONT></TD>
750
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Australia </FONT></TD>
751
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Jason Andrade</FONT></TD>
752
-</TR>
753
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
754
-					</FONT></TD>
755
-<TD ALIGN="CENTER"><FONT SIZE="-1">		</FONT></TD>
756
-<TD ALIGN="CENTER"><FONT SIZE="-1">	    </FONT></TD>
757
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;support*planetmirror.com&gt;</FONT></TD>
758
-</TR>
759
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
748
+  HREF="clamavdb.planetmirror.com">clamavdb.planetmirror.com</A></TT> </SMALL></TD>
749
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 203.16.234.78 </SMALL></TD>
750
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Australia </SMALL></TD>
751
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Jason Andrade</SMALL></TD>
752
+</TR>
753
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
754
+					</SMALL></TD>
755
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		</SMALL></TD>
756
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	    </SMALL></TD>
757
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;support*planetmirror.com&gt;</SMALL></TD>
758
+</TR>
759
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
760 760
 	<TT><A NAME="tex2html76"
761
-  HREF="clamavdb.raimei.co.jp">clamavdb.raimei.co.jp</A></TT> </FONT></TD>
762
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 219.106.255.66 </FONT></TD>
763
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Japan </FONT></TD>
764
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Araki Musashi</FONT></TD>
765
-</TR>
766
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
767
-				    </FONT></TD>
768
-<TD ALIGN="CENTER"><FONT SIZE="-1">		     </FONT></TD>
769
-<TD ALIGN="CENTER"><FONT SIZE="-1">	     </FONT></TD>
770
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;araki*raimei.co.jp&gt;</FONT></TD>
771
-</TR>
772
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1">  
761
+  HREF="clamavdb.raimei.co.jp">clamavdb.raimei.co.jp</A></TT> </SMALL></TD>
762
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 219.106.255.66 </SMALL></TD>
763
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Japan </SMALL></TD>
764
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Araki Musashi</SMALL></TD>
765
+</TR>
766
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
767
+				    </SMALL></TD>
768
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		     </SMALL></TD>
769
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	     </SMALL></TD>
770
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;araki*raimei.co.jp&gt;</SMALL></TD>
771
+</TR>
772
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
773 773
 	<TT><A NAME="tex2html77"
774
-  HREF="clamav.pathlink.com">clamav.pathlink.com</A></TT> </FONT></TD>
775
-<TD ALIGN="CENTER"><FONT SIZE="-1"> 129.250.169.81 </FONT></TD>
776
-<TD ALIGN="CENTER"><FONT SIZE="-1"> USA </FONT></TD>
777
-<TD ALIGN="CENTER"><FONT SIZE="-1"> Kachun Lee</FONT></TD>
778
-</TR>
779
-<TR><TD ALIGN="CENTER"><FONT SIZE="-1"> 
780
-				  </FONT></TD>
781
-<TD ALIGN="CENTER"><FONT SIZE="-1">		   </FONT></TD>
782
-<TD ALIGN="CENTER"><FONT SIZE="-1">	 </FONT></TD>
783
-<TD ALIGN="CENTER"><FONT SIZE="-1"> &lt;kachun*pathlink.com&gt;</FONT></TD>
774
+  HREF="clamav.pathlink.com">clamav.pathlink.com</A></TT> </SMALL></TD>
775
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 129.250.169.81 </SMALL></TD>
776
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> USA </SMALL></TD>
777
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Kachun Lee</SMALL></TD>
778
+</TR>
779
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
780
+				  </SMALL></TD>
781
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		   </SMALL></TD>
782
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">	 </SMALL></TD>
783
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;kachun*pathlink.com&gt;</SMALL></TD>
784
+</TR>
785
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">  
786
+	<TT><A NAME="tex2html78"
787
+  HREF="clamav.mirror.camelnetwork.com">clamav.mirror.camelnetwork.com</A></TT> </SMALL></TD>
788
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 213.230.200.242 </SMALL></TD>
789
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> UK </SMALL></TD>
790
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> Chris Burton</SMALL></TD>
791
+</TR>
792
+<TR><TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> 
793
+					     </SMALL></TD>
794
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">		       </SMALL></TD>
795
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE">    </SMALL></TD>
796
+<TD ALIGN="CENTER"><SMALL CLASS="FOOTNOTESIZE"> &lt;clamav.mirror*camelnetwork.com&gt;</SMALL></TD>
784 797
 </TR>
785 798
 </TABLE>
786 799
     
787 800
 </DIV>
788
-There is a <I>DatabaseMirror</I> directive in the config file, which
801
+There is a <SPAN  CLASS="textit">DatabaseMirror</SPAN> directive in the config file, which
789 802
     specifies the main database server freshclam will attempt to connect to
790
-    (up to <I>MaxAttempts</I> times) in order to check or update the database.
791
-    If there are more <I>DatabaseMirror</I> lines specified it will switch
803
+    (up to <SPAN  CLASS="textit">MaxAttempts</SPAN> times) in order to check or update the database.
804
+    If there are more <SPAN  CLASS="textit">DatabaseMirror</SPAN> lines specified it will switch
792 805
     automatically to the next one if a connection with the previous mirror
793 806
     failed for some reason.
794 807
 
795 808
 <P>
796
-<HR>
809
+
810
+<DIV CLASS="navigation"><HR>
797 811
 <!--Navigation Panel-->
798
-<A NAME="tex2html554"
812
+<A NAME="tex2html565"
799 813
   HREF="node18.html">
800 814
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
801 815
  SRC="/usr/share/latex2html/icons/next.png"></A> 
802
-<A NAME="tex2html550"
816
+<A NAME="tex2html561"
803 817
   HREF="node6.html">
804 818
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
805 819
  SRC="/usr/share/latex2html/icons/up.png"></A> 
806
-<A NAME="tex2html546"
820
+<A NAME="tex2html557"
807 821
   HREF="node16.html">
808 822
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
809 823
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
810
-<A NAME="tex2html552"
824
+<A NAME="tex2html563"
811 825
   HREF="node1.html">
812 826
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
813 827
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
814 828
 <BR>
815
-<B> Next:</B> <A NAME="tex2html555"
829
+<B> Next:</B> <A NAME="tex2html566"
816 830
   HREF="node18.html">Usage</A>
817
-<B> Up:</B> <A NAME="tex2html551"
831
+<B> Up:</B> <A NAME="tex2html562"
818 832
   HREF="node6.html">Installation</A>
819
-<B> Previous:</B> <A NAME="tex2html547"
833
+<B> Previous:</B> <A NAME="tex2html558"
820 834
   HREF="node16.html">freshclam: Setting up auto-updating</A>
821
- &nbsp <B>  <A NAME="tex2html553"
822
-  HREF="node1.html">Contents</A></B> 
835
+ &nbsp; <B>  <A NAME="tex2html564"
836
+  HREF="node1.html">Contents</A></B> </DIV>
823 837
 <!--End of Navigation Panel-->
824 838
 <ADDRESS>
825 839
 Tomasz Kojm
826
-2004-06-29
840
+2004-07-22
827 841
 </ADDRESS>
828 842
 </BODY>
829 843
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html566"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html577"
31 32
   HREF="node19.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html562"
35
+<A NAME="tex2html573"
35 36
   HREF="clamdoc.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html556"
39
+<A NAME="tex2html567"
39 40
   HREF="node17.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html564"
43
+<A NAME="tex2html575"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html567"
48
+<B> Next:</B> <A NAME="tex2html578"
48 49
   HREF="node19.html">Clam daemon</A>
49
-<B> Up:</B> <A NAME="tex2html563"
50
+<B> Up:</B> <A NAME="tex2html574"
50 51
   HREF="clamdoc.html">clamdoc</A>
51
-<B> Previous:</B> <A NAME="tex2html557"
52
+<B> Previous:</B> <A NAME="tex2html568"
52 53
   HREF="node17.html">Database mirrors</A>
53
- &nbsp <B>  <A NAME="tex2html565"
54
+ &nbsp; <B>  <A NAME="tex2html576"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H1><A NAME="SECTION00040000000000000000">
... ...
@@ -65,27 +65,27 @@ Usage</A>
65 65
 <!--Table of Child-Links-->
66 66
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
67 67
 
68
-<UL>
69
-<LI><A NAME="tex2html568"
68
+<UL CLASS="ChildLinks">
69
+<LI><A NAME="tex2html579"
70 70
   HREF="node19.html">Clam daemon</A>
71
-<LI><A NAME="tex2html569"
72
-  HREF="node20.html">Clam<B>d</B>scan</A>
73
-<LI><A NAME="tex2html570"
71
+<LI><A NAME="tex2html580"
72
+  HREF="node20.html">Clam<SPAN  CLASS="textbf">d</SPAN>scan</A>
73
+<LI><A NAME="tex2html581"
74 74
   HREF="node21.html">Clamuko</A>
75
-<LI><A NAME="tex2html571"
75
+<LI><A NAME="tex2html582"
76 76
   HREF="node22.html">Archives and compressed files</A>
77
-<LI><A NAME="tex2html572"
77
+<LI><A NAME="tex2html583"
78 78
   HREF="node23.html">Mail files</A>
79
-<LI><A NAME="tex2html573"
79
+<LI><A NAME="tex2html584"
80 80
   HREF="node24.html">Output format</A>
81
-<LI><A NAME="tex2html574"
81
+<LI><A NAME="tex2html585"
82 82
   HREF="node25.html">Signature Tool</A>
83 83
 </UL>
84 84
 <!--End of Table of Child-Links-->
85 85
 <BR><HR>
86 86
 <ADDRESS>
87 87
 Tomasz Kojm
88
-2004-06-29
88
+2004-07-22
89 89
 </ADDRESS>
90 90
 </BODY>
91 91
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,41 +25,42 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html585"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html596"
31 32
   HREF="node20.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html581"
35
+<A NAME="tex2html592"
35 36
   HREF="node18.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html575"
39
+<A NAME="tex2html586"
39 40
   HREF="node18.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html583"
43
+<A NAME="tex2html594"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html586"
48
+<B> Next:</B> <A NAME="tex2html597"
48 49
   HREF="node20.html">Clamdscan</A>
49
-<B> Up:</B> <A NAME="tex2html582"
50
+<B> Up:</B> <A NAME="tex2html593"
50 51
   HREF="node18.html">Usage</A>
51
-<B> Previous:</B> <A NAME="tex2html576"
52
+<B> Previous:</B> <A NAME="tex2html587"
52 53
   HREF="node18.html">Usage</A>
53
- &nbsp <B>  <A NAME="tex2html584"
54
+ &nbsp; <B>  <A NAME="tex2html595"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00041000000000000000"></A><A NAME="clamd"></A>
60 61
 <BR>
61 62
 Clam daemon
62 63
 </H2>
63
-    <I>clamd</I> is a multi-threaded daemon and uses <I>libclamav</I>
64
+    <SPAN  CLASS="textit">clamd</SPAN> is a multi-threaded daemon and uses <SPAN  CLASS="textit">libclamav</SPAN>
64 65
     to scan files against viruses.  It may work in one of the two
65 66
     following network modes, listening on a:
66 67
     
... ...
@@ -71,49 +71,49 @@ Clam daemon
71 71
     
72 72
 </LI>
73 73
 </UL>
74
-    The daemon is fully configurable via the <I>clamav.conf</I> file. You will
75
-    find a description for every directive in the <I>clamav.conf(5)</I>
76
-    manual. <I>clamd</I> recognizes the following commands:
74
+    The daemon is fully configurable via the <SPAN  CLASS="textit">clamav.conf</SPAN> file. You will
75
+    find a description for every directive in the <SPAN  CLASS="textit">clamav.conf(5)</SPAN>
76
+    manual. <SPAN  CLASS="textit">clamd</SPAN> recognizes the following commands:
77 77
     
78 78
 <UL>
79
-<LI><B>PING</B>
79
+<LI><SPAN  CLASS="textbf">PING</SPAN>
80 80
 <BR>
81 81
 Check a daemon state (should reply with "PONG").
82 82
 </LI>
83
-<LI><B>VERSION</B>
83
+<LI><SPAN  CLASS="textbf">VERSION</SPAN>
84 84
 <BR>
85 85
 Print version information.
86 86
 </LI>
87
-<LI><B>RELOAD</B>
87
+<LI><SPAN  CLASS="textbf">RELOAD</SPAN>
88 88
 <BR>
89 89
 Reload databases.
90 90
 </LI>
91
-<LI><B>SHUTDOWN</B>
91
+<LI><SPAN  CLASS="textbf">SHUTDOWN</SPAN>
92 92
 <BR>
93 93
 Perform a clean exit.
94 94
 </LI>
95
-<LI><B>SCAN file/directory</B>
95
+<LI><SPAN  CLASS="textbf">SCAN file/directory</SPAN>
96 96
 	    Scan a file or directory (recursively) with archive support
97 97
 	    enabled. A full path is required.
98 98
 </LI>
99
-<LI><B>RAWSCAN file/directory</B>
99
+<LI><SPAN  CLASS="textbf">RAWSCAN file/directory</SPAN>
100 100
 	    Scan a file or directory (recursively) with archive support
101 101
 	    disabled. A full path is required.
102 102
 </LI>
103
-<LI><B>CONTSCAN file/directory</B>
103
+<LI><SPAN  CLASS="textbf">CONTSCAN file/directory</SPAN>
104 104
 	    Scan a file or directory (recursively) with archive support
105 105
 	    enabled and don't stop even if virus is found.
106 106
 </LI>
107
-<LI><B>STREAM</B>
107
+<LI><SPAN  CLASS="textbf">STREAM</SPAN>
108 108
 	    Scan stream - clamd will return a new port number you should
109
-	    connect to and send a data to scan. <I>The protocol is
109
+	    connect to and send a data to scan. <SPAN  CLASS="textit">The protocol is
110 110
 	    obsolete and there will be a new version soon (however this one
111
-	    will still be supported).</I>
111
+	    will still be supported).</SPAN>
112 112
 </LI>
113
-<LI><B>SESSION, END</B>
113
+<LI><SPAN  CLASS="textbf">SESSION, END</SPAN>
114 114
 	    Start/end a clamd session - you can do multiple commands per TCP
115 115
 	    session (WARNING: due to the clamd implementation the
116
-	    <B>RELOAD</B> command will break the session).
116
+	    <SPAN  CLASS="textbf">RELOAD</SPAN> command will break the session).
117 117
 
118 118
 <P>
119 119
 </LI>
... ...
@@ -121,47 +121,48 @@ Perform a clean exit.
121 121
     Clamd reacts on the three special signals:
122 122
     
123 123
 <UL>
124
-<LI><B>SIGTERM</B> - perform a clean exit
124
+<LI><SPAN  CLASS="textbf">SIGTERM</SPAN> - perform a clean exit
125 125
 </LI>
126
-<LI><B>SIGHUP</B> - reopen the log file
126
+<LI><SPAN  CLASS="textbf">SIGHUP</SPAN> - reopen the log file
127 127
 </LI>
128
-<LI><B>SIGUSR2</B> - reload the database
128
+<LI><SPAN  CLASS="textbf">SIGUSR2</SPAN> - reload the database
129 129
     
130 130
 </LI>
131 131
 </UL>
132 132
 
133 133
 <P>
134
-<HR>
134
+
135
+<DIV CLASS="navigation"><HR>
135 136
 <!--Navigation Panel-->
136
-<A NAME="tex2html585"
137
+<A NAME="tex2html596"
137 138
   HREF="node20.html">
138 139
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
139 140
  SRC="/usr/share/latex2html/icons/next.png"></A> 
140
-<A NAME="tex2html581"
141
+<A NAME="tex2html592"
141 142
   HREF="node18.html">
142 143
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
143 144
  SRC="/usr/share/latex2html/icons/up.png"></A> 
144
-<A NAME="tex2html575"
145
+<A NAME="tex2html586"
145 146
   HREF="node18.html">
146 147
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
147 148
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
148
-<A NAME="tex2html583"
149
+<A NAME="tex2html594"
149 150
   HREF="node1.html">
150 151
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
151 152
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
152 153
 <BR>
153
-<B> Next:</B> <A NAME="tex2html586"
154
+<B> Next:</B> <A NAME="tex2html597"
154 155
   HREF="node20.html">Clamdscan</A>
155
-<B> Up:</B> <A NAME="tex2html582"
156
+<B> Up:</B> <A NAME="tex2html593"
156 157
   HREF="node18.html">Usage</A>
157
-<B> Previous:</B> <A NAME="tex2html576"
158
+<B> Previous:</B> <A NAME="tex2html587"
158 159
   HREF="node18.html">Usage</A>
159
- &nbsp <B>  <A NAME="tex2html584"
160
-  HREF="node1.html">Contents</A></B> 
160
+ &nbsp; <B>  <A NAME="tex2html595"
161
+  HREF="node1.html">Contents</A></B> </DIV>
161 162
 <!--End of Navigation Panel-->
162 163
 <ADDRESS>
163 164
 Tomasz Kojm
164
-2004-06-29
165
+2004-07-22
165 166
 </ADDRESS>
166 167
 </BODY>
167 168
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html364"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html375"
31 32
   HREF="node3.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html360"
35
+<A NAME="tex2html371"
35 36
   HREF="clamdoc.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html354"
39
+<A NAME="tex2html365"
39 40
   HREF="node1.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html362"
43
+<A NAME="tex2html373"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html365"
48
+<B> Next:</B> <A NAME="tex2html376"
48 49
   HREF="node3.html">Features</A>
49
-<B> Up:</B> <A NAME="tex2html361"
50
+<B> Up:</B> <A NAME="tex2html372"
50 51
   HREF="clamdoc.html">clamdoc</A>
51
-<B> Previous:</B> <A NAME="tex2html355"
52
+<B> Previous:</B> <A NAME="tex2html366"
52 53
   HREF="node1.html">Contents</A>
53
- &nbsp <B>  <A NAME="tex2html363"
54
+ &nbsp; <B>  <A NAME="tex2html374"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H1><A NAME="SECTION00020000000000000000">
... ...
@@ -73,19 +73,19 @@ Clam AntiVirus is an anti-virus toolkit for UNIX. The main purpose of this
73 73
 <!--Table of Child-Links-->
74 74
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
75 75
 
76
-<UL>
77
-<LI><A NAME="tex2html366"
76
+<UL CLASS="ChildLinks">
77
+<LI><A NAME="tex2html377"
78 78
   HREF="node3.html">Features</A>
79
-<LI><A NAME="tex2html367"
79
+<LI><A NAME="tex2html378"
80 80
   HREF="node4.html">Mailing lists</A>
81
-<LI><A NAME="tex2html368"
81
+<LI><A NAME="tex2html379"
82 82
   HREF="node5.html">Virus submitting</A>
83 83
 </UL>
84 84
 <!--End of Table of Child-Links-->
85 85
 <BR><HR>
86 86
 <ADDRESS>
87 87
 Tomasz Kojm
88
-2004-06-29
88
+2004-07-22
89 89
 </ADDRESS>
90 90
 </BODY>
91 91
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,38 +25,39 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html597"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html608"
31 32
   HREF="node21.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html593"
35
+<A NAME="tex2html604"
35 36
   HREF="node18.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html587"
39
+<A NAME="tex2html598"
39 40
   HREF="node19.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html595"
43
+<A NAME="tex2html606"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html598"
48
+<B> Next:</B> <A NAME="tex2html609"
48 49
   HREF="node21.html">Clamuko</A>
49
-<B> Up:</B> <A NAME="tex2html594"
50
+<B> Up:</B> <A NAME="tex2html605"
50 51
   HREF="node18.html">Usage</A>
51
-<B> Previous:</B> <A NAME="tex2html588"
52
+<B> Previous:</B> <A NAME="tex2html599"
52 53
   HREF="node19.html">Clam daemon</A>
53
- &nbsp <B>  <A NAME="tex2html596"
54
+ &nbsp; <B>  <A NAME="tex2html607"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00042000000000000000">
60
-Clam<B>d</B>scan</A>
61
+Clam<SPAN  CLASS="textbf">d</SPAN>scan</A>
61 62
 </H2>
62 63
     clamdscan is a simple clamd client. In many cases you can use it as
63 64
     a clamscan replacement but you must remember that:
... ...
@@ -81,7 +81,7 @@ Clam<B>d</B>scan</A>
81 81
 <BR><HR>
82 82
 <ADDRESS>
83 83
 Tomasz Kojm
84
-2004-06-29
84
+2004-07-22
85 85
 </ADDRESS>
86 86
 </BODY>
87 87
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,47 +25,48 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html609"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html620"
31 32
   HREF="node22.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html605"
35
+<A NAME="tex2html616"
35 36
   HREF="node18.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html599"
39
+<A NAME="tex2html610"
39 40
   HREF="node20.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html607"
43
+<A NAME="tex2html618"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html610"
48
+<B> Next:</B> <A NAME="tex2html621"
48 49
   HREF="node22.html">Archives and compressed files</A>
49
-<B> Up:</B> <A NAME="tex2html606"
50
+<B> Up:</B> <A NAME="tex2html617"
50 51
   HREF="node18.html">Usage</A>
51
-<B> Previous:</B> <A NAME="tex2html600"
52
+<B> Previous:</B> <A NAME="tex2html611"
52 53
   HREF="node20.html">Clamdscan</A>
53
- &nbsp <B>  <A NAME="tex2html608"
54
+ &nbsp; <B>  <A NAME="tex2html619"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00043000000000000000"></A><A NAME="clamuko"></A>
60 61
 <BR>
61 62
 Clamuko
62 63
 </H2>
63
-    Clamuko is a special thread in <I>clamd</I> that performs on-access
64
+    Clamuko is a special thread in <SPAN  CLASS="textit">clamd</SPAN> that performs on-access
64 65
     scanning under Linux and FreeBSD. It is implemented as a thread in clamd
65 66
     and cannot work as a clamd client because of the Dazuko implementation.
66 67
     There are however some benefits of the current implementation - clamuko
67 68
     is sharing the internal virus database with clamd and it's updated with
68
-    the RELOAD command. <B>You must follow some important rules when
69
-    using clamuko:</B>
69
+    the RELOAD command. <SPAN  CLASS="textbf">You must follow some important rules when
70
+    using clamuko:</SPAN>
70 71
     
71 72
 <UL>
72 73
 <LI>Always stop the daemon cleanly - using the QUIT command or
... ...
@@ -76,12 +76,12 @@ Clamuko
76 76
 <LI>Never protect a directory your mail-scanner software
77 77
 	      uses for attachment unpacking. Access to all infected
78 78
 	      files will be automatically blocked and the scanner (even clamd)
79
-	      won't be able to detect a virus. <B>All infected mails will
80
-	      be delivered.</B>
79
+	      won't be able to detect a virus. <SPAN  CLASS="textbf">All infected mails will
80
+	      be delivered.</SPAN>
81 81
     
82 82
 </LI>
83 83
 </UL>
84
-    You need to enable clamuko in <I>clamav.conf</I>. To protect the /home
84
+    You need to enable clamuko in <SPAN  CLASS="textit">clamav.conf</SPAN>. To protect the /home
85 85
     directory enable:
86 86
     <PRE>
87 87
 	ClamukoIncludePath /home
... ...
@@ -93,44 +93,45 @@ Clamuko
93 93
 	ClamukoExcludePath /temporary/dir/of/your/mail/scanning/software
94 94
 </PRE>
95 95
     You can use clamuko to protect files on Samba/Netatalk (but far
96
-    more better and safe idea is to use the <B>samba-vscan</B> module
97
-    <A HREF="node44.html#samba-vscan">5.16</A>. NFS is not supported (Dazuko doesn't intercept NFS
96
+    more better and safe idea is to use the <SPAN  CLASS="textbf">samba-vscan</SPAN> module
97
+    <A HREF="node45.html#samba-vscan">5.17</A>. NFS is not supported (Dazuko doesn't intercept NFS
98 98
     access calls). Yet another idea - you may build a database that contains
99 99
     signatures for popular exploits and setup clamd to protect your server
100 100
     from script-kiddies.
101 101
 
102 102
 <P>
103
-<HR>
103
+
104
+<DIV CLASS="navigation"><HR>
104 105
 <!--Navigation Panel-->
105
-<A NAME="tex2html609"
106
+<A NAME="tex2html620"
106 107
   HREF="node22.html">
107 108
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
108 109
  SRC="/usr/share/latex2html/icons/next.png"></A> 
109
-<A NAME="tex2html605"
110
+<A NAME="tex2html616"
110 111
   HREF="node18.html">
111 112
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
112 113
  SRC="/usr/share/latex2html/icons/up.png"></A> 
113
-<A NAME="tex2html599"
114
+<A NAME="tex2html610"
114 115
   HREF="node20.html">
115 116
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
116 117
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
117
-<A NAME="tex2html607"
118
+<A NAME="tex2html618"
118 119
   HREF="node1.html">
119 120
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
120 121
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
121 122
 <BR>
122
-<B> Next:</B> <A NAME="tex2html610"
123
+<B> Next:</B> <A NAME="tex2html621"
123 124
   HREF="node22.html">Archives and compressed files</A>
124
-<B> Up:</B> <A NAME="tex2html606"
125
+<B> Up:</B> <A NAME="tex2html617"
125 126
   HREF="node18.html">Usage</A>
126
-<B> Previous:</B> <A NAME="tex2html600"
127
+<B> Previous:</B> <A NAME="tex2html611"
127 128
   HREF="node20.html">Clamdscan</A>
128
- &nbsp <B>  <A NAME="tex2html608"
129
-  HREF="node1.html">Contents</A></B> 
129
+ &nbsp; <B>  <A NAME="tex2html619"
130
+  HREF="node1.html">Contents</A></B> </DIV>
130 131
 <!--End of Navigation Panel-->
131 132
 <ADDRESS>
132 133
 Tomasz Kojm
133
-2004-06-29
134
+2004-07-22
134 135
 </ADDRESS>
135 136
 </BODY>
136 137
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html621"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html632"
31 32
   HREF="node23.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html617"
35
+<A NAME="tex2html628"
35 36
   HREF="node18.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html611"
39
+<A NAME="tex2html622"
39 40
   HREF="node21.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html619"
43
+<A NAME="tex2html630"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html622"
48
+<B> Next:</B> <A NAME="tex2html633"
48 49
   HREF="node23.html">Mail files</A>
49
-<B> Up:</B> <A NAME="tex2html618"
50
+<B> Up:</B> <A NAME="tex2html629"
50 51
   HREF="node18.html">Usage</A>
51
-<B> Previous:</B> <A NAME="tex2html612"
52
+<B> Previous:</B> <A NAME="tex2html623"
52 53
   HREF="node21.html">Clamuko</A>
53
- &nbsp <B>  <A NAME="tex2html620"
54
+ &nbsp; <B>  <A NAME="tex2html631"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00044000000000000000">
... ...
@@ -73,8 +73,8 @@ Archives and compressed files</A>
73 73
     
74 74
 </LI>
75 75
 </UL>
76
-    Archive types are determined by magic number tests.<A NAME="tex2html78"
77
-  HREF="footnode.html#foot415"><SUP>5</SUP></A> You need the zlib library
76
+    Archive types are determined by magic number tests.<A NAME="tex2html79"
77
+  HREF="footnode.html#foot418"><SUP><SPAN CLASS="arabic">5</SPAN></SUP></A> You need the zlib library
78 78
     for the Zip/Gzip support. Zip archives are accessed with the zziplib
79 79
     library by Guido Draheim and Tomi Ollila. RAR support is based on the
80 80
     UniquE RAR File Library by Christian Scheurer and Johannes Winkelmann.
... ...
@@ -99,74 +99,75 @@ Archives and compressed files</A>
99 99
 	/tmp/44694f5b2665d2f4/test1: ClamAV-Test-Signature FOUND
100 100
 	/home/zolw/Clam/test/test-failure.rar: Infected Archive FOUND
101 101
 </PRE>
102
-    <I><B>TIP:</B> You can force clamscan to list all infected files
102
+    <SPAN  CLASS="textit"><SPAN  CLASS="textbf">TIP:</SPAN> You can force clamscan to list all infected files
103 103
     in archive using -disable-archive (it disables the built-in
104
-    transparent decompressors) and -unzip -unrar...</I>.
105
-<BR>    <B>If the scanner runs on a superuser level unpackers are
106
-    executed with <I>clamav</I> privileges what makes the process far more
107
-    secure.</B> It also assures the <I>clamav</I> user has read access
108
-    to all files. <B>You must enable recursive scanning with the -r
104
+    transparent decompressors) and -unzip -unrar...</SPAN>.
105
+<BR>    <SPAN  CLASS="textbf">If the scanner runs on a superuser level unpackers are
106
+    executed with <SPAN  CLASS="textit">clamav</SPAN> privileges what makes the process far more
107
+    secure.</SPAN> It also assures the <SPAN  CLASS="textit">clamav</SPAN> user has read access
108
+    to all files. <SPAN  CLASS="textbf">You must enable recursive scanning with the -r
109 109
     option (-recursive) in order to scan  a whole content of an
110
-    archive (including subdirectories)</B>, this option is also (usually) required
110
+    archive (including subdirectories)</SPAN>, this option is also (usually) required
111 111
     to scan nested archive. External unpackers supported:
112 112
 <BR>
113 113
 <P>
114 114
 
115
-    <B>-unzip: </B> Usually you don't need this option because Zip format is
115
+    <SPAN  CLASS="textbf">-unzip: </SPAN> Usually you don't need this option because Zip format is
116 116
 	       supported by libclamav. However it may be useful if libclamav
117 117
 	       fails to unzip some file. clamscan was tested with
118
-	       <I>UnZip 5.41 of 16 April 2000, by Info-ZIP</I>.
119
-<BR>    <B>-unrar: </B> Tested with <I>UNRAR 3.00 freeware</I>.
120
-<BR>    <B>-arj: </B> Tested with <I>arj 3.10b</I>.
121
-<BR>    <B>-zoo: </B> Tested with <I>zoo 2.1</I>.
122
-<BR>    <B>-lha: </B> Tested with <I>LHa for Unix V 1.14e</I>.
123
-<BR>    <B>-jar: </B> clamscan uses <I>unzip</I> for .jar files. Tested with
124
-	     <I>UnZip 5.41 of 16 April 2000, by Info-ZIP</I>.
125
-<BR>    <B>-tar: </B> This option enables support for non-compressed archives. Tested
126
-	     with <I>GNU tar 1.13.17</I>.
127
-<BR>    <B>-deb: </B> This option enables support for debian binary packages. Tested with
128
-	     <I>GNU ar
118
+	       <SPAN  CLASS="textit">UnZip 5.41 of 16 April 2000, by Info-ZIP</SPAN>.
119
+<BR>    <SPAN  CLASS="textbf">-unrar: </SPAN> Tested with <SPAN  CLASS="textit">UNRAR 3.00 freeware</SPAN>.
120
+<BR>    <SPAN  CLASS="textbf">-arj: </SPAN> Tested with <SPAN  CLASS="textit">arj 3.10b</SPAN>.
121
+<BR>    <SPAN  CLASS="textbf">-zoo: </SPAN> Tested with <SPAN  CLASS="textit">zoo 2.1</SPAN>.
122
+<BR>    <SPAN  CLASS="textbf">-lha: </SPAN> Tested with <SPAN  CLASS="textit">LHa for Unix V 1.14e</SPAN>.
123
+<BR>    <SPAN  CLASS="textbf">-jar: </SPAN> clamscan uses <SPAN  CLASS="textit">unzip</SPAN> for .jar files. Tested with
124
+	     <SPAN  CLASS="textit">UnZip 5.41 of 16 April 2000, by Info-ZIP</SPAN>.
125
+<BR>    <SPAN  CLASS="textbf">-tar: </SPAN> This option enables support for non-compressed archives. Tested
126
+	     with <SPAN  CLASS="textit">GNU tar 1.13.17</SPAN>.
127
+<BR>    <SPAN  CLASS="textbf">-deb: </SPAN> This option enables support for debian binary packages. Tested with
128
+	     <SPAN  CLASS="textit">GNU ar
129 129
 <BR>
130
-2.12.90.0.14</I>. Implies -tgz , but doesn't
130
+2.12.90.0.14</SPAN>. Implies -tgz , but doesn't
131 131
 	     conflict with -tgz=FULLPATH
132
-<BR>    <B>-tgz: </B> This option supports .tar.gz and .tgz files. You need <I>GNU
133
-	     tar</I>, on non-Linux system you probably have it installed as
134
-	     <I>gtar</I> and if it can be found in <I>$PATH</I> please use
135
-	     -tgz=gtar to tell clamscan to use <I>gtar</I> instead of
136
-	     <I>tar</I>. Otherwise please supply a full path with -tgz
132
+<BR>    <SPAN  CLASS="textbf">-tgz: </SPAN> This option supports .tar.gz and .tgz files. You need <SPAN  CLASS="textit">GNU
133
+	     tar</SPAN>, on non-Linux system you probably have it installed as
134
+	     <SPAN  CLASS="textit">gtar</SPAN> and if it can be found in <SPAN  CLASS="textit">$PATH</SPAN> please use
135
+	     -tgz=gtar to tell clamscan to use <SPAN  CLASS="textit">gtar</SPAN> instead of
136
+	     <SPAN  CLASS="textit">tar</SPAN>. Otherwise please supply a full path with -tgz
137 137
 <BR>
138 138
 <P>
139
-<HR>
139
+
140
+<DIV CLASS="navigation"><HR>
140 141
 <!--Navigation Panel-->
141
-<A NAME="tex2html621"
142
+<A NAME="tex2html632"
142 143
   HREF="node23.html">
143 144
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
144 145
  SRC="/usr/share/latex2html/icons/next.png"></A> 
145
-<A NAME="tex2html617"
146
+<A NAME="tex2html628"
146 147
   HREF="node18.html">
147 148
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
148 149
  SRC="/usr/share/latex2html/icons/up.png"></A> 
149
-<A NAME="tex2html611"
150
+<A NAME="tex2html622"
150 151
   HREF="node21.html">
151 152
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
152 153
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
153
-<A NAME="tex2html619"
154
+<A NAME="tex2html630"
154 155
   HREF="node1.html">
155 156
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
156 157
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
157 158
 <BR>
158
-<B> Next:</B> <A NAME="tex2html622"
159
+<B> Next:</B> <A NAME="tex2html633"
159 160
   HREF="node23.html">Mail files</A>
160
-<B> Up:</B> <A NAME="tex2html618"
161
+<B> Up:</B> <A NAME="tex2html629"
161 162
   HREF="node18.html">Usage</A>
162
-<B> Previous:</B> <A NAME="tex2html612"
163
+<B> Previous:</B> <A NAME="tex2html623"
163 164
   HREF="node21.html">Clamuko</A>
164
- &nbsp <B>  <A NAME="tex2html620"
165
-  HREF="node1.html">Contents</A></B> 
165
+ &nbsp; <B>  <A NAME="tex2html631"
166
+  HREF="node1.html">Contents</A></B> </DIV>
166 167
 <!--End of Navigation Panel-->
167 168
 <ADDRESS>
168 169
 Tomasz Kojm
169
-2004-06-29
170
+2004-07-22
170 171
 </ADDRESS>
171 172
 </BODY>
172 173
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html633"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html644"
31 32
   HREF="node24.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html629"
35
+<A NAME="tex2html640"
35 36
   HREF="node18.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html623"
39
+<A NAME="tex2html634"
39 40
   HREF="node22.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html631"
43
+<A NAME="tex2html642"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html634"
48
+<B> Next:</B> <A NAME="tex2html645"
48 49
   HREF="node24.html">Output format</A>
49
-<B> Up:</B> <A NAME="tex2html630"
50
+<B> Up:</B> <A NAME="tex2html641"
50 51
   HREF="node18.html">Usage</A>
51
-<B> Previous:</B> <A NAME="tex2html624"
52
+<B> Previous:</B> <A NAME="tex2html635"
52 53
   HREF="node22.html">Archives and compressed files</A>
53
- &nbsp <B>  <A NAME="tex2html632"
54
+ &nbsp; <B>  <A NAME="tex2html643"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00045000000000000000">
... ...
@@ -72,7 +72,7 @@ Mail files</A>
72 72
 <BR><HR>
73 73
 <ADDRESS>
74 74
 Tomasz Kojm
75
-2004-06-29
75
+2004-07-22
76 76
 </ADDRESS>
77 77
 </BODY>
78 78
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,40 +25,41 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html645"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html656"
31 32
   HREF="node25.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html641"
35
+<A NAME="tex2html652"
35 36
   HREF="node18.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html635"
39
+<A NAME="tex2html646"
39 40
   HREF="node23.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html643"
43
+<A NAME="tex2html654"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html646"
48
+<B> Next:</B> <A NAME="tex2html657"
48 49
   HREF="node25.html">Signature Tool</A>
49
-<B> Up:</B> <A NAME="tex2html642"
50
+<B> Up:</B> <A NAME="tex2html653"
50 51
   HREF="node18.html">Usage</A>
51
-<B> Previous:</B> <A NAME="tex2html636"
52
+<B> Previous:</B> <A NAME="tex2html647"
52 53
   HREF="node23.html">Mail files</A>
53
- &nbsp <B>  <A NAME="tex2html644"
54
+ &nbsp; <B>  <A NAME="tex2html655"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00046000000000000000">
60 61
 Output format</A>
61 62
 </H2>
62
-    <I>clamd</I> uses a clamscan compatible output format:
63
+    <SPAN  CLASS="textit">clamd</SPAN> uses a clamscan compatible output format:
63 64
     <PRE>
64 65
 	zolw@Wierszokleta:~$ telnet localhost 3310
65 66
 	Trying 127.0.0.1...
... ...
@@ -69,14 +69,14 @@ Output format</A>
69 69
 	/home/zolw/infected/sobre.com: W32.Magistr.B FOUND
70 70
 	Connection closed by foreign host.
71 71
 </PRE>
72
-    In the <B>SCAN</B> mode it closes the connection when first virus
72
+    In the <SPAN  CLASS="textbf">SCAN</SPAN> mode it closes the connection when first virus
73 73
     is found. In the case of archives the output is exactly the same as
74 74
     with normal files because archive support is transparent:
75 75
     <PRE>
76 76
 	SCAN /home/zolw/Clam/test/test2.zip
77 77
 	/home/zolw/Clam/test/test2.zip: ClamAV-Test-Signature FOUND
78 78
 </PRE>
79
-    <B>CONTSCAN</B> displays all infected files found.
79
+    <SPAN  CLASS="textbf">CONTSCAN</SPAN> displays all infected files found.
80 80
 <BR>
81 81
 Error messages are printed in the following format:
82 82
     <PRE>
... ...
@@ -86,9 +86,9 @@ Error messages are printed in the following format:
86 86
     and they can be easily parsed.
87 87
 
88 88
 <P>
89
-<I>clamscan</I> writes all messages to <B>stderr</B> (only help is
90
-    written to <B>stdout</B> by default). You may want to redirect it to
91
-    <B>stdout</B> - this is handled with <code>--stdout</code>.  An example
89
+<SPAN  CLASS="textit">clamscan</SPAN> writes all messages to <SPAN  CLASS="textbf">stderr</SPAN> (only help is
90
+    written to <SPAN  CLASS="textbf">stdout</SPAN> by default). You may want to redirect it to
91
+    <SPAN  CLASS="textbf">stdout</SPAN> - this is handled with <code>--stdout</code>.  An example
92 92
     of the clamscan output is:
93 93
     <PRE>
94 94
 	/tmp/test/removal-tool.exe: Worm.Sober FOUND
... ...
@@ -107,37 +107,38 @@ Error messages are printed in the following format:
107 107
     whole archives as infected.
108 108
 
109 109
 <P>
110
-<HR>
110
+
111
+<DIV CLASS="navigation"><HR>
111 112
 <!--Navigation Panel-->
112
-<A NAME="tex2html645"
113
+<A NAME="tex2html656"
113 114
   HREF="node25.html">
114 115
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
115 116
  SRC="/usr/share/latex2html/icons/next.png"></A> 
116
-<A NAME="tex2html641"
117
+<A NAME="tex2html652"
117 118
   HREF="node18.html">
118 119
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
119 120
  SRC="/usr/share/latex2html/icons/up.png"></A> 
120
-<A NAME="tex2html635"
121
+<A NAME="tex2html646"
121 122
   HREF="node23.html">
122 123
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
123 124
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
124
-<A NAME="tex2html643"
125
+<A NAME="tex2html654"
125 126
   HREF="node1.html">
126 127
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
127 128
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
128 129
 <BR>
129
-<B> Next:</B> <A NAME="tex2html646"
130
+<B> Next:</B> <A NAME="tex2html657"
130 131
   HREF="node25.html">Signature Tool</A>
131
-<B> Up:</B> <A NAME="tex2html642"
132
+<B> Up:</B> <A NAME="tex2html653"
132 133
   HREF="node18.html">Usage</A>
133
-<B> Previous:</B> <A NAME="tex2html636"
134
+<B> Previous:</B> <A NAME="tex2html647"
134 135
   HREF="node23.html">Mail files</A>
135
- &nbsp <B>  <A NAME="tex2html644"
136
-  HREF="node1.html">Contents</A></B> 
136
+ &nbsp; <B>  <A NAME="tex2html655"
137
+  HREF="node1.html">Contents</A></B> </DIV>
137 138
 <!--End of Navigation Panel-->
138 139
 <ADDRESS>
139 140
 Tomasz Kojm
140
-2004-06-29
141
+2004-07-22
141 142
 </ADDRESS>
142 143
 </BODY>
143 144
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -25,49 +24,52 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
25 25
 </HEAD>
26 26
 
27 27
 <BODY >
28
-<!--Navigation Panel-->
29
-<A NAME="tex2html655"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html666"
30 31
   HREF="node26.html">
31 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
33
-<A NAME="tex2html651"
34
+<A NAME="tex2html662"
34 35
   HREF="node18.html">
35 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
37
-<A NAME="tex2html647"
38
+<A NAME="tex2html658"
38 39
   HREF="node24.html">
39 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
-<A NAME="tex2html653"
42
+<A NAME="tex2html664"
42 43
   HREF="node1.html">
43 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
45 46
 <BR>
46
-<B> Next:</B> <A NAME="tex2html656"
47
+<B> Next:</B> <A NAME="tex2html667"
47 48
   HREF="node26.html">Problem solving</A>
48
-<B> Up:</B> <A NAME="tex2html652"
49
+<B> Up:</B> <A NAME="tex2html663"
49 50
   HREF="node18.html">Usage</A>
50
-<B> Previous:</B> <A NAME="tex2html648"
51
+<B> Previous:</B> <A NAME="tex2html659"
51 52
   HREF="node24.html">Output format</A>
52
- &nbsp <B>  <A NAME="tex2html654"
53
+ &nbsp; <B>  <A NAME="tex2html665"
53 54
   HREF="node1.html">Contents</A></B> 
54 55
 <BR>
55
-<BR>
56
+<BR></DIV>
56 57
 <!--End of Navigation Panel-->
57 58
 
58 59
 <H2><A NAME="SECTION00047000000000000000">
59 60
 Signature Tool</A>
60 61
 </H2>
61
-    <I>sigtool</I> automates signature creation. If you have got an infected
62
-    file not recognized by ClamAV and there is an another anti-virus scanner
63
-    working in a console that detects the virus you can try to generate
64
-    the signature automatically. <A NAME="tex2html79"
65
-  HREF="footnode.html#foot465"><SUP>6</SUP></A> <I>Sigtool is only
66
-    partially useful because it only detects the last part of a real
67
-    signature. It will fail for multipart signatures (and especially for
68
-    polymorphic viruses).</I>
69
-    Example usage: create a random file (with any content) and insert the
70
-    <code>test/test1</code> file content into it. We will use <I>clamscan</I>
62
+    If you have got an infected file not recognized by ClamAV please first
63
+    report it on our page. In some cases you may want to create a temporary,
64
+    private signature - you can try to use sigtool which can use third party
65
+    software to create a signature but <SPAN  CLASS="textbf">you have to make sure your
66
+    commercial scanner's license does not disallow sigtool usage !</SPAN>
67
+    <A NAME="tex2html80"
68
+  HREF="footnode.html#foot468"><SUP><SPAN CLASS="arabic">6</SPAN></SUP></A>. The tool is only partially useful because it only detects
69
+    the last part of real signature. It will fail for multipart signatures
70
+    (which are often used to detect mutating viruses).
71
+<BR>
72
+Example usage: create a random file (with any content) and insert the
73
+    <code>test/test1</code> file content into it. We will use <SPAN  CLASS="textit">clamscan</SPAN>
71 74
     to generate the signature. Remember this is only an example - in a real
72 75
     life you don't need such tricks - just an infected file. Scan it with
73 76
     <code>clamscan --stdout testfile</code> - the output should be:
... ...
@@ -84,13 +86,13 @@ Signature Tool</A>
84 84
 	Time: 1.245 sec (0 m 0 s)
85 85
 </PRE>
86 86
     The unique string in this output is "ClamAV-Test-Signature" so run
87
-    <I>sigtool</I> with the following arguments:
87
+    <SPAN  CLASS="textit">sigtool</SPAN> with the following arguments:
88 88
     <PRE>
89 89
 	$ sigtool -c "clamscan --stdout" -f testfile -s "ClamAV-Test"
90 90
 </PRE>
91 91
     The program will concatenate arguments for <code>-c (--command)</code> and
92 92
     <code>-f (--file)</code> that's why the scanner's options must be given in the
93
-    proper order. At the end it will generate a file called <I>testfile.sig</I>,
93
+    proper order. At the end it will generate a file called <SPAN  CLASS="textit">testfile.sig</SPAN>,
94 94
     which should be 100 bytes in size (in our example). It contains the proper
95 95
     signature.
96 96
     <PRE>
... ...
@@ -144,42 +146,43 @@ Signature Tool</A>
144 144
     To make the generated signature complete you only to add the
145 145
     <code>VirusName=</code> string at the beginning of the hexadecimal signature in
146 146
     testfile.sig.
147
-<BR>    <I><B>TIP:</B> ClamAV scanners read all .db files in the database
147
+<BR>    <SPAN  CLASS="textit"><SPAN  CLASS="textbf">TIP:</SPAN> ClamAV scanners read all .db files in the database
148 148
     directory. You can create your own database files (e.g. local.db) and they
149
-    won't be modified by freshclam !</I>
149
+    won't be modified by freshclam !</SPAN>
150 150
 
151 151
 <P>
152
-<HR>
152
+
153
+<DIV CLASS="navigation"><HR>
153 154
 <!--Navigation Panel-->
154
-<A NAME="tex2html655"
155
+<A NAME="tex2html666"
155 156
   HREF="node26.html">
156 157
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
157 158
  SRC="/usr/share/latex2html/icons/next.png"></A> 
158
-<A NAME="tex2html651"
159
+<A NAME="tex2html662"
159 160
   HREF="node18.html">
160 161
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
161 162
  SRC="/usr/share/latex2html/icons/up.png"></A> 
162
-<A NAME="tex2html647"
163
+<A NAME="tex2html658"
163 164
   HREF="node24.html">
164 165
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
165 166
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
166
-<A NAME="tex2html653"
167
+<A NAME="tex2html664"
167 168
   HREF="node1.html">
168 169
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
169 170
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
170 171
 <BR>
171
-<B> Next:</B> <A NAME="tex2html656"
172
+<B> Next:</B> <A NAME="tex2html667"
172 173
   HREF="node26.html">Problem solving</A>
173
-<B> Up:</B> <A NAME="tex2html652"
174
+<B> Up:</B> <A NAME="tex2html663"
174 175
   HREF="node18.html">Usage</A>
175
-<B> Previous:</B> <A NAME="tex2html648"
176
+<B> Previous:</B> <A NAME="tex2html659"
176 177
   HREF="node24.html">Output format</A>
177
- &nbsp <B>  <A NAME="tex2html654"
178
-  HREF="node1.html">Contents</A></B> 
178
+ &nbsp; <B>  <A NAME="tex2html665"
179
+  HREF="node1.html">Contents</A></B> </DIV>
179 180
 <!--End of Navigation Panel-->
180 181
 <ADDRESS>
181 182
 Tomasz Kojm
182
-2004-06-29
183
+2004-07-22
183 184
 </ADDRESS>
184 185
 </BODY>
185 186
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html667"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html678"
31 32
   HREF="node27.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html663"
35
+<A NAME="tex2html674"
35 36
   HREF="clamdoc.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html657"
39
+<A NAME="tex2html668"
39 40
   HREF="node25.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html665"
43
+<A NAME="tex2html676"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html668"
48
+<B> Next:</B> <A NAME="tex2html679"
48 49
   HREF="node27.html">Return codes</A>
49
-<B> Up:</B> <A NAME="tex2html664"
50
+<B> Up:</B> <A NAME="tex2html675"
50 51
   HREF="clamdoc.html">clamdoc</A>
51
-<B> Previous:</B> <A NAME="tex2html658"
52
+<B> Previous:</B> <A NAME="tex2html669"
52 53
   HREF="node25.html">Signature Tool</A>
53
- &nbsp <B>  <A NAME="tex2html666"
54
+ &nbsp; <B>  <A NAME="tex2html677"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H1><A NAME="SECTION00050000000000000000">
... ...
@@ -65,15 +65,15 @@ Problem solving</A>
65 65
 <!--Table of Child-Links-->
66 66
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
67 67
 
68
-<UL>
69
-<LI><A NAME="tex2html669"
68
+<UL CLASS="ChildLinks">
69
+<LI><A NAME="tex2html680"
70 70
   HREF="node27.html">Return codes</A>
71 71
 </UL>
72 72
 <!--End of Table of Child-Links-->
73 73
 <BR><HR>
74 74
 <ADDRESS>
75 75
 Tomasz Kojm
76
-2004-06-29
76
+2004-07-22
77 77
 </ADDRESS>
78 78
 </BODY>
79 79
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -25,114 +24,116 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
25 25
 </HEAD>
26 26
 
27 27
 <BODY >
28
-<!--Navigation Panel-->
29
-<A NAME="tex2html678"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html689"
30 31
   HREF="node28.html">
31 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
33
-<A NAME="tex2html674"
34
+<A NAME="tex2html685"
34 35
   HREF="node26.html">
35 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
37
-<A NAME="tex2html670"
38
+<A NAME="tex2html681"
38 39
   HREF="node26.html">
39 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
-<A NAME="tex2html676"
42
+<A NAME="tex2html687"
42 43
   HREF="node1.html">
43 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
45 46
 <BR>
46
-<B> Next:</B> <A NAME="tex2html679"
47
+<B> Next:</B> <A NAME="tex2html690"
47 48
   HREF="node28.html">Third party software</A>
48
-<B> Up:</B> <A NAME="tex2html675"
49
+<B> Up:</B> <A NAME="tex2html686"
49 50
   HREF="node26.html">Problem solving</A>
50
-<B> Previous:</B> <A NAME="tex2html671"
51
+<B> Previous:</B> <A NAME="tex2html682"
51 52
   HREF="node26.html">Problem solving</A>
52
- &nbsp <B>  <A NAME="tex2html677"
53
+ &nbsp; <B>  <A NAME="tex2html688"
53 54
   HREF="node1.html">Contents</A></B> 
54 55
 <BR>
55
-<BR>
56
+<BR></DIV>
56 57
 <!--End of Navigation Panel-->
57 58
 
58 59
 <H2><A NAME="SECTION00051000000000000000">
59 60
 Return codes</A>
60 61
 </H2>
61 62
     Return codes are very useful in system scripts. You can check the return
62
-    code from <I>clamscan</I> by running:
63
+    code from <SPAN  CLASS="textit">clamscan</SPAN> by running:
63 64
     <PRE>
64 65
 	$ clamscan; echo Return code: $?
65 66
 </PRE>
66
-    Here is the full list of return codes for <I>clamscan</I>:
67
+    Here is the full list of return codes for <SPAN  CLASS="textit">clamscan</SPAN>:
67 68
 <BR>
68 69
 <P>
69 70
 
70
-    <B>0: </B> No virus was found.
71
-<BR>    <B>1: </B> Virus(es) detected.
72
-<BR>    <B>40: </B> Unknown option passed to <I>clamscan</I>. Please check
71
+    <SPAN  CLASS="textbf">0: </SPAN> No virus was found.
72
+<BR>    <SPAN  CLASS="textbf">1: </SPAN> Virus(es) detected.
73
+<BR>    <SPAN  CLASS="textbf">40: </SPAN> Unknown option passed to <SPAN  CLASS="textit">clamscan</SPAN>. Please check
73 74
 	    clamscan -help or manual page for available options.
74
-<BR>    <B>50: </B> Virus database initialization error. Probably it doesn't exist
75
+<BR>    <SPAN  CLASS="textbf">50: </SPAN> Virus database initialization error. Probably it doesn't exist
75 76
 	    at the default location or it's malformed (e.g. broken digital
76 77
 	    signature)
77
-<BR>    <B>52: </B> Not supported file type - clamscan only supports regular files,
78
+<BR>    <SPAN  CLASS="textbf">52: </SPAN> Not supported file type - clamscan only supports regular files,
78 79
 	    directories and symlinks.
79
-<BR>    <B>53: </B> Can't open directory.
80
-<BR>    <B>54: </B> Can't open file.<IMG
81
- WIDTH="13" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
80
+<BR>    <SPAN  CLASS="textbf">53: </SPAN> Can't open directory.
81
+<BR>    <SPAN  CLASS="textbf">54: </SPAN> Can't open file.<SPAN CLASS="MATH"><IMG
82
+ WIDTH="13" HEIGHT="22" ALIGN="BOTTOM" BORDER="0"
82 83
  SRC="img5.png"
83
- ALT="$^7$">
84
-<BR>    <B>55: </B> I/O error during read.
85
-	    <A NAME="tex2html80"
86
-  HREF="footnode.html#foot1107"><SUP>7</SUP></A>
87
-<BR>    <B>56: </B> Can't stat input file or directory. File (or directory) you want to
84
+ ALT="$^7$"></SPAN>
85
+<BR>    <SPAN  CLASS="textbf">55: </SPAN> I/O error during read.
86
+	    <A NAME="tex2html81"
87
+  HREF="footnode.html#foot1124"><SUP><SPAN CLASS="arabic">7</SPAN></SUP></A>
88
+<BR>    <SPAN  CLASS="textbf">56: </SPAN> Can't stat input file or directory. File (or directory) you want to
88 89
 	    scan doesn't exist.
89
-<BR>    <B>57: </B> Can't get absolute pathname of current working directory. Your
90
+<BR>    <SPAN  CLASS="textbf">57: </SPAN> Can't get absolute pathname of current working directory. Your
90 91
 	    current pathname is longer then 200 characters. This is bad and
91 92
 	    you may need to recompile ClamAV to fix it.
92
-<BR>    <B>58: </B> I/O error. Please check the filesystem.
93
-<BR>    <B>59: </B> Can't get information about current user (running clamscan).
94
-<BR>    <B>60: </B> Can't get information about user <I>clamav</I>. User <I>clamav</I>
93
+<BR>    <SPAN  CLASS="textbf">58: </SPAN> I/O error. Please check the filesystem.
94
+<BR>    <SPAN  CLASS="textbf">59: </SPAN> Can't get information about current user (running clamscan).
95
+<BR>    <SPAN  CLASS="textbf">60: </SPAN> Can't get information about user <SPAN  CLASS="textit">clamav</SPAN>. User <SPAN  CLASS="textit">clamav</SPAN>
95 96
 	    (default unprivileged user) doesn't exist in /etc/passwd.
96
-<BR>    <B>61: </B> Can't fork. Can't create new process, please check your system limits.
97
-<BR>    <B>63: </B> Can't create temporary file or directory. Please check /tmp
97
+<BR>    <SPAN  CLASS="textbf">61: </SPAN> Can't fork. Can't create new process, please check your system limits.
98
+<BR>    <SPAN  CLASS="textbf">63: </SPAN> Can't create temporary file or directory. Please check /tmp
98 99
 	    permissions or use -tempdir
99
-<BR>    <B>64: </B> Can't write to temporary directory. Please specify another one.
100
-<BR>    <B>70: </B> Can't allocate and clear memory. This is a critical error, please
100
+<BR>    <SPAN  CLASS="textbf">64: </SPAN> Can't write to temporary directory. Please specify another one.
101
+<BR>    <SPAN  CLASS="textbf">70: </SPAN> Can't allocate and clear memory. This is a critical error, please
101 102
 	    check your system.
102
-<BR>    <B>71: </B> Can't allocate memory. Look above.
103
+<BR>    <SPAN  CLASS="textbf">71: </SPAN> Can't allocate memory. Look above.
103 104
 <BR>
104 105
 <P>
105
-<HR>
106
+
107
+<DIV CLASS="navigation"><HR>
106 108
 <!--Navigation Panel-->
107
-<A NAME="tex2html678"
109
+<A NAME="tex2html689"
108 110
   HREF="node28.html">
109 111
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
110 112
  SRC="/usr/share/latex2html/icons/next.png"></A> 
111
-<A NAME="tex2html674"
113
+<A NAME="tex2html685"
112 114
   HREF="node26.html">
113 115
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
114 116
  SRC="/usr/share/latex2html/icons/up.png"></A> 
115
-<A NAME="tex2html670"
117
+<A NAME="tex2html681"
116 118
   HREF="node26.html">
117 119
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
118 120
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
119
-<A NAME="tex2html676"
121
+<A NAME="tex2html687"
120 122
   HREF="node1.html">
121 123
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
122 124
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
123 125
 <BR>
124
-<B> Next:</B> <A NAME="tex2html679"
126
+<B> Next:</B> <A NAME="tex2html690"
125 127
   HREF="node28.html">Third party software</A>
126
-<B> Up:</B> <A NAME="tex2html675"
128
+<B> Up:</B> <A NAME="tex2html686"
127 129
   HREF="node26.html">Problem solving</A>
128
-<B> Previous:</B> <A NAME="tex2html671"
130
+<B> Previous:</B> <A NAME="tex2html682"
129 131
   HREF="node26.html">Problem solving</A>
130
- &nbsp <B>  <A NAME="tex2html677"
131
-  HREF="node1.html">Contents</A></B> 
132
+ &nbsp; <B>  <A NAME="tex2html688"
133
+  HREF="node1.html">Contents</A></B> </DIV>
132 134
 <!--End of Navigation Panel-->
133 135
 <ADDRESS>
134 136
 Tomasz Kojm
135
-2004-06-29
137
+2004-07-22
136 138
 </ADDRESS>
137 139
 </BODY>
138 140
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,47 +13,47 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22
-<LINK REL="next" HREF="node74.html">
21
+<LINK REL="next" HREF="node77.html">
23 22
 <LINK REL="previous" HREF="node26.html">
24 23
 <LINK REL="up" HREF="clamdoc.html">
25 24
 <LINK REL="next" HREF="node29.html">
26 25
 </HEAD>
27 26
 
28 27
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html690"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html701"
31 31
   HREF="node29.html">
32 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html686"
34
+<A NAME="tex2html697"
35 35
   HREF="clamdoc.html">
36 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html680"
38
+<A NAME="tex2html691"
39 39
   HREF="node27.html">
40 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html688"
42
+<A NAME="tex2html699"
43 43
   HREF="node1.html">
44 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 46
 <BR>
47
-<B> Next:</B> <A NAME="tex2html691"
47
+<B> Next:</B> <A NAME="tex2html702"
48 48
   HREF="node29.html">clamav-milter</A>
49
-<B> Up:</B> <A NAME="tex2html687"
49
+<B> Up:</B> <A NAME="tex2html698"
50 50
   HREF="clamdoc.html">clamdoc</A>
51
-<B> Previous:</B> <A NAME="tex2html681"
51
+<B> Previous:</B> <A NAME="tex2html692"
52 52
   HREF="node27.html">Return codes</A>
53
- &nbsp <B>  <A NAME="tex2html689"
53
+ &nbsp; <B>  <A NAME="tex2html700"
54 54
   HREF="node1.html">Contents</A></B> 
55 55
 <BR>
56
-<BR>
56
+<BR></DIV>
57 57
 <!--End of Navigation Panel-->
58 58
 
59 59
 <H1><A NAME="SECTION00060000000000000000">
... ...
@@ -67,103 +67,109 @@ Third party software</A>
67 67
 <!--Table of Child-Links-->
68 68
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
69 69
 
70
-<UL>
71
-<LI><A NAME="tex2html692"
72
-  HREF="node29.html">clamav-milter</A>
73
-<LI><A NAME="tex2html693"
74
-  HREF="node30.html">IVS Milter</A>
75
-<LI><A NAME="tex2html694"
76
-  HREF="node31.html">smtp-vilter</A>
77
-<LI><A NAME="tex2html695"
78
-  HREF="node32.html">mod_clamav</A>
79
-<LI><A NAME="tex2html696"
80
-  HREF="node33.html">AMaViS - "Next Generation"</A>
81
-<LI><A NAME="tex2html697"
82
-  HREF="node34.html">amavisd-new</A>
83
-<LI><A NAME="tex2html698"
84
-  HREF="node35.html">Qmail-Scanner</A>
85
-<LI><A NAME="tex2html699"
86
-  HREF="node36.html">Sagator</A>
87
-<LI><A NAME="tex2html700"
88
-  HREF="node37.html">ClamdMail</A>
89
-<LI><A NAME="tex2html701"
90
-  HREF="node38.html">BlackHole</A>
91
-<LI><A NAME="tex2html702"
92
-  HREF="node39.html">MailScanner</A>
70
+<UL CLASS="ChildLinks">
93 71
 <LI><A NAME="tex2html703"
94
-  HREF="node40.html">MIMEDefang</A>
72
+  HREF="node29.html">clamav-milter</A>
95 73
 <LI><A NAME="tex2html704"
96
-  HREF="node41.html">exiscan</A>
74
+  HREF="node30.html">IVS Milter</A>
97 75
 <LI><A NAME="tex2html705"
98
-  HREF="node42.html">scanexi</A>
76
+  HREF="node31.html">smtp-vilter</A>
99 77
 <LI><A NAME="tex2html706"
100
-  HREF="node43.html">Mail::ClamAV</A>
78
+  HREF="node32.html">mod_clamav</A>
101 79
 <LI><A NAME="tex2html707"
102
-  HREF="node44.html">OpenAntiVirus samba-vscan</A>
80
+  HREF="node33.html">AMaViS - "Next Generation"</A>
103 81
 <LI><A NAME="tex2html708"
104
-  HREF="node45.html">Sylpheed Claws</A>
82
+  HREF="node34.html">amavisd-new</A>
105 83
 <LI><A NAME="tex2html709"
106
-  HREF="node46.html">nclamd</A>
84
+  HREF="node35.html">Qmail-Scanner</A>
107 85
 <LI><A NAME="tex2html710"
108
-  HREF="node47.html">cgpav</A>
86
+  HREF="node36.html">Sagator</A>
109 87
 <LI><A NAME="tex2html711"
110
-  HREF="node48.html">j-chkmail</A>
88
+  HREF="node37.html">ClamdMail</A>
111 89
 <LI><A NAME="tex2html712"
112
-  HREF="node49.html">qscanq</A>
90
+  HREF="node38.html">BlackHole</A>
113 91
 <LI><A NAME="tex2html713"
114
-  HREF="node50.html">clamavr</A>
92
+  HREF="node39.html">MailScanner</A>
115 93
 <LI><A NAME="tex2html714"
116
-  HREF="node51.html">pyclamav</A>
94
+  HREF="node40.html">MIMEDefang</A>
117 95
 <LI><A NAME="tex2html715"
118
-  HREF="node52.html">DansGuardian Anti-Virus Plugin</A>
96
+  HREF="node41.html">exiscan</A>
119 97
 <LI><A NAME="tex2html716"
120
-  HREF="node53.html">Viralator</A>
98
+  HREF="node42.html">scanexi</A>
121 99
 <LI><A NAME="tex2html717"
122
-  HREF="node54.html">ClamAssassin</A>
100
+  HREF="node43.html">Mail::ClamAV</A>
123 101
 <LI><A NAME="tex2html718"
124
-  HREF="node55.html">clamscan-procfilter</A>
102
+  HREF="node44.html">File::Scan::ClamAV</A>
125 103
 <LI><A NAME="tex2html719"
126
-  HREF="node56.html">MyClamMailFilter</A>
104
+  HREF="node45.html">OpenAntiVirus samba-vscan</A>
127 105
 <LI><A NAME="tex2html720"
128
-  HREF="node57.html">Gadoyanvirus</A>
106
+  HREF="node46.html">Sylpheed Claws</A>
129 107
 <LI><A NAME="tex2html721"
130
-  HREF="node58.html">OpenProtect</A>
108
+  HREF="node47.html">nclamd</A>
131 109
 <LI><A NAME="tex2html722"
132
-  HREF="node59.html">RevolSys SMTP kit for Postfix</A>
110
+  HREF="node48.html">cgpav</A>
133 111
 <LI><A NAME="tex2html723"
134
-  HREF="node60.html">POP3 Virus Scanner Daemon</A>
112
+  HREF="node49.html">j-chkmail</A>
135 113
 <LI><A NAME="tex2html724"
136
-  HREF="node61.html">mailman-clamav</A>
114
+  HREF="node50.html">qscanq</A>
137 115
 <LI><A NAME="tex2html725"
138
-  HREF="node62.html">wbmclamav</A>
116
+  HREF="node51.html">clamavr</A>
139 117
 <LI><A NAME="tex2html726"
140
-  HREF="node63.html">Scan Log Analyzer</A>
118
+  HREF="node52.html">pyclamav</A>
141 119
 <LI><A NAME="tex2html727"
142
-  HREF="node64.html">mailgraph</A>
120
+  HREF="node53.html">DansGuardian Anti-Virus Plugin</A>
143 121
 <LI><A NAME="tex2html728"
144
-  HREF="node65.html">INSERT</A>
122
+  HREF="node54.html">Viralator</A>
145 123
 <LI><A NAME="tex2html729"
146
-  HREF="node66.html">Local Area Security</A>
124
+  HREF="node55.html">ClamAssassin</A>
147 125
 <LI><A NAME="tex2html730"
148
-  HREF="node67.html">ClamWin</A>
126
+  HREF="node56.html">clamscan-procfilter</A>
149 127
 <LI><A NAME="tex2html731"
150
-  HREF="node68.html">KlamAV</A>
128
+  HREF="node57.html">MyClamMailFilter</A>
151 129
 <LI><A NAME="tex2html732"
152
-  HREF="node69.html">Clamaktion</A>
130
+  HREF="node58.html">Gadoyanvirus</A>
153 131
 <LI><A NAME="tex2html733"
154
-  HREF="node70.html">QMVC - Qmail Mail and Virus Control</A>
132
+  HREF="node59.html">OpenProtect</A>
155 133
 <LI><A NAME="tex2html734"
156
-  HREF="node71.html">FETCAV</A>
134
+  HREF="node60.html">RevolSys SMTP kit for Postfix</A>
157 135
 <LI><A NAME="tex2html735"
158
-  HREF="node72.html">Famuko</A>
136
+  HREF="node61.html">POP3 Virus Scanner Daemon</A>
159 137
 <LI><A NAME="tex2html736"
160
-  HREF="node73.html">SoftlabsAV</A>
138
+  HREF="node62.html">mailman-clamav</A>
139
+<LI><A NAME="tex2html737"
140
+  HREF="node63.html">wbmclamav</A>
141
+<LI><A NAME="tex2html738"
142
+  HREF="node64.html">Scan Log Analyzer</A>
143
+<LI><A NAME="tex2html739"
144
+  HREF="node65.html">mailgraph</A>
145
+<LI><A NAME="tex2html740"
146
+  HREF="node66.html">INSERT</A>
147
+<LI><A NAME="tex2html741"
148
+  HREF="node67.html">Local Area Security</A>
149
+<LI><A NAME="tex2html742"
150
+  HREF="node68.html">redWall Firewall</A>
151
+<LI><A NAME="tex2html743"
152
+  HREF="node69.html">ClamWin</A>
153
+<LI><A NAME="tex2html744"
154
+  HREF="node70.html">KlamAV</A>
155
+<LI><A NAME="tex2html745"
156
+  HREF="node71.html">Clamaktion</A>
157
+<LI><A NAME="tex2html746"
158
+  HREF="node72.html">QMVC - Qmail Mail and Virus Control</A>
159
+<LI><A NAME="tex2html747"
160
+  HREF="node73.html">FETCAV</A>
161
+<LI><A NAME="tex2html748"
162
+  HREF="node74.html">Famuko</A>
163
+<LI><A NAME="tex2html749"
164
+  HREF="node75.html">SoftlabsAV</A>
165
+<LI><A NAME="tex2html750"
166
+  HREF="node76.html">OdeiaVir</A>
161 167
 </UL>
162 168
 <!--End of Table of Child-Links-->
163 169
 <BR><HR>
164 170
 <ADDRESS>
165 171
 Tomasz Kojm
166
-2004-06-29
172
+2004-07-22
167 173
 </ADDRESS>
168 174
 </BODY>
169 175
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,46 +25,47 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html747"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html761"
31 32
   HREF="node30.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html743"
35
+<A NAME="tex2html757"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html737"
39
+<A NAME="tex2html751"
39 40
   HREF="node28.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html745"
43
+<A NAME="tex2html759"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html748"
48
+<B> Next:</B> <A NAME="tex2html762"
48 49
   HREF="node30.html">IVS Milter</A>
49
-<B> Up:</B> <A NAME="tex2html744"
50
+<B> Up:</B> <A NAME="tex2html758"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html738"
52
+<B> Previous:</B> <A NAME="tex2html752"
52 53
   HREF="node28.html">Third party software</A>
53
- &nbsp <B>  <A NAME="tex2html746"
54
+ &nbsp; <B>  <A NAME="tex2html760"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00061000000000000000">
60 61
 clamav-milter</A>
61 62
 </H2>
62
-    <B>Homepage:</B> part of the ClamAV package
63
-<BR>    <B>Supports:</B> clamd
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> part of the ClamAV package
64
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd
64 65
 <BR>
65 66
 Nigel Horne's clamav-milter is a very fast email scanner designed for
66 67
     sendmail. It's written entirely in C and uses ClamAV's internal mail
67 68
     scanner (also written by Nigel).
68
-<BR>    <B>Installation:</B>
69
+<BR>    <SPAN  CLASS="textbf">Installation:</SPAN>
69 70
 <BR>
70 71
 You need libmilter development files. Configure ClamAV with
71 72
     <PRE>
... ...
@@ -95,7 +95,7 @@ define(`confINPUT_MAIL_FILTERS', `clmilter')
95 95
 <BR><HR>
96 96
 <ADDRESS>
97 97
 Tomasz Kojm
98
-2004-06-29
98
+2004-07-22
99 99
 </ADDRESS>
100 100
 </BODY>
101 101
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html379"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html390"
31 32
   HREF="node4.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html375"
35
+<A NAME="tex2html386"
35 36
   HREF="node2.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html369"
39
+<A NAME="tex2html380"
39 40
   HREF="node2.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html377"
43
+<A NAME="tex2html388"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html380"
48
+<B> Next:</B> <A NAME="tex2html391"
48 49
   HREF="node4.html">Mailing lists</A>
49
-<B> Up:</B> <A NAME="tex2html376"
50
+<B> Up:</B> <A NAME="tex2html387"
50 51
   HREF="node2.html">Introduction</A>
51
-<B> Previous:</B> <A NAME="tex2html370"
52
+<B> Previous:</B> <A NAME="tex2html381"
52 53
   HREF="node2.html">Introduction</A>
53
- &nbsp <B>  <A NAME="tex2html378"
54
+ &nbsp; <B>  <A NAME="tex2html389"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00021000000000000000">
... ...
@@ -92,7 +92,7 @@ Features</A>
92 92
 <BR><HR>
93 93
 <ADDRESS>
94 94
 Tomasz Kojm
95
-2004-06-29
95
+2004-07-22
96 96
 </ADDRESS>
97 97
 </BODY>
98 98
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html759"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html773"
31 32
   HREF="node31.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html755"
35
+<A NAME="tex2html769"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html749"
39
+<A NAME="tex2html763"
39 40
   HREF="node29.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html757"
43
+<A NAME="tex2html771"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html760"
48
+<B> Next:</B> <A NAME="tex2html774"
48 49
   HREF="node31.html">smtp-vilter</A>
49
-<B> Up:</B> <A NAME="tex2html756"
50
+<B> Up:</B> <A NAME="tex2html770"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html750"
52
+<B> Previous:</B> <A NAME="tex2html764"
52 53
   HREF="node29.html">clamav-milter</A>
53
- &nbsp <B>  <A NAME="tex2html758"
54
+ &nbsp; <B>  <A NAME="tex2html772"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00062000000000000000">
60 61
 IVS Milter</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html81"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html82"
63 64
   HREF="http://ivs-milter.lbsd.net">http://ivs-milter.lbsd.net</A></TT>
64
-<BR>    <B>Supports:</B> clamd
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd
65 66
 <BR>
66 67
 IVS Milter is a virus and spam scanning milter. The name stands for
67 68
     Industrial Virus + Spam milter. It's designed to be used by anything
... ...
@@ -71,7 +71,7 @@ IVS Milter is a virus and spam scanning milter. The name stands for
71 71
 <BR><HR>
72 72
 <ADDRESS>
73 73
 Tomasz Kojm
74
-2004-06-29
74
+2004-07-22
75 75
 </ADDRESS>
76 76
 </BODY>
77 77
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html771"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html785"
31 32
   HREF="node32.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html767"
35
+<A NAME="tex2html781"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html761"
39
+<A NAME="tex2html775"
39 40
   HREF="node30.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html769"
43
+<A NAME="tex2html783"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html772"
48
+<B> Next:</B> <A NAME="tex2html786"
48 49
   HREF="node32.html">mod_clamav</A>
49
-<B> Up:</B> <A NAME="tex2html768"
50
+<B> Up:</B> <A NAME="tex2html782"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html762"
52
+<B> Previous:</B> <A NAME="tex2html776"
52 53
   HREF="node30.html">IVS Milter</A>
53
- &nbsp <B>  <A NAME="tex2html770"
54
+ &nbsp; <B>  <A NAME="tex2html784"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00063000000000000000">
60 61
 smtp-vilter</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html82"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html83"
63 64
   HREF="http://www.etc.msys.ch/software/smtp-vilter">http://www.etc.msys.ch/software/smtp-vilter</A></TT>
64
-<BR>    <B>Supports:</B> clamd
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd
65 66
 <BR>
66 67
 smtp-vilter is a high performance content filter for sendmail
67 68
     using the milter API.  The software scans e-mail messages for
... ...
@@ -72,7 +72,7 @@ smtp-vilter is a high performance content filter for sendmail
72 72
 <BR><HR>
73 73
 <ADDRESS>
74 74
 Tomasz Kojm
75
-2004-06-29
75
+2004-07-22
76 76
 </ADDRESS>
77 77
 </BODY>
78 78
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html783"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html797"
31 32
   HREF="node33.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html779"
35
+<A NAME="tex2html793"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html773"
39
+<A NAME="tex2html787"
39 40
   HREF="node31.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html781"
43
+<A NAME="tex2html795"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html784"
48
+<B> Next:</B> <A NAME="tex2html798"
48 49
   HREF="node33.html">AMaViS - "Next Generation"</A>
49
-<B> Up:</B> <A NAME="tex2html780"
50
+<B> Up:</B> <A NAME="tex2html794"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html774"
52
+<B> Previous:</B> <A NAME="tex2html788"
52 53
   HREF="node31.html">smtp-vilter</A>
53
- &nbsp <B>  <A NAME="tex2html782"
54
+ &nbsp; <B>  <A NAME="tex2html796"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00064000000000000000">
60 61
 mod_clamav</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html83"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html84"
63 64
   HREF="http://software.othello.ch/mod_clamav">http://software.othello.ch/mod_clamav</A></TT>
64
-<BR>    <B>Supports:</B> libclamav, clamd
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> libclamav, clamd
65 66
 <BR>
66 67
 mod_clamav is an Apache virus scanning filter. It was written
67 68
     and is currently maintained by Andreas Muller. The project is very well
... ...
@@ -71,7 +71,7 @@ mod_clamav is an Apache virus scanning filter. It was written
71 71
 <BR><HR>
72 72
 <ADDRESS>
73 73
 Tomasz Kojm
74
-2004-06-29
74
+2004-07-22
75 75
 </ADDRESS>
76 76
 </BODY>
77 77
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,46 +25,47 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html795"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html809"
31 32
   HREF="node34.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html791"
35
+<A NAME="tex2html805"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html785"
39
+<A NAME="tex2html799"
39 40
   HREF="node32.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html793"
43
+<A NAME="tex2html807"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html796"
48
+<B> Next:</B> <A NAME="tex2html810"
48 49
   HREF="node34.html">amavisd-new</A>
49
-<B> Up:</B> <A NAME="tex2html792"
50
+<B> Up:</B> <A NAME="tex2html806"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html786"
52
+<B> Previous:</B> <A NAME="tex2html800"
52 53
   HREF="node32.html">mod_clamav</A>
53
- &nbsp <B>  <A NAME="tex2html794"
54
+ &nbsp; <B>  <A NAME="tex2html808"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00065000000000000000">
60 61
 AMaViS - "Next Generation"</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html84"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html85"
63 64
   HREF="http://sourceforge.net/projects/amavis">http://sourceforge.net/projects/amavis</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66 67
 AMaViS-ng is a rewritten, more modular version of amavis-perl/amavisd,
67 68
     developed by Hilko Bengen. Home site:
68
-<BR>    <B>Installation:</B>
69
+<BR>    <SPAN  CLASS="textbf">Installation:</SPAN>
69 70
 <BR>
70 71
 <P>
71 72
 Please download the newest version (at least 0.1.4).
... ...
@@ -85,7 +85,7 @@ Please download the newest version (at least 0.1.4).
85 85
 <BR><HR>
86 86
 <ADDRESS>
87 87
 Tomasz Kojm
88
-2004-06-29
88
+2004-07-22
89 89
 </ADDRESS>
90 90
 </BODY>
91 91
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,46 +25,47 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html807"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html821"
31 32
   HREF="node35.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html803"
35
+<A NAME="tex2html817"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html797"
39
+<A NAME="tex2html811"
39 40
   HREF="node33.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html805"
43
+<A NAME="tex2html819"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html808"
48
+<B> Next:</B> <A NAME="tex2html822"
48 49
   HREF="node35.html">Qmail-Scanner</A>
49
-<B> Up:</B> <A NAME="tex2html804"
50
+<B> Up:</B> <A NAME="tex2html818"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html798"
52
+<B> Previous:</B> <A NAME="tex2html812"
52 53
   HREF="node33.html">AMaViS - "Next Generation"</A>
53
- &nbsp <B>  <A NAME="tex2html806"
54
+ &nbsp; <B>  <A NAME="tex2html820"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00066000000000000000">
60 61
 amavisd-new</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html85"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html86"
63 64
   HREF="http://www.ijs.si/software/amavisd">http://www.ijs.si/software/amavisd</A></TT>
64
-<BR>    <B>Supports:</B> clamd, clamscan
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd, clamscan
65 66
 <BR>
66 67
 amavisd-new is a rewritten version of amavis maintained by
67 68
     Mark Martinec.
68
-<BR>    <B>Installation:</B>
69
+<BR>    <SPAN  CLASS="textbf">Installation:</SPAN>
69 70
 <BR>
70 71
 clamscan is enabled automatically if clamscan binary is found
71 72
     at amavisd-new starup time. clamd is activated by uncommenting
... ...
@@ -75,7 +75,7 @@ clamscan is enabled automatically if clamscan binary is found
75 75
 <BR><HR>
76 76
 <ADDRESS>
77 77
 Tomasz Kojm
78
-2004-06-29
78
+2004-07-22
79 79
 </ADDRESS>
80 80
 </BODY>
81 81
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html819"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html833"
31 32
   HREF="node36.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html815"
35
+<A NAME="tex2html829"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html809"
39
+<A NAME="tex2html823"
39 40
   HREF="node34.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html817"
43
+<A NAME="tex2html831"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html820"
48
+<B> Next:</B> <A NAME="tex2html834"
48 49
   HREF="node36.html">Sagator</A>
49
-<B> Up:</B> <A NAME="tex2html816"
50
+<B> Up:</B> <A NAME="tex2html830"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html810"
52
+<B> Previous:</B> <A NAME="tex2html824"
52 53
   HREF="node34.html">amavisd-new</A>
53
- &nbsp <B>  <A NAME="tex2html818"
54
+ &nbsp; <B>  <A NAME="tex2html832"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00067000000000000000">
60 61
 Qmail-Scanner</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html86"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html87"
63 64
   HREF="http://qmail-scanner.sf.net">http://qmail-scanner.sf.net</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66 67
 Please increase the softlimit value if you are going to use it with
67 68
     clamscan.
... ...
@@ -70,7 +70,7 @@ Please increase the softlimit value if you are going to use it with
70 70
 <BR><HR>
71 71
 <ADDRESS>
72 72
 Tomasz Kojm
73
-2004-06-29
73
+2004-07-22
74 74
 </ADDRESS>
75 75
 </BODY>
76 76
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html831"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html845"
31 32
   HREF="node37.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html827"
35
+<A NAME="tex2html841"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html821"
39
+<A NAME="tex2html835"
39 40
   HREF="node35.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html829"
43
+<A NAME="tex2html843"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html832"
48
+<B> Next:</B> <A NAME="tex2html846"
48 49
   HREF="node37.html">ClamdMail</A>
49
-<B> Up:</B> <A NAME="tex2html828"
50
+<B> Up:</B> <A NAME="tex2html842"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html822"
52
+<B> Previous:</B> <A NAME="tex2html836"
52 53
   HREF="node35.html">Qmail-Scanner</A>
53
- &nbsp <B>  <A NAME="tex2html830"
54
+ &nbsp; <B>  <A NAME="tex2html844"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00068000000000000000">
60 61
 Sagator</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html87"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html88"
63 64
   HREF="http://www.salstar.sk/sagator">http://www.salstar.sk/sagator</A></TT>
64
-<BR>    <B>Supports:</B> clamscan, clamd, libclamav
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan, clamd, libclamav
65 66
 <BR>
66 67
 This program is an email antivirus/antispam gateway. It is an interface
67 68
     to the postfix (or any other smtpd), which runs antivirus
... ...
@@ -72,7 +72,7 @@ This program is an email antivirus/antispam gateway. It is an interface
72 72
 <BR><HR>
73 73
 <ADDRESS>
74 74
 Tomasz Kojm
75
-2004-06-29
75
+2004-07-22
76 76
 </ADDRESS>
77 77
 </BODY>
78 78
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html843"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html857"
31 32
   HREF="node38.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html839"
35
+<A NAME="tex2html853"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html833"
39
+<A NAME="tex2html847"
39 40
   HREF="node36.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html841"
43
+<A NAME="tex2html855"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html844"
48
+<B> Next:</B> <A NAME="tex2html858"
48 49
   HREF="node38.html">BlackHole</A>
49
-<B> Up:</B> <A NAME="tex2html840"
50
+<B> Up:</B> <A NAME="tex2html854"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html834"
52
+<B> Previous:</B> <A NAME="tex2html848"
52 53
   HREF="node36.html">Sagator</A>
53
- &nbsp <B>  <A NAME="tex2html842"
54
+ &nbsp; <B>  <A NAME="tex2html856"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00069000000000000000">
60 61
 ClamdMail</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html88"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html89"
63 64
   HREF="http://clamdmail.sf.net">http://clamdmail.sf.net</A></TT>
64
-<BR>    <B>Supports:</B> clamd
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd
65 66
 <BR>
66 67
 A mail processing client for ClamAV. Small, fast and easy to install.
67 68
 
... ...
@@ -69,7 +69,7 @@ A mail processing client for ClamAV. Small, fast and easy to install.
69 69
 <BR><HR>
70 70
 <ADDRESS>
71 71
 Tomasz Kojm
72
-2004-06-29
72
+2004-07-22
73 73
 </ADDRESS>
74 74
 </BODY>
75 75
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html855"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html869"
31 32
   HREF="node39.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html851"
35
+<A NAME="tex2html865"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html845"
39
+<A NAME="tex2html859"
39 40
   HREF="node37.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html853"
43
+<A NAME="tex2html867"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html856"
48
+<B> Next:</B> <A NAME="tex2html870"
48 49
   HREF="node39.html">MailScanner</A>
49
-<B> Up:</B> <A NAME="tex2html852"
50
+<B> Up:</B> <A NAME="tex2html866"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html846"
52
+<B> Previous:</B> <A NAME="tex2html860"
52 53
   HREF="node37.html">ClamdMail</A>
53
- &nbsp <B>  <A NAME="tex2html854"
54
+ &nbsp; <B>  <A NAME="tex2html868"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000610000000000000000">
60 61
 BlackHole</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html89"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html90"
63 64
   HREF="http://iland.net/~ckennedy/blackhole.shtml">http://iland.net/~ckennedy/blackhole.shtml</A></TT>
64
-<BR>    <B>Supports:</B> clamscan, clamd
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan, clamd
65 66
 <BR>
66 67
 BlackHole is an advanced spam / virus filter for Qmail, Postfix, Sendmail,
67 68
     Exim and Courier written by Chris Kennedy. This tool is for advanced
... ...
@@ -71,7 +71,7 @@ BlackHole is an advanced spam / virus filter for Qmail, Postfix, Sendmail,
71 71
 <BR><HR>
72 72
 <ADDRESS>
73 73
 Tomasz Kojm
74
-2004-06-29
74
+2004-07-22
75 75
 </ADDRESS>
76 76
 </BODY>
77 77
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html867"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html881"
31 32
   HREF="node40.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html863"
35
+<A NAME="tex2html877"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html857"
39
+<A NAME="tex2html871"
39 40
   HREF="node38.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html865"
43
+<A NAME="tex2html879"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html868"
48
+<B> Next:</B> <A NAME="tex2html882"
48 49
   HREF="node40.html">MIMEDefang</A>
49
-<B> Up:</B> <A NAME="tex2html864"
50
+<B> Up:</B> <A NAME="tex2html878"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html858"
52
+<B> Previous:</B> <A NAME="tex2html872"
52 53
   HREF="node38.html">BlackHole</A>
53
- &nbsp <B>  <A NAME="tex2html866"
54
+ &nbsp; <B>  <A NAME="tex2html880"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000611000000000000000">
60 61
 MailScanner</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html90"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html91"
63 64
   HREF="http://www.mailscanner.info">http://www.mailscanner.info</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66 67
 MailScanner scans all e-mail for viruses, spam and attacks against
67 68
     security vulnerabilities. It is not tied to any particular virus
... ...
@@ -72,7 +72,7 @@ MailScanner scans all e-mail for viruses, spam and attacks against
72 72
 <BR><HR>
73 73
 <ADDRESS>
74 74
 Tomasz Kojm
75
-2004-06-29
75
+2004-07-22
76 76
 </ADDRESS>
77 77
 </BODY>
78 78
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html391"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html402"
31 32
   HREF="node5.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html387"
35
+<A NAME="tex2html398"
35 36
   HREF="node2.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html381"
39
+<A NAME="tex2html392"
39 40
   HREF="node3.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html389"
43
+<A NAME="tex2html400"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html392"
48
+<B> Next:</B> <A NAME="tex2html403"
48 49
   HREF="node5.html">Virus submitting</A>
49
-<B> Up:</B> <A NAME="tex2html388"
50
+<B> Up:</B> <A NAME="tex2html399"
50 51
   HREF="node2.html">Introduction</A>
51
-<B> Previous:</B> <A NAME="tex2html382"
52
+<B> Previous:</B> <A NAME="tex2html393"
52 53
   HREF="node3.html">Features</A>
53
- &nbsp <B>  <A NAME="tex2html390"
54
+ &nbsp; <B>  <A NAME="tex2html401"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00022000000000000000">
... ...
@@ -62,15 +62,15 @@ Mailing lists</A>
62 62
     There are four mailing lists available:
63 63
     
64 64
 <UL>
65
-<LI><B>clamav-announce*lists.sf.net</B> - info about new versions
65
+<LI><SPAN  CLASS="textbf">clamav-announce*lists.sf.net</SPAN> - info about new versions
66 66
 <BR>    (including debian package releases), moderated<A NAME="tex2html1"
67
-  HREF="footnode.html#foot88"><SUP>1</SUP></A>.
67
+  HREF="footnode.html#foot88"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A>.
68 68
 </LI>
69
-<LI><B>clamav-users*lists.sf.net</B> - user questions
69
+<LI><SPAN  CLASS="textbf">clamav-users*lists.sf.net</SPAN> - user questions
70 70
 </LI>
71
-<LI><B>clamav-devel*lists.sf.net</B> - developement
71
+<LI><SPAN  CLASS="textbf">clamav-devel*lists.sf.net</SPAN> - developement
72 72
 </LI>
73
-<LI><B>clamav-virusdb*lists.sf.net</B> - database update
73
+<LI><SPAN  CLASS="textbf">clamav-virusdb*lists.sf.net</SPAN> - database update
74 74
 						      announcements
75 75
     
76 76
 </LI>
... ...
@@ -83,7 +83,7 @@ Mailing lists</A>
83 83
 <BR><HR>
84 84
 <ADDRESS>
85 85
 Tomasz Kojm
86
-2004-06-29
86
+2004-07-22
87 87
 </ADDRESS>
88 88
 </BODY>
89 89
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html879"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html893"
31 32
   HREF="node41.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html875"
35
+<A NAME="tex2html889"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html869"
39
+<A NAME="tex2html883"
39 40
   HREF="node39.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html877"
43
+<A NAME="tex2html891"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html880"
48
+<B> Next:</B> <A NAME="tex2html894"
48 49
   HREF="node41.html">exiscan</A>
49
-<B> Up:</B> <A NAME="tex2html876"
50
+<B> Up:</B> <A NAME="tex2html890"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html870"
52
+<B> Previous:</B> <A NAME="tex2html884"
52 53
   HREF="node39.html">MailScanner</A>
53
- &nbsp <B>  <A NAME="tex2html878"
54
+ &nbsp; <B>  <A NAME="tex2html892"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000612000000000000000">
60 61
 MIMEDefang</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html91"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html92"
63 64
   HREF="http://www.roaringpenguin.com/mimedefang">http://www.roaringpenguin.com/mimedefang</A></TT>
64
-<BR>    <B>Supports:</B> clamscan, clamd
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan, clamd
65 66
 <BR>
66 67
 This is an efficient mail scanner for Sendmail/milter.
67 68
 
... ...
@@ -69,7 +69,7 @@ This is an efficient mail scanner for Sendmail/milter.
69 69
 <BR><HR>
70 70
 <ADDRESS>
71 71
 Tomasz Kojm
72
-2004-06-29
72
+2004-07-22
73 73
 </ADDRESS>
74 74
 </BODY>
75 75
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html891"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html905"
31 32
   HREF="node42.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html887"
35
+<A NAME="tex2html901"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html881"
39
+<A NAME="tex2html895"
39 40
   HREF="node40.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html889"
43
+<A NAME="tex2html903"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html892"
48
+<B> Next:</B> <A NAME="tex2html906"
48 49
   HREF="node42.html">scanexi</A>
49
-<B> Up:</B> <A NAME="tex2html888"
50
+<B> Up:</B> <A NAME="tex2html902"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html882"
52
+<B> Previous:</B> <A NAME="tex2html896"
52 53
   HREF="node40.html">MIMEDefang</A>
53
- &nbsp <B>  <A NAME="tex2html890"
54
+ &nbsp; <B>  <A NAME="tex2html904"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000613000000000000000">
60 61
 exiscan</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html92"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html93"
63 64
   HREF="http://duncanthrax.net/exiscan">http://duncanthrax.net/exiscan</A></TT>
64
-<BR>    <B>Supports:</B> clamscan, clamd
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan, clamd
65 66
 <BR>
66 67
 exiscan is a patch against exim version 4, providing support for content
67 68
     scanning in email messages received by exim. Four different scanning
... ...
@@ -72,7 +72,7 @@ exiscan is a patch against exim version 4, providing support for content
72 72
 <BR><HR>
73 73
 <ADDRESS>
74 74
 Tomasz Kojm
75
-2004-06-29
75
+2004-07-22
76 76
 </ADDRESS>
77 77
 </BODY>
78 78
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,42 +25,43 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html903"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html917"
31 32
   HREF="node43.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html899"
35
+<A NAME="tex2html913"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html893"
39
+<A NAME="tex2html907"
39 40
   HREF="node41.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html901"
43
+<A NAME="tex2html915"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html904"
48
+<B> Next:</B> <A NAME="tex2html918"
48 49
   HREF="node43.html">Mail::ClamAV</A>
49
-<B> Up:</B> <A NAME="tex2html900"
50
+<B> Up:</B> <A NAME="tex2html914"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html894"
52
+<B> Previous:</B> <A NAME="tex2html908"
52 53
   HREF="node41.html">exiscan</A>
53
- &nbsp <B>  <A NAME="tex2html902"
54
+ &nbsp; <B>  <A NAME="tex2html916"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000614000000000000000">
60 61
 scanexi</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html93"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html94"
63 64
   HREF="http://w1.231.telia.com/~u23107873/scanexi.html">http://w1.231.telia.com/~u23107873/scanexi.html</A></TT>
64
-<BR>    <B>Supports:</B> clamscan, clamd
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan, clamd
65 66
 <BR>
66 67
 scanexi is a plugin for exim version 4.14 with dlopen patch, providing
67 68
     support for content scanning in email messages received by exim.
... ...
@@ -70,7 +70,7 @@ scanexi is a plugin for exim version 4.14 with dlopen patch, providing
70 70
 <BR><HR>
71 71
 <ADDRESS>
72 72
 Tomasz Kojm
73
-2004-06-29
73
+2004-07-22
74 74
 </ADDRESS>
75 75
 </BODY>
76 76
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,50 +25,51 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html915"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html929"
31 32
   HREF="node44.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html911"
35
+<A NAME="tex2html925"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html905"
39
+<A NAME="tex2html919"
39 40
   HREF="node42.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html913"
43
+<A NAME="tex2html927"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html916"
48
-  HREF="node44.html">OpenAntiVirus samba-vscan</A>
49
-<B> Up:</B> <A NAME="tex2html912"
48
+<B> Next:</B> <A NAME="tex2html930"
49
+  HREF="node44.html">File::Scan::ClamAV</A>
50
+<B> Up:</B> <A NAME="tex2html926"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html906"
52
+<B> Previous:</B> <A NAME="tex2html920"
52 53
   HREF="node42.html">scanexi</A>
53
- &nbsp <B>  <A NAME="tex2html914"
54
+ &nbsp; <B>  <A NAME="tex2html928"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000615000000000000000">
60 61
 Mail::ClamAV</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html94"
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html95"
63 64
   HREF="http://cpan.gossamer-threads.com/modules/by-authors/id/S/SA/SABECK/">http://cpan.gossamer-threads.com/modules/by-authors/id/S/SA/SABECK/</A></TT>
64
-<BR>    <B>Supports:</B> libclamav
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> libclamav
65 66
 <BR>
66
-Perl extension for the libclamav library.
67
+Perl binding for ClamAV.
67 68
 
68 69
 <P>
69 70
 <BR><HR>
70 71
 <ADDRESS>
71 72
 Tomasz Kojm
72
-2004-06-29
73
+2004-07-22
73 74
 </ADDRESS>
74 75
 </BODY>
75 76
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>OpenAntiVirus samba-vscan</TITLE>
11
-<META NAME="description" CONTENT="OpenAntiVirus samba-vscan">
10
+<TITLE>File::Scan::ClamAV</TITLE>
11
+<META NAME="description" CONTENT="File::Scan::ClamAV">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,51 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html927"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html941"
31 32
   HREF="node45.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html923"
35
+<A NAME="tex2html937"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html917"
39
+<A NAME="tex2html931"
39 40
   HREF="node43.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html925"
43
+<A NAME="tex2html939"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html928"
48
-  HREF="node45.html">Sylpheed Claws</A>
49
-<B> Up:</B> <A NAME="tex2html924"
48
+<B> Next:</B> <A NAME="tex2html942"
49
+  HREF="node45.html">OpenAntiVirus samba-vscan</A>
50
+<B> Up:</B> <A NAME="tex2html938"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html918"
52
+<B> Previous:</B> <A NAME="tex2html932"
52 53
   HREF="node43.html">Mail::ClamAV</A>
53
- &nbsp <B>  <A NAME="tex2html926"
54
+ &nbsp; <B>  <A NAME="tex2html940"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59
-<H2><A NAME="SECTION000616000000000000000"></A><A NAME="samba-vscan"></A>
60
-<BR>
61
-OpenAntiVirus samba-vscan
60
+<H2><A NAME="SECTION000616000000000000000">
61
+File::Scan::ClamAV</A>
62 62
 </H2>
63
-    <B>Homepage:</B> <TT><A NAME="tex2html95"
64
-  HREF="http://www.openantivirus.org/projects.php#samba-vscan">http://www.openantivirus.org/projects.php#samba-vscan</A></TT>
65
-<BR>    <B>Supports:</B> clamd
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html96"
64
+  HREF="http://search.cpan.org/~cfaber/File-Scan-ClamAV-1.06/lib/File/Scan/ClamAV.pm">http://search.cpan.org/~cfaber/File-Scan-ClamAV-1.06/lib/File/Scan/ClamAV.pm</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd
66 66
 <BR>
67
-samba-vscan provides on-access scanning of Samba shares. It supports
68
-    Samba 2.2.x/3.0 with working virtual file system (VFS) support. 
67
+Scan files and control clamd directly from Perl.
69 68
 
70 69
 <P>
71 70
 <BR><HR>
72 71
 <ADDRESS>
73 72
 Tomasz Kojm
74
-2004-06-29
73
+2004-07-22
75 74
 </ADDRESS>
76 75
 </BODY>
77 76
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Sylpheed Claws</TITLE>
11
-<META NAME="description" CONTENT="Sylpheed Claws">
10
+<TITLE>OpenAntiVirus samba-vscan</TITLE>
11
+<META NAME="description" CONTENT="OpenAntiVirus samba-vscan">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,53 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html939"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html953"
31 32
   HREF="node46.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html935"
35
+<A NAME="tex2html949"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html929"
39
+<A NAME="tex2html943"
39 40
   HREF="node44.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html937"
43
+<A NAME="tex2html951"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html940"
48
-  HREF="node46.html">nclamd</A>
49
-<B> Up:</B> <A NAME="tex2html936"
48
+<B> Next:</B> <A NAME="tex2html954"
49
+  HREF="node46.html">Sylpheed Claws</A>
50
+<B> Up:</B> <A NAME="tex2html950"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html930"
52
-  HREF="node44.html">OpenAntiVirus samba-vscan</A>
53
- &nbsp <B>  <A NAME="tex2html938"
52
+<B> Previous:</B> <A NAME="tex2html944"
53
+  HREF="node44.html">File::Scan::ClamAV</A>
54
+ &nbsp; <B>  <A NAME="tex2html952"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59
-<H2><A NAME="SECTION000617000000000000000">
60
-Sylpheed Claws</A>
60
+<H2><A NAME="SECTION000617000000000000000"></A><A NAME="samba-vscan"></A>
61
+<BR>
62
+OpenAntiVirus samba-vscan
61 63
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html96"
63
-  HREF="http://claws.sylpheed.org">http://claws.sylpheed.org</A></TT>
64
-<BR>    <B>Supports:</B> libclamav
64
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html97"
65
+  HREF="http://www.openantivirus.org/projects.php#samba-vscan">http://www.openantivirus.org/projects.php#samba-vscan</A></TT>
66
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd
65 67
 <BR>
66
-Sylpheed Claws is a bleeding edge branch of Sylpheed, a light weight mail
67
-    user agent for UNIX. It can scan attachments in mail received from POP,
68
-    IMAP or a local account and optionally delete the mail or save it to a
69
-    designated folder.
68
+samba-vscan provides on-access scanning of Samba shares. It supports
69
+    Samba 2.2.x/3.0 with working virtual file system (VFS) support. 
70 70
 
71 71
 <P>
72 72
 <BR><HR>
73 73
 <ADDRESS>
74 74
 Tomasz Kojm
75
-2004-06-29
75
+2004-07-22
76 76
 </ADDRESS>
77 77
 </BODY>
78 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>nclamd</TITLE>
11
-<META NAME="description" CONTENT="nclamd">
10
+<TITLE>Sylpheed Claws</TITLE>
11
+<META NAME="description" CONTENT="Sylpheed Claws">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,54 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html951"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html965"
31 32
   HREF="node47.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html947"
35
+<A NAME="tex2html961"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html941"
39
+<A NAME="tex2html955"
39 40
   HREF="node45.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html949"
43
+<A NAME="tex2html963"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html952"
48
-  HREF="node47.html">cgpav</A>
49
-<B> Up:</B> <A NAME="tex2html948"
48
+<B> Next:</B> <A NAME="tex2html966"
49
+  HREF="node47.html">nclamd</A>
50
+<B> Up:</B> <A NAME="tex2html962"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html942"
52
-  HREF="node45.html">Sylpheed Claws</A>
53
- &nbsp <B>  <A NAME="tex2html950"
52
+<B> Previous:</B> <A NAME="tex2html956"
53
+  HREF="node45.html">OpenAntiVirus samba-vscan</A>
54
+ &nbsp; <B>  <A NAME="tex2html964"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000618000000000000000">
60
-nclamd</A>
61
+Sylpheed Claws</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html97"
63
-  HREF="http://www.kyzo.com/nclamd/">http://www.kyzo.com/nclamd/</A></TT>
64
-<BR>    <B>Supports:</B> libclamav
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html98"
64
+  HREF="http://claws.sylpheed.org">http://claws.sylpheed.org</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> libclamav
65 66
 <BR>
66
-nclamd, nclamav-milter and nclamdscan are rewritten versions of the
67
-    original tools and use processes instead of threads and ripMIME instead
68
-    of the clamav built-in MIME decoder.
67
+Sylpheed Claws is a bleeding edge branch of Sylpheed, a light weight mail
68
+    user agent for UNIX. It can scan attachments in mail received from POP,
69
+    IMAP or a local account and optionally delete the mail or save it to a
70
+    designated folder.
69 71
 
70 72
 <P>
71 73
 <BR><HR>
72 74
 <ADDRESS>
73 75
 Tomasz Kojm
74
-2004-06-29
76
+2004-07-22
75 77
 </ADDRESS>
76 78
 </BODY>
77 79
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>cgpav</TITLE>
11
-<META NAME="description" CONTENT="cgpav">
10
+<TITLE>nclamd</TITLE>
11
+<META NAME="description" CONTENT="nclamd">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,51 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html963"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html977"
31 32
   HREF="node48.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html959"
35
+<A NAME="tex2html973"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html953"
39
+<A NAME="tex2html967"
39 40
   HREF="node46.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html961"
43
+<A NAME="tex2html975"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html964"
48
-  HREF="node48.html">j-chkmail</A>
49
-<B> Up:</B> <A NAME="tex2html960"
48
+<B> Next:</B> <A NAME="tex2html978"
49
+  HREF="node48.html">cgpav</A>
50
+<B> Up:</B> <A NAME="tex2html974"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html954"
52
-  HREF="node46.html">nclamd</A>
53
- &nbsp <B>  <A NAME="tex2html962"
52
+<B> Previous:</B> <A NAME="tex2html968"
53
+  HREF="node46.html">Sylpheed Claws</A>
54
+ &nbsp; <B>  <A NAME="tex2html976"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000619000000000000000">
60
-cgpav</A>
61
+nclamd</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html98"
63
-  HREF="http://program.farit.ru">http://program.farit.ru</A></TT>
64
-<BR>    <B>Supports:</B> clamd
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html99"
64
+  HREF="http://www.kyzo.com/nclamd/">http://www.kyzo.com/nclamd/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> libclamav
65 66
 <BR>
66
-This is a fast (written in C) CommuniGate Pro anti-virus plugin with
67
-    support for clamd.
67
+nclamd, nclamav-milter and nclamdscan are rewritten versions of the
68
+    original tools and use processes instead of threads and ripMIME instead
69
+    of the clamav built-in MIME decoder.
68 70
 
69 71
 <P>
70 72
 <BR><HR>
71 73
 <ADDRESS>
72 74
 Tomasz Kojm
73
-2004-06-29
75
+2004-07-22
74 76
 </ADDRESS>
75 77
 </BODY>
76 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>j-chkmail</TITLE>
11
-<META NAME="description" CONTENT="j-chkmail">
10
+<TITLE>cgpav</TITLE>
11
+<META NAME="description" CONTENT="cgpav">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,54 +25,52 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html975"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html989"
31 32
   HREF="node49.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html971"
35
+<A NAME="tex2html985"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html965"
39
+<A NAME="tex2html979"
39 40
   HREF="node47.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html973"
43
+<A NAME="tex2html987"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html976"
48
-  HREF="node49.html">qscanq</A>
49
-<B> Up:</B> <A NAME="tex2html972"
48
+<B> Next:</B> <A NAME="tex2html990"
49
+  HREF="node49.html">j-chkmail</A>
50
+<B> Up:</B> <A NAME="tex2html986"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html966"
52
-  HREF="node47.html">cgpav</A>
53
- &nbsp <B>  <A NAME="tex2html974"
52
+<B> Previous:</B> <A NAME="tex2html980"
53
+  HREF="node47.html">nclamd</A>
54
+ &nbsp; <B>  <A NAME="tex2html988"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000620000000000000000">
60
-j-chkmail</A>
61
+cgpav</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html99"
63
-  HREF="http://j-chkmail.ensmp.fr">http://j-chkmail.ensmp.fr</A></TT>
64
-<BR>    <B>Supports:</B> libclamav, clamd
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html100"
64
+  HREF="http://program.farit.ru">http://program.farit.ru</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd
65 66
 <BR>
66
-j-chkmail is a fast (written in C) filter for sendmail. It does spam and 
67
-    dangerous content (virus) filtering with help of ClamAV. The program
68
-    supports many modes of monitoring and run time controlling and
69
-    was designed to work on highly loaded servers. It's an open source
70
-    software available for free to registered users (for non-commercial usage).
67
+This is a fast (written in C) CommuniGate Pro anti-virus plugin with
68
+    support for clamd.
71 69
 
72 70
 <P>
73 71
 <BR><HR>
74 72
 <ADDRESS>
75 73
 Tomasz Kojm
76
-2004-06-29
74
+2004-07-22
77 75
 </ADDRESS>
78 76
 </BODY>
79 77
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>qscanq</TITLE>
11
-<META NAME="description" CONTENT="qscanq">
10
+<TITLE>j-chkmail</TITLE>
11
+<META NAME="description" CONTENT="j-chkmail">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,55 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html987"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1001"
31 32
   HREF="node50.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html983"
35
+<A NAME="tex2html997"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html977"
39
+<A NAME="tex2html991"
39 40
   HREF="node48.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html985"
43
+<A NAME="tex2html999"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html988"
48
-  HREF="node50.html">clamavr</A>
49
-<B> Up:</B> <A NAME="tex2html984"
48
+<B> Next:</B> <A NAME="tex2html1002"
49
+  HREF="node50.html">qscanq</A>
50
+<B> Up:</B> <A NAME="tex2html998"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html978"
52
-  HREF="node48.html">j-chkmail</A>
53
- &nbsp <B>  <A NAME="tex2html986"
52
+<B> Previous:</B> <A NAME="tex2html992"
53
+  HREF="node48.html">cgpav</A>
54
+ &nbsp; <B>  <A NAME="tex2html1000"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000621000000000000000">
60
-qscanq</A>
61
+j-chkmail</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html100"
63
-  HREF="http://budney.homeunix.net:8080/users/budney/software/qscanq/index.html">http://budney.homeunix.net:8080/users/budney/software/qscanq/index.html</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html101"
64
+  HREF="http://j-chkmail.ensmp.fr">http://j-chkmail.ensmp.fr</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> libclamav, clamd
65 66
 <BR>
66
-qscanq replaces qmail-queue. It initiates a scan (using clamscan or
67
-    clamdscan) on an incoming email, and returns the exit status of the
68
-    scanner or of qmail-queue to the caller.
67
+j-chkmail is a fast (written in C) filter for sendmail. It does spam and 
68
+    dangerous content (virus) filtering with help of ClamAV. The program
69
+    supports many modes of monitoring and run time controlling and
70
+    was designed to work on highly loaded servers. It's an open source
71
+    software available for free to registered users (for non-commercial usage).
69 72
 
70 73
 <P>
71 74
 <BR><HR>
72 75
 <ADDRESS>
73 76
 Tomasz Kojm
74
-2004-06-29
77
+2004-07-22
75 78
 </ADDRESS>
76 79
 </BODY>
77 80
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -25,41 +24,42 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
25 25
 </HEAD>
26 26
 
27 27
 <BODY >
28
-<!--Navigation Panel-->
29
-<A NAME="tex2html401"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html412"
30 31
   HREF="node6.html">
31 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
33
-<A NAME="tex2html397"
34
+<A NAME="tex2html408"
34 35
   HREF="node2.html">
35 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
37
-<A NAME="tex2html393"
38
+<A NAME="tex2html404"
38 39
   HREF="node4.html">
39 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
-<A NAME="tex2html399"
42
+<A NAME="tex2html410"
42 43
   HREF="node1.html">
43 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
45 46
 <BR>
46
-<B> Next:</B> <A NAME="tex2html402"
47
+<B> Next:</B> <A NAME="tex2html413"
47 48
   HREF="node6.html">Installation</A>
48
-<B> Up:</B> <A NAME="tex2html398"
49
+<B> Up:</B> <A NAME="tex2html409"
49 50
   HREF="node2.html">Introduction</A>
50
-<B> Previous:</B> <A NAME="tex2html394"
51
+<B> Previous:</B> <A NAME="tex2html405"
51 52
   HREF="node4.html">Mailing lists</A>
52
- &nbsp <B>  <A NAME="tex2html400"
53
+ &nbsp; <B>  <A NAME="tex2html411"
53 54
   HREF="node1.html">Contents</A></B> 
54 55
 <BR>
55
-<BR>
56
+<BR></DIV>
56 57
 <!--End of Navigation Panel-->
57 58
 
58 59
 <H2><A NAME="SECTION00023000000000000000">
59 60
 Virus submitting</A>
60 61
 </H2>
61 62
     If you have got a virus that is not detected by your ClamAV with latest
62
-    databases, please check it with the <I>ClamAV Online Specimen Scanner</I>:
63
+    databases, please check it with the <SPAN  CLASS="textit">ClamAV Online Specimen Scanner</SPAN>:
63 64
     <DIV ALIGN="CENTER">
64 65
 <TT><A NAME="tex2html3"
65 66
   HREF="http://www.gietl.com/test-clamav">http://www.gietl.com/test-clamav</A></TT>
... ...
@@ -74,7 +74,7 @@ and then submit it on our website:
74 74
 <BR><HR>
75 75
 <ADDRESS>
76 76
 Tomasz Kojm
77
-2004-06-29
77
+2004-07-22
78 78
 </ADDRESS>
79 79
 </BODY>
80 80
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>clamavr</TITLE>
11
-<META NAME="description" CONTENT="clamavr">
10
+<TITLE>qscanq</TITLE>
11
+<META NAME="description" CONTENT="qscanq">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,50 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html999"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1013"
31 32
   HREF="node51.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html995"
35
+<A NAME="tex2html1009"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html989"
39
+<A NAME="tex2html1003"
39 40
   HREF="node49.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html997"
43
+<A NAME="tex2html1011"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1000"
48
-  HREF="node51.html">pyclamav</A>
49
-<B> Up:</B> <A NAME="tex2html996"
48
+<B> Next:</B> <A NAME="tex2html1014"
49
+  HREF="node51.html">clamavr</A>
50
+<B> Up:</B> <A NAME="tex2html1010"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html990"
52
-  HREF="node49.html">qscanq</A>
53
- &nbsp <B>  <A NAME="tex2html998"
52
+<B> Previous:</B> <A NAME="tex2html1004"
53
+  HREF="node49.html">j-chkmail</A>
54
+ &nbsp; <B>  <A NAME="tex2html1012"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000622000000000000000">
60
-clamavr</A>
61
+qscanq</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html101"
63
-  HREF="http://raa.ruby-lang.org/list.rhtml?name=clamavr">http://raa.ruby-lang.org/list.rhtml?name=clamavr</A></TT>
64
-<BR>    <B>Supports:</B> libclamav
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html102"
64
+  HREF="http://budney.homeunix.net:8080/users/budney/software/qscanq/index.html">http://budney.homeunix.net:8080/users/budney/software/qscanq/index.html</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66
-Ruby binding for ClamAV.
67
+qscanq replaces qmail-queue. It initiates a scan (using clamscan or
68
+    clamdscan) on an incoming email, and returns the exit status of the
69
+    scanner or of qmail-queue to the caller.
67 70
 
68 71
 <P>
69 72
 <BR><HR>
70 73
 <ADDRESS>
71 74
 Tomasz Kojm
72
-2004-06-29
75
+2004-07-22
73 76
 </ADDRESS>
74 77
 </BODY>
75 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>pyclamav</TITLE>
11
-<META NAME="description" CONTENT="pyclamav">
10
+<TITLE>clamavr</TITLE>
11
+<META NAME="description" CONTENT="clamavr">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,50 +25,51 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1011"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1025"
31 32
   HREF="node52.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1007"
35
+<A NAME="tex2html1021"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1001"
39
+<A NAME="tex2html1015"
39 40
   HREF="node50.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1009"
43
+<A NAME="tex2html1023"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1012"
48
-  HREF="node52.html">DansGuardian Anti-Virus Plugin</A>
49
-<B> Up:</B> <A NAME="tex2html1008"
48
+<B> Next:</B> <A NAME="tex2html1026"
49
+  HREF="node52.html">pyclamav</A>
50
+<B> Up:</B> <A NAME="tex2html1022"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1002"
52
-  HREF="node50.html">clamavr</A>
53
- &nbsp <B>  <A NAME="tex2html1010"
52
+<B> Previous:</B> <A NAME="tex2html1016"
53
+  HREF="node50.html">qscanq</A>
54
+ &nbsp; <B>  <A NAME="tex2html1024"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000623000000000000000">
60
-pyclamav</A>
61
+clamavr</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html102"
63
-  HREF="http://xael.org/norman/python/pyclamav/index.html">http://xael.org/norman/python/pyclamav/index.html</A></TT>
64
-<BR>    <B>Supports:</B> libclamav
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html103"
64
+  HREF="http://raa.ruby-lang.org/list.rhtml?name=clamavr">http://raa.ruby-lang.org/list.rhtml?name=clamavr</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> libclamav
65 66
 <BR>
66
-Python binding for ClamAV.
67
+Ruby binding for ClamAV.
67 68
 
68 69
 <P>
69 70
 <BR><HR>
70 71
 <ADDRESS>
71 72
 Tomasz Kojm
72
-2004-06-29
73
+2004-07-22
73 74
 </ADDRESS>
74 75
 </BODY>
75 76
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>DansGuardian Anti-Virus Plugin</TITLE>
11
-<META NAME="description" CONTENT="DansGuardian Anti-Virus Plugin">
10
+<TITLE>pyclamav</TITLE>
11
+<META NAME="description" CONTENT="pyclamav">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,51 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1023"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1037"
31 32
   HREF="node53.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1019"
35
+<A NAME="tex2html1033"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1013"
39
+<A NAME="tex2html1027"
39 40
   HREF="node51.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1021"
43
+<A NAME="tex2html1035"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1024"
48
-  HREF="node53.html">Viralator</A>
49
-<B> Up:</B> <A NAME="tex2html1020"
48
+<B> Next:</B> <A NAME="tex2html1038"
49
+  HREF="node53.html">DansGuardian Anti-Virus Plugin</A>
50
+<B> Up:</B> <A NAME="tex2html1034"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1014"
52
-  HREF="node51.html">pyclamav</A>
53
- &nbsp <B>  <A NAME="tex2html1022"
52
+<B> Previous:</B> <A NAME="tex2html1028"
53
+  HREF="node51.html">clamavr</A>
54
+ &nbsp; <B>  <A NAME="tex2html1036"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000624000000000000000">
60
-DansGuardian Anti-Virus Plugin</A>
61
+pyclamav</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html103"
63
-  HREF="http://www.pcxperience.org/dgvirus/">http://www.pcxperience.org/dgvirus/</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html104"
64
+  HREF="http://xael.org/norman/python/pyclamav/index.html">http://xael.org/norman/python/pyclamav/index.html</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> libclamav
65 66
 <BR>
66
-DG AVP is a GPL addon that takes the Virus Scanning capabilities of The
67
-    MailScanner and integrates them into the content filtering web proxy
68
-    DansGuardian.
67
+Python binding for ClamAV.
69 68
 
70 69
 <P>
71 70
 <BR><HR>
72 71
 <ADDRESS>
73 72
 Tomasz Kojm
74
-2004-06-29
73
+2004-07-22
75 74
 </ADDRESS>
76 75
 </BODY>
77 76
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Viralator</TITLE>
11
-<META NAME="description" CONTENT="Viralator">
10
+<TITLE>DansGuardian Anti-Virus Plugin</TITLE>
11
+<META NAME="description" CONTENT="DansGuardian Anti-Virus Plugin">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,51 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1035"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1049"
31 32
   HREF="node54.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1031"
35
+<A NAME="tex2html1045"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1025"
39
+<A NAME="tex2html1039"
39 40
   HREF="node52.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1033"
43
+<A NAME="tex2html1047"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1036"
48
-  HREF="node54.html">ClamAssassin</A>
49
-<B> Up:</B> <A NAME="tex2html1032"
48
+<B> Next:</B> <A NAME="tex2html1050"
49
+  HREF="node54.html">Viralator</A>
50
+<B> Up:</B> <A NAME="tex2html1046"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1026"
52
-  HREF="node52.html">DansGuardian Anti-Virus Plugin</A>
53
- &nbsp <B>  <A NAME="tex2html1034"
52
+<B> Previous:</B> <A NAME="tex2html1040"
53
+  HREF="node52.html">pyclamav</A>
54
+ &nbsp; <B>  <A NAME="tex2html1048"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000625000000000000000">
60
-Viralator</A>
61
+DansGuardian Anti-Virus Plugin</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html104"
63
-  HREF="http://viralator.sourceforge.net/">http://viralator.sourceforge.net/</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html105"
64
+  HREF="http://www.pcxperience.org/dgvirus/">http://www.pcxperience.org/dgvirus/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66
-Viralator is a perl script that virus scans http downloads on a linux
67
-    server after passing through the squid proxy server.
67
+DG AVP is a GPL addon that takes the Virus Scanning capabilities of The
68
+    MailScanner and integrates them into the content filtering web proxy
69
+    DansGuardian.
68 70
 
69 71
 <P>
70 72
 <BR><HR>
71 73
 <ADDRESS>
72 74
 Tomasz Kojm
73
-2004-06-29
75
+2004-07-22
74 76
 </ADDRESS>
75 77
 </BODY>
76 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>ClamAssassin</TITLE>
11
-<META NAME="description" CONTENT="ClamAssassin">
10
+<TITLE>Viralator</TITLE>
11
+<META NAME="description" CONTENT="Viralator">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,52 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1047"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1061"
31 32
   HREF="node55.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1043"
35
+<A NAME="tex2html1057"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1037"
39
+<A NAME="tex2html1051"
39 40
   HREF="node53.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1045"
43
+<A NAME="tex2html1059"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1048"
48
-  HREF="node55.html">clamscan-procfilter</A>
49
-<B> Up:</B> <A NAME="tex2html1044"
48
+<B> Next:</B> <A NAME="tex2html1062"
49
+  HREF="node55.html">ClamAssassin</A>
50
+<B> Up:</B> <A NAME="tex2html1058"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1038"
52
-  HREF="node53.html">Viralator</A>
53
- &nbsp <B>  <A NAME="tex2html1046"
52
+<B> Previous:</B> <A NAME="tex2html1052"
53
+  HREF="node53.html">DansGuardian Anti-Virus Plugin</A>
54
+ &nbsp; <B>  <A NAME="tex2html1060"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000626000000000000000">
60
-ClamAssassin</A>
61
+Viralator</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html105"
63
-  HREF="http://drivel.com/clamassassin/">http://drivel.com/clamassassin/</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html106"
64
+  HREF="http://viralator.sourceforge.net/">http://viralator.sourceforge.net/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66
-clamassassin is a simple script for virus scanning with clamscan which
67
-     works similarily to spamassassin. It's designed for integration with
68
-     procmail.
67
+Viralator is a perl script that virus scans http downloads on a linux
68
+    server after passing through the squid proxy server.
69 69
 
70 70
 <P>
71 71
 <BR><HR>
72 72
 <ADDRESS>
73 73
 Tomasz Kojm
74
-2004-06-29
74
+2004-07-22
75 75
 </ADDRESS>
76 76
 </BODY>
77 77
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>clamscan-procfilter</TITLE>
11
-<META NAME="description" CONTENT="clamscan-procfilter">
10
+<TITLE>ClamAssassin</TITLE>
11
+<META NAME="description" CONTENT="ClamAssassin">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1059"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1073"
31 32
   HREF="node56.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1055"
35
+<A NAME="tex2html1069"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1049"
39
+<A NAME="tex2html1063"
39 40
   HREF="node54.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1057"
43
+<A NAME="tex2html1071"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1060"
48
-  HREF="node56.html">MyClamMailFilter</A>
49
-<B> Up:</B> <A NAME="tex2html1056"
48
+<B> Next:</B> <A NAME="tex2html1074"
49
+  HREF="node56.html">clamscan-procfilter</A>
50
+<B> Up:</B> <A NAME="tex2html1070"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1050"
52
-  HREF="node54.html">ClamAssassin</A>
53
- &nbsp <B>  <A NAME="tex2html1058"
52
+<B> Previous:</B> <A NAME="tex2html1064"
53
+  HREF="node54.html">Viralator</A>
54
+ &nbsp; <B>  <A NAME="tex2html1072"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000627000000000000000">
60
-clamscan-procfilter</A>
61
+ClamAssassin</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html106"
63
-  HREF="http://www.virtualblueness.net/~blueness/clamscan-procfilter/">http://www.virtualblueness.net/~blueness/clamscan-procfilter/</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html107"
64
+  HREF="http://drivel.com/clamassassin/">http://drivel.com/clamassassin/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66
-A procmail filter for clamscan to work in conjunction with procmail.
67
-    A new email field, X-CLAMAV, with all the viruses found is generated in
68
-    the email header.                       
67
+clamassassin is a simple script for virus scanning with clamscan which
68
+     works similarily to spamassassin. It's designed for integration with
69
+     procmail.
69 70
 
70 71
 <P>
71 72
 <BR><HR>
72 73
 <ADDRESS>
73 74
 Tomasz Kojm
74
-2004-06-29
75
+2004-07-22
75 76
 </ADDRESS>
76 77
 </BODY>
77 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>MyClamMailFilter</TITLE>
11
-<META NAME="description" CONTENT="MyClamMailFilter">
10
+<TITLE>clamscan-procfilter</TITLE>
11
+<META NAME="description" CONTENT="clamscan-procfilter">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,53 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1071"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1085"
31 32
   HREF="node57.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1067"
35
+<A NAME="tex2html1081"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1061"
39
+<A NAME="tex2html1075"
39 40
   HREF="node55.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1069"
43
+<A NAME="tex2html1083"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1072"
48
-  HREF="node57.html">Gadoyanvirus</A>
49
-<B> Up:</B> <A NAME="tex2html1068"
48
+<B> Next:</B> <A NAME="tex2html1086"
49
+  HREF="node57.html">MyClamMailFilter</A>
50
+<B> Up:</B> <A NAME="tex2html1082"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1062"
52
-  HREF="node55.html">clamscan-procfilter</A>
53
- &nbsp <B>  <A NAME="tex2html1070"
52
+<B> Previous:</B> <A NAME="tex2html1076"
53
+  HREF="node55.html">ClamAssassin</A>
54
+ &nbsp; <B>  <A NAME="tex2html1084"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000628000000000000000">
60
-MyClamMailFilter</A>
61
+clamscan-procfilter</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html107"
63
-  HREF="http://muncul0.w.interia.pl/projects.html#myclammailfilter">http://muncul0.w.interia.pl/projects.html#myclammailfilter</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html108"
64
+  HREF="http://www.virtualblueness.net/~blueness/clamscan-procfilter/">http://www.virtualblueness.net/~blueness/clamscan-procfilter/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66
-MyClamMailFilter is an e-mail filter for procmail or maildrop.
67
-    When a virus is found it renames attachments and modifies the subject.
68
-    It can also rename potentially dangerous attachments looking at their
69
-    extensions. The software is simple, fast and easy to customize.
67
+A procmail filter for clamscan to work in conjunction with procmail.
68
+    A new email field, X-CLAMAV, with all the viruses found is generated in
69
+    the email header.                       
70 70
 
71 71
 <P>
72 72
 <BR><HR>
73 73
 <ADDRESS>
74 74
 Tomasz Kojm
75
-2004-06-29
75
+2004-07-22
76 76
 </ADDRESS>
77 77
 </BODY>
78 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Gadoyanvirus</TITLE>
11
-<META NAME="description" CONTENT="Gadoyanvirus">
10
+<TITLE>MyClamMailFilter</TITLE>
11
+<META NAME="description" CONTENT="MyClamMailFilter">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,54 +25,54 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1083"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1097"
31 32
   HREF="node58.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1079"
35
+<A NAME="tex2html1093"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1073"
39
+<A NAME="tex2html1087"
39 40
   HREF="node56.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1081"
43
+<A NAME="tex2html1095"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1084"
48
-  HREF="node58.html">OpenProtect</A>
49
-<B> Up:</B> <A NAME="tex2html1080"
48
+<B> Next:</B> <A NAME="tex2html1098"
49
+  HREF="node58.html">Gadoyanvirus</A>
50
+<B> Up:</B> <A NAME="tex2html1094"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1074"
52
-  HREF="node56.html">MyClamMailFilter</A>
53
- &nbsp <B>  <A NAME="tex2html1082"
52
+<B> Previous:</B> <A NAME="tex2html1088"
53
+  HREF="node56.html">clamscan-procfilter</A>
54
+ &nbsp; <B>  <A NAME="tex2html1096"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000629000000000000000">
60
-Gadoyanvirus</A>
61
+MyClamMailFilter</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html108"
63
-  HREF="http://oss.mdamt.net/gadoyanvirus/">http://oss.mdamt.net/gadoyanvirus/</A></TT>
64
-<BR>    <B>Supports:</B> libclamav
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html109"
64
+  HREF="http://muncul0.w.interia.pl/projects.html#myclammailfilter">http://muncul0.w.interia.pl/projects.html#myclammailfilter</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66
-gadoyanvirus is a (yet another) virus stopper for qmail. It replaces the
67
-    original qmail-queue program. It scans incoming messages using the ClamAV
68
-    anti-virus library. Suspected message will be quarantined and (optionally)
69
-    a notification message will be sent to the recipients. By default,
70
-    gadoyanvirus needs QMAILQUEUE patched qmail installation. 
67
+MyClamMailFilter is an e-mail filter for procmail or maildrop.
68
+    When a virus is found it renames attachments and modifies the subject.
69
+    It can also rename potentially dangerous attachments looking at their
70
+    extensions. The software is simple, fast and easy to customize.
71 71
 
72 72
 <P>
73 73
 <BR><HR>
74 74
 <ADDRESS>
75 75
 Tomasz Kojm
76
-2004-06-29
76
+2004-07-22
77 77
 </ADDRESS>
78 78
 </BODY>
79 79
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>OpenProtect</TITLE>
11
-<META NAME="description" CONTENT="OpenProtect">
10
+<TITLE>Gadoyanvirus</TITLE>
11
+<META NAME="description" CONTENT="Gadoyanvirus">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,54 +25,55 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1095"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1109"
31 32
   HREF="node59.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1091"
35
+<A NAME="tex2html1105"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1085"
39
+<A NAME="tex2html1099"
39 40
   HREF="node57.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1093"
43
+<A NAME="tex2html1107"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1096"
48
-  HREF="node59.html">RevolSys SMTP kit for</A>
49
-<B> Up:</B> <A NAME="tex2html1092"
48
+<B> Next:</B> <A NAME="tex2html1110"
49
+  HREF="node59.html">OpenProtect</A>
50
+<B> Up:</B> <A NAME="tex2html1106"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1086"
52
-  HREF="node57.html">Gadoyanvirus</A>
53
- &nbsp <B>  <A NAME="tex2html1094"
52
+<B> Previous:</B> <A NAME="tex2html1100"
53
+  HREF="node57.html">MyClamMailFilter</A>
54
+ &nbsp; <B>  <A NAME="tex2html1108"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000630000000000000000">
60
-OpenProtect</A>
61
+Gadoyanvirus</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html109"
63
-  HREF="http://opencompt.com/">http://opencompt.com/</A></TT>
64
-<BR>    <B>Supports:</B> ClamAV via MailScanner
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html110"
64
+  HREF="http://oss.mdamt.net/gadoyanvirus/">http://oss.mdamt.net/gadoyanvirus/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> libclamav
65 66
 <BR>
66
-OpenProtect is a server side e-mail protection solution consisting of
67
-    MailScanner, Spamassassin, ClamAV with support for Sendmail,Postfix,
68
-    Exim and qmail. It also consists of a fully automatic installer and
69
-    uninstaller, which configures everything automatically including
70
-    setting up perl modules and virus scanner settings. 
67
+gadoyanvirus is a (yet another) virus stopper for qmail. It replaces the
68
+    original qmail-queue program. It scans incoming messages using the ClamAV
69
+    anti-virus library. Suspected message will be quarantined and (optionally)
70
+    a notification message will be sent to the recipients. By default,
71
+    gadoyanvirus needs QMAILQUEUE patched qmail installation. 
71 72
 
72 73
 <P>
73 74
 <BR><HR>
74 75
 <ADDRESS>
75 76
 Tomasz Kojm
76
-2004-06-29
77
+2004-07-22
77 78
 </ADDRESS>
78 79
 </BODY>
79 80
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>RevolSys SMTP kit for Postfix</TITLE>
11
-<META NAME="description" CONTENT="RevolSys SMTP kit for Postfix">
10
+<TITLE>OpenProtect</TITLE>
11
+<META NAME="description" CONTENT="OpenProtect">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,55 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1107"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1121"
31 32
   HREF="node60.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1103"
35
+<A NAME="tex2html1117"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1097"
39
+<A NAME="tex2html1111"
39 40
   HREF="node58.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1105"
43
+<A NAME="tex2html1119"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1108"
48
-  HREF="node60.html">POP3 Virus Scanner Daemon</A>
49
-<B> Up:</B> <A NAME="tex2html1104"
48
+<B> Next:</B> <A NAME="tex2html1122"
49
+  HREF="node60.html">RevolSys SMTP kit for</A>
50
+<B> Up:</B> <A NAME="tex2html1118"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1098"
52
-  HREF="node58.html">OpenProtect</A>
53
- &nbsp <B>  <A NAME="tex2html1106"
52
+<B> Previous:</B> <A NAME="tex2html1112"
53
+  HREF="node58.html">Gadoyanvirus</A>
54
+ &nbsp; <B>  <A NAME="tex2html1120"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000631000000000000000">
60
-RevolSys SMTP kit for Postfix</A>
61
+OpenProtect</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html110"
63
-  HREF="http://smtp.revolsys.org/">http://smtp.revolsys.org/</A></TT>
64
-<BR>    <B>Supports:</B> ClamAV via amavisd-new
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html111"
64
+  HREF="http://opencompt.com/">http://opencompt.com/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> ClamAV via MailScanner
65 66
 <BR>
66
-The RevolSyS SMTP kit for Postfix provides an antispam and antivirus
67
-    tools installation. It uses amavisd-new, Spamassassin, ClamAV, and Razor.
68
-    It aims to enhance an already-installed mail server running Postfix.
67
+OpenProtect is a server side e-mail protection solution consisting of
68
+    MailScanner, Spamassassin, ClamAV with support for Sendmail,Postfix,
69
+    Exim and qmail. It also consists of a fully automatic installer and
70
+    uninstaller, which configures everything automatically including
71
+    setting up perl modules and virus scanner settings. 
69 72
 
70 73
 <P>
71 74
 <BR><HR>
72 75
 <ADDRESS>
73 76
 Tomasz Kojm
74
-2004-06-29
77
+2004-07-22
75 78
 </ADDRESS>
76 79
 </BODY>
77 80
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html413"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html424"
31 32
   HREF="node7.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html409"
35
+<A NAME="tex2html420"
35 36
   HREF="clamdoc.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html403"
39
+<A NAME="tex2html414"
39 40
   HREF="node5.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html411"
43
+<A NAME="tex2html422"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html414"
48
+<B> Next:</B> <A NAME="tex2html425"
48 49
   HREF="node7.html">Supported platforms</A>
49
-<B> Up:</B> <A NAME="tex2html410"
50
+<B> Up:</B> <A NAME="tex2html421"
50 51
   HREF="clamdoc.html">clamdoc</A>
51
-<B> Previous:</B> <A NAME="tex2html404"
52
+<B> Previous:</B> <A NAME="tex2html415"
52 53
   HREF="node5.html">Virus submitting</A>
53
- &nbsp <B>  <A NAME="tex2html412"
54
+ &nbsp; <B>  <A NAME="tex2html423"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H1><A NAME="SECTION00030000000000000000">
... ...
@@ -65,35 +65,35 @@ Installation</A>
65 65
 <!--Table of Child-Links-->
66 66
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
67 67
 
68
-<UL>
69
-<LI><A NAME="tex2html415"
68
+<UL CLASS="ChildLinks">
69
+<LI><A NAME="tex2html426"
70 70
   HREF="node7.html">Supported platforms</A>
71
-<LI><A NAME="tex2html416"
71
+<LI><A NAME="tex2html427"
72 72
   HREF="node8.html">Binary packages - stable versions</A>
73
-<LI><A NAME="tex2html417"
73
+<LI><A NAME="tex2html428"
74 74
   HREF="node9.html">Binary packages - snapshots</A>
75
-<LI><A NAME="tex2html418"
75
+<LI><A NAME="tex2html429"
76 76
   HREF="node10.html">Requirements</A>
77
-<LI><A NAME="tex2html419"
77
+<LI><A NAME="tex2html430"
78 78
   HREF="node11.html">Installing on a shell account</A>
79
-<LI><A NAME="tex2html420"
79
+<LI><A NAME="tex2html431"
80 80
   HREF="node12.html">New system user and group</A>
81
-<LI><A NAME="tex2html421"
81
+<LI><A NAME="tex2html432"
82 82
   HREF="node13.html">Compilation</A>
83
-<LI><A NAME="tex2html422"
83
+<LI><A NAME="tex2html433"
84 84
   HREF="node14.html">Configuration</A>
85
-<LI><A NAME="tex2html423"
85
+<LI><A NAME="tex2html434"
86 86
   HREF="node15.html">Testing</A>
87
-<LI><A NAME="tex2html424"
87
+<LI><A NAME="tex2html435"
88 88
   HREF="node16.html">freshclam: Setting up auto-updating</A>
89
-<LI><A NAME="tex2html425"
89
+<LI><A NAME="tex2html436"
90 90
   HREF="node17.html">Database mirrors</A>
91 91
 </UL>
92 92
 <!--End of Table of Child-Links-->
93 93
 <BR><HR>
94 94
 <ADDRESS>
95 95
 Tomasz Kojm
96
-2004-06-29
96
+2004-07-22
97 97
 </ADDRESS>
98 98
 </BODY>
99 99
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>POP3 Virus Scanner Daemon</TITLE>
11
-<META NAME="description" CONTENT="POP3 Virus Scanner Daemon">
10
+<TITLE>RevolSys SMTP kit for Postfix</TITLE>
11
+<META NAME="description" CONTENT="RevolSys SMTP kit for Postfix">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,55 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1119"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1133"
31 32
   HREF="node61.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1115"
35
+<A NAME="tex2html1129"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1109"
39
+<A NAME="tex2html1123"
39 40
   HREF="node59.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1117"
43
+<A NAME="tex2html1131"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1120"
48
-  HREF="node61.html">mailman-clamav</A>
49
-<B> Up:</B> <A NAME="tex2html1116"
48
+<B> Next:</B> <A NAME="tex2html1134"
49
+  HREF="node61.html">POP3 Virus Scanner Daemon</A>
50
+<B> Up:</B> <A NAME="tex2html1130"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1110"
52
-  HREF="node59.html">RevolSys SMTP kit for</A>
53
- &nbsp <B>  <A NAME="tex2html1118"
52
+<B> Previous:</B> <A NAME="tex2html1124"
53
+  HREF="node59.html">OpenProtect</A>
54
+ &nbsp; <B>  <A NAME="tex2html1132"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000632000000000000000">
60
-POP3 Virus Scanner Daemon</A>
61
+RevolSys SMTP kit for Postfix</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html111"
63
-  HREF="http://p3scan.sourceforge.net/">http://p3scan.sourceforge.net/</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html112"
64
+  HREF="http://smtp.revolsys.org/">http://smtp.revolsys.org/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> ClamAV via amavisd-new
65 66
 <BR>
66
-This is a full-transparent proxy-server for POP3-Clients. It runs on
67
-    a Linux box with iptables (for port re-direction). It can be used to
68
-    provide POP3 email scanning from the internet, to any internal network
69
-    and is ideal for helping to protect your Other OS LAN from harm,
70
-    especially when used in conjunction with a firewall and other Internet
71
-    Proxy servers.
67
+The RevolSyS SMTP kit for Postfix provides an antispam and antivirus
68
+    tools installation. It uses amavisd-new, Spamassassin, ClamAV, and Razor.
69
+    It aims to enhance an already-installed mail server running Postfix.
72 70
 
73 71
 <P>
74 72
 <BR><HR>
75 73
 <ADDRESS>
76 74
 Tomasz Kojm
77
-2004-06-29
75
+2004-07-22
78 76
 </ADDRESS>
79 77
 </BODY>
80 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>mailman-clamav</TITLE>
11
-<META NAME="description" CONTENT="mailman-clamav">
10
+<TITLE>POP3 Virus Scanner Daemon</TITLE>
11
+<META NAME="description" CONTENT="POP3 Virus Scanner Daemon">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,54 +25,56 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1131"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1145"
31 32
   HREF="node62.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1127"
35
+<A NAME="tex2html1141"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1121"
39
+<A NAME="tex2html1135"
39 40
   HREF="node60.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1129"
43
+<A NAME="tex2html1143"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1132"
48
-  HREF="node62.html">wbmclamav</A>
49
-<B> Up:</B> <A NAME="tex2html1128"
48
+<B> Next:</B> <A NAME="tex2html1146"
49
+  HREF="node62.html">mailman-clamav</A>
50
+<B> Up:</B> <A NAME="tex2html1142"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1122"
52
-  HREF="node60.html">POP3 Virus Scanner Daemon</A>
53
- &nbsp <B>  <A NAME="tex2html1130"
52
+<B> Previous:</B> <A NAME="tex2html1136"
53
+  HREF="node60.html">RevolSys SMTP kit for</A>
54
+ &nbsp; <B>  <A NAME="tex2html1144"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000633000000000000000">
60
-mailman-clamav</A>
61
+POP3 Virus Scanner Daemon</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html112"
63
-  HREF="http://www.tummy.com/Software/mailman-clamav">http://www.tummy.com/Software/mailman-clamav</A></TT>
64
-<BR>    <B>Supports:</B> clamd
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html113"
64
+  HREF="http://p3scan.sourceforge.net/">http://p3scan.sourceforge.net/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66
-This module includes a Mailman handler for scanning incoming messages
67
-    through ClamAV. The handler allows Mailman to be configured to hold or
68
-    discard messages which contain viruses. Particularly useful is the
69
-    discard option, which prevents list administrators from having to
70
-    manually deal with viruses.
67
+This is a full-transparent proxy-server for POP3-Clients. It runs on
68
+    a Linux box with iptables (for port re-direction). It can be used to
69
+    provide POP3 email scanning from the internet, to any internal network
70
+    and is ideal for helping to protect your Other OS LAN from harm,
71
+    especially when used in conjunction with a firewall and other Internet
72
+    Proxy servers.
71 73
 
72 74
 <P>
73 75
 <BR><HR>
74 76
 <ADDRESS>
75 77
 Tomasz Kojm
76
-2004-06-29
78
+2004-07-22
77 79
 </ADDRESS>
78 80
 </BODY>
79 81
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>wbmclamav</TITLE>
11
-<META NAME="description" CONTENT="wbmclamav">
10
+<TITLE>mailman-clamav</TITLE>
11
+<META NAME="description" CONTENT="mailman-clamav">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,51 +25,55 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1143"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1157"
31 32
   HREF="node63.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1139"
35
+<A NAME="tex2html1153"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1133"
39
+<A NAME="tex2html1147"
39 40
   HREF="node61.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1141"
43
+<A NAME="tex2html1155"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1144"
48
-  HREF="node63.html">Scan Log Analyzer</A>
49
-<B> Up:</B> <A NAME="tex2html1140"
48
+<B> Next:</B> <A NAME="tex2html1158"
49
+  HREF="node63.html">wbmclamav</A>
50
+<B> Up:</B> <A NAME="tex2html1154"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1134"
52
-  HREF="node61.html">mailman-clamav</A>
53
- &nbsp <B>  <A NAME="tex2html1142"
52
+<B> Previous:</B> <A NAME="tex2html1148"
53
+  HREF="node61.html">POP3 Virus Scanner Daemon</A>
54
+ &nbsp; <B>  <A NAME="tex2html1156"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000634000000000000000">
60
-wbmclamav</A>
61
+mailman-clamav</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html113"
63
-  HREF="http://wbmclamav.labs.libre-entreprise.org/">http://wbmclamav.labs.libre-entreprise.org/</A></TT>
64
-<BR>    <B>Supports:</B> ClamAV
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html114"
64
+  HREF="http://www.tummy.com/Software/mailman-clamav">http://www.tummy.com/Software/mailman-clamav</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd
65 66
 <BR>
66
-wbmclamav is a webmin module to manage Clam AntiVirus, written by
67
-    Emmanuel Saracco. 
67
+This module includes a Mailman handler for scanning incoming messages
68
+    through ClamAV. The handler allows Mailman to be configured to hold or
69
+    discard messages which contain viruses. Particularly useful is the
70
+    discard option, which prevents list administrators from having to
71
+    manually deal with viruses.
68 72
 
69 73
 <P>
70 74
 <BR><HR>
71 75
 <ADDRESS>
72 76
 Tomasz Kojm
73
-2004-06-29
77
+2004-07-22
74 78
 </ADDRESS>
75 79
 </BODY>
76 80
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Scan Log Analyzer</TITLE>
11
-<META NAME="description" CONTENT="Scan Log Analyzer">
10
+<TITLE>wbmclamav</TITLE>
11
+<META NAME="description" CONTENT="wbmclamav">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,51 +25,52 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1155"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1169"
31 32
   HREF="node64.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1151"
35
+<A NAME="tex2html1165"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1145"
39
+<A NAME="tex2html1159"
39 40
   HREF="node62.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1153"
43
+<A NAME="tex2html1167"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1156"
48
-  HREF="node64.html">mailgraph</A>
49
-<B> Up:</B> <A NAME="tex2html1152"
48
+<B> Next:</B> <A NAME="tex2html1170"
49
+  HREF="node64.html">Scan Log Analyzer</A>
50
+<B> Up:</B> <A NAME="tex2html1166"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1146"
52
-  HREF="node62.html">wbmclamav</A>
53
- &nbsp <B>  <A NAME="tex2html1154"
52
+<B> Previous:</B> <A NAME="tex2html1160"
53
+  HREF="node62.html">mailman-clamav</A>
54
+ &nbsp; <B>  <A NAME="tex2html1168"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000635000000000000000">
60
-Scan Log Analyzer</A>
61
+wbmclamav</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html114"
63
-  HREF="http://pandaemail.sourceforge.net/av-tools/">http://pandaemail.sourceforge.net/av-tools/</A></TT>
64
-<BR>    <B>Supports:</B> ClamAV
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html115"
64
+  HREF="http://wbmclamav.labs.libre-entreprise.org/">http://wbmclamav.labs.libre-entreprise.org/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> ClamAV
65 66
 <BR>
66
-Scan analyzer allows you to plot and view graphical representation of
67
-    log data from virus logs of RAV, ClamAV and Vexira. 
67
+wbmclamav is a webmin module to manage Clam AntiVirus, written by
68
+    Emmanuel Saracco. 
68 69
 
69 70
 <P>
70 71
 <BR><HR>
71 72
 <ADDRESS>
72 73
 Tomasz Kojm
73
-2004-06-29
74
+2004-07-22
74 75
 </ADDRESS>
75 76
 </BODY>
76 77
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>mailgraph</TITLE>
11
-<META NAME="description" CONTENT="mailgraph">
10
+<TITLE>Scan Log Analyzer</TITLE>
11
+<META NAME="description" CONTENT="Scan Log Analyzer">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,52 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1167"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1181"
31 32
   HREF="node65.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1163"
35
+<A NAME="tex2html1177"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1157"
39
+<A NAME="tex2html1171"
39 40
   HREF="node63.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1165"
43
+<A NAME="tex2html1179"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1168"
48
-  HREF="node65.html">INSERT</A>
49
-<B> Up:</B> <A NAME="tex2html1164"
48
+<B> Next:</B> <A NAME="tex2html1182"
49
+  HREF="node65.html">mailgraph</A>
50
+<B> Up:</B> <A NAME="tex2html1178"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1158"
52
-  HREF="node63.html">Scan Log Analyzer</A>
53
- &nbsp <B>  <A NAME="tex2html1166"
52
+<B> Previous:</B> <A NAME="tex2html1172"
53
+  HREF="node63.html">wbmclamav</A>
54
+ &nbsp; <B>  <A NAME="tex2html1180"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000636000000000000000">
60
-mailgraph</A>
61
+Scan Log Analyzer</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html115"
63
-  HREF="http://people.ee.ethz.ch/~dws/software/mailgraph/">http://people.ee.ethz.ch/~dws/software/mailgraph/</A></TT>
64
-<BR>    <B>Supports:</B> clamd
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html116"
64
+  HREF="http://pandaemail.sourceforge.net/av-tools/">http://pandaemail.sourceforge.net/av-tools/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> ClamAV
65 66
 <BR>
66
-mailgraph is a very simple mail statistics RRDtool frontend for Postfix
67
-    that produces daily, weekly, monthly and yearly graphs of received/sent
68
-    and bounced/rejected mail (SMTP traffic).
67
+Scan analyzer allows you to plot and view graphical representation of
68
+    log data from virus logs of RAV, ClamAV and Vexira. 
69 69
 
70 70
 <P>
71 71
 <BR><HR>
72 72
 <ADDRESS>
73 73
 Tomasz Kojm
74
-2004-06-29
74
+2004-07-22
75 75
 </ADDRESS>
76 76
 </BODY>
77 77
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>INSERT</TITLE>
11
-<META NAME="description" CONTENT="INSERT">
10
+<TITLE>mailgraph</TITLE>
11
+<META NAME="description" CONTENT="mailgraph">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,56 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1179"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1193"
31 32
   HREF="node66.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1175"
35
+<A NAME="tex2html1189"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1169"
39
+<A NAME="tex2html1183"
39 40
   HREF="node64.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1177"
43
+<A NAME="tex2html1191"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1180"
48
-  HREF="node66.html">Local Area Security</A>
49
-<B> Up:</B> <A NAME="tex2html1176"
48
+<B> Next:</B> <A NAME="tex2html1194"
49
+  HREF="node66.html">INSERT</A>
50
+<B> Up:</B> <A NAME="tex2html1190"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1170"
52
-  HREF="node64.html">mailgraph</A>
53
- &nbsp <B>  <A NAME="tex2html1178"
52
+<B> Previous:</B> <A NAME="tex2html1184"
53
+  HREF="node64.html">Scan Log Analyzer</A>
54
+ &nbsp; <B>  <A NAME="tex2html1192"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000637000000000000000">
60
-INSERT</A>
61
+mailgraph</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html116"
63
-  HREF="http://www.inside-security.de/INSERT_en.html">http://www.inside-security.de/INSERT_en.html</A></TT>
64
-<BR>    <B>Supports:</B> ClamAV
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html117"
64
+  HREF="http://people.ee.ethz.ch/~dws/software/mailgraph/">http://people.ee.ethz.ch/~dws/software/mailgraph/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamd
65 66
 <BR>
66
-INSERT (the Inside Security Rescue Toolkit) aims to be a multi-functional,
67
-    multi-purpose disaster recovery and network analysis system. It boots from
68
-    a credit card-sized CD-ROM and is basically a stripped-down version of
69
-    Knoppix. It features good hardware detection, fluxbox, emelfm,
70
-    links-hacked, ssh, tcpdump, nmap, chntpwd, and much more. It provides full
71
-    read-write support for NTFS partitions (using captive), and the ClamAV
72
-    virus scanner (including the signature database). 
67
+mailgraph is a very simple mail statistics RRDtool frontend for Postfix
68
+    that produces daily, weekly, monthly and yearly graphs of received/sent
69
+    and bounced/rejected mail (SMTP traffic).
73 70
 
74 71
 <P>
75 72
 <BR><HR>
76 73
 <ADDRESS>
77 74
 Tomasz Kojm
78
-2004-06-29
75
+2004-07-22
79 76
 </ADDRESS>
80 77
 </BODY>
81 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Local Area Security</TITLE>
11
-<META NAME="description" CONTENT="Local Area Security">
10
+<TITLE>INSERT</TITLE>
11
+<META NAME="description" CONTENT="INSERT">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,57 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1191"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1205"
31 32
   HREF="node67.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1187"
35
+<A NAME="tex2html1201"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1181"
39
+<A NAME="tex2html1195"
39 40
   HREF="node65.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1189"
43
+<A NAME="tex2html1203"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1192"
48
-  HREF="node67.html">ClamWin</A>
49
-<B> Up:</B> <A NAME="tex2html1188"
48
+<B> Next:</B> <A NAME="tex2html1206"
49
+  HREF="node67.html">Local Area Security</A>
50
+<B> Up:</B> <A NAME="tex2html1202"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1182"
52
-  HREF="node65.html">INSERT</A>
53
- &nbsp <B>  <A NAME="tex2html1190"
52
+<B> Previous:</B> <A NAME="tex2html1196"
53
+  HREF="node65.html">mailgraph</A>
54
+ &nbsp; <B>  <A NAME="tex2html1204"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000638000000000000000">
60
-Local Area Security</A>
61
+INSERT</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html117"
63
-  HREF="http://www.localareasecurity.com/">http://www.localareasecurity.com/</A></TT>
64
-<BR>    <B>Supports:</B> ClamAV
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html118"
64
+  HREF="http://www.inside-security.de/INSERT_en.html">http://www.inside-security.de/INSERT_en.html</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> ClamAV
65 66
 <BR>
66
-Local Area Security Linux is a Live CD distribution with a strong
67
-    emphasis on security tools and small footprint. It can be used to run
68
-    ClamAV from a CDROM. 
67
+INSERT (the Inside Security Rescue Toolkit) aims to be a multi-functional,
68
+    multi-purpose disaster recovery and network analysis system. It boots from
69
+    a credit card-sized CD-ROM and is basically a stripped-down version of
70
+    Knoppix. It features good hardware detection, fluxbox, emelfm,
71
+    links-hacked, ssh, tcpdump, nmap, chntpwd, and much more. It provides full
72
+    read-write support for NTFS partitions (using captive), and the ClamAV
73
+    virus scanner (including the signature database). 
69 74
 
70 75
 <P>
71 76
 <BR><HR>
72 77
 <ADDRESS>
73 78
 Tomasz Kojm
74
-2004-06-29
79
+2004-07-22
75 80
 </ADDRESS>
76 81
 </BODY>
77 82
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>ClamWin</TITLE>
11
-<META NAME="description" CONTENT="ClamWin">
10
+<TITLE>Local Area Security</TITLE>
11
+<META NAME="description" CONTENT="Local Area Security">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,57 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1203"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1217"
31 32
   HREF="node68.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1199"
35
+<A NAME="tex2html1213"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1193"
39
+<A NAME="tex2html1207"
39 40
   HREF="node66.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1201"
43
+<A NAME="tex2html1215"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1204"
48
-  HREF="node68.html">KlamAV</A>
49
-<B> Up:</B> <A NAME="tex2html1200"
48
+<B> Next:</B> <A NAME="tex2html1218"
49
+  HREF="node68.html">redWall Firewall</A>
50
+<B> Up:</B> <A NAME="tex2html1214"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1194"
52
-  HREF="node66.html">Local Area Security</A>
53
- &nbsp <B>  <A NAME="tex2html1202"
52
+<B> Previous:</B> <A NAME="tex2html1208"
53
+  HREF="node66.html">INSERT</A>
54
+ &nbsp; <B>  <A NAME="tex2html1216"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59
-<H2><A NAME="SECTION000639000000000000000"></A> <A NAME="clamwin"></A>
60
-<BR>
61
-ClamWin
60
+<H2><A NAME="SECTION000639000000000000000">
61
+Local Area Security</A>
62 62
 </H2>
63
-    <B>Homepage:</B> <TT><A NAME="tex2html118"
64
-  HREF="http://clamwin.sourceforge.net/">http://clamwin.sourceforge.net/</A></TT>
65
-<BR>    <B>Supports:</B> clamscan, freshclam
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html119"
64
+  HREF="http://www.localareasecurity.com/">http://www.localareasecurity.com/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> ClamAV
66 66
 <BR>
67
-ClamWin provides Graphical User Interface to Clam AntiVirus scanning
68
-    engine. It allows to select and scan a folder or file, configure settings
69
-    and update virus databases. It also includes a Windows Taskbar tray icon.
70
-    ClamWin also features a context menu handler for Windows Explorer which
71
-    installs Scan into the right-click explorer menu for files and folders.
72
-    The package comes with an installer built with InnoSetup. Cygwin dlls
73
-    are included.
67
+Local Area Security Linux is a Live CD distribution with a strong
68
+    emphasis on security tools and small footprint. It can be used to run
69
+    ClamAV from a CDROM. 
74 70
 
75 71
 <P>
76 72
 <BR><HR>
77 73
 <ADDRESS>
78 74
 Tomasz Kojm
79
-2004-06-29
75
+2004-07-22
80 76
 </ADDRESS>
81 77
 </BODY>
82 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>KlamAV</TITLE>
11
-<META NAME="description" CONTENT="KlamAV">
10
+<TITLE>redWall Firewall</TITLE>
11
+<META NAME="description" CONTENT="redWall Firewall">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,54 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1215"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1229"
31 32
   HREF="node69.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1211"
35
+<A NAME="tex2html1225"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1205"
39
+<A NAME="tex2html1219"
39 40
   HREF="node67.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1213"
43
+<A NAME="tex2html1227"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1216"
48
-  HREF="node69.html">Clamaktion</A>
49
-<B> Up:</B> <A NAME="tex2html1212"
48
+<B> Next:</B> <A NAME="tex2html1230"
49
+  HREF="node69.html">ClamWin</A>
50
+<B> Up:</B> <A NAME="tex2html1226"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1206"
52
-  HREF="node67.html">ClamWin</A>
53
- &nbsp <B>  <A NAME="tex2html1214"
52
+<B> Previous:</B> <A NAME="tex2html1220"
53
+  HREF="node67.html">Local Area Security</A>
54
+ &nbsp; <B>  <A NAME="tex2html1228"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000640000000000000000">
60
-KlamAV</A>
61
+redWall Firewall</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html119"
63
-  HREF="http://sourceforge.net/projects/klamav/">http://sourceforge.net/projects/klamav/</A></TT>
64
-<BR>    <B>Supports:</B> ClamAV
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html120"
64
+  HREF="http://redwall.sourceforge.net/">http://redwall.sourceforge.net/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> ClamAV
65 66
 <BR>
66
-A collection of GUI tools for using ClamAV on KDE. Klamscan, a KDE
67
-    frontend for clamscan, is available via CVS. For the forseeable future,
68
-    KlamAV will requre ClamAV to be already installed on your machine.
69
-    Hopefully, KlamAV will soon include freshklam, a sigtool utility,
70
-    and hopefully an interface for clamuko ('auto-protect' style scanning).
67
+redWall is a bootable CD-ROM firewall which focuses on web-based
68
+    reporting of the firewall's status. It supports virus filtering with
69
+    amavisd-new and ClamAV.
71 70
 
72 71
 <P>
73 72
 <BR><HR>
74 73
 <ADDRESS>
75 74
 Tomasz Kojm
76
-2004-06-29
75
+2004-07-22
77 76
 </ADDRESS>
78 77
 </BODY>
79 78
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Clamaktion</TITLE>
11
-<META NAME="description" CONTENT="Clamaktion">
10
+<TITLE>ClamWin</TITLE>
11
+<META NAME="description" CONTENT="ClamWin">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,51 +25,58 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1227"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1241"
31 32
   HREF="node70.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1223"
35
+<A NAME="tex2html1237"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1217"
39
+<A NAME="tex2html1231"
39 40
   HREF="node68.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1225"
43
+<A NAME="tex2html1239"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1228"
48
-  HREF="node70.html">QMVC - Qmail Mail</A>
49
-<B> Up:</B> <A NAME="tex2html1224"
48
+<B> Next:</B> <A NAME="tex2html1242"
49
+  HREF="node70.html">KlamAV</A>
50
+<B> Up:</B> <A NAME="tex2html1238"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1218"
52
-  HREF="node68.html">KlamAV</A>
53
- &nbsp <B>  <A NAME="tex2html1226"
52
+<B> Previous:</B> <A NAME="tex2html1232"
53
+  HREF="node68.html">redWall Firewall</A>
54
+ &nbsp; <B>  <A NAME="tex2html1240"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59
-<H2><A NAME="SECTION000641000000000000000">
60
-Clamaktion</A>
60
+<H2><A NAME="SECTION000641000000000000000"></A> <A NAME="clamwin"></A>
61
+<BR>
62
+ClamWin
61 63
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html120"
63
-  HREF="http://web.tiscali.it/rospolosco/clamaktion">http://web.tiscali.it/rospolosco/clamaktion</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
64
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html121"
65
+  HREF="http://clamwin.sourceforge.net/">http://clamwin.sourceforge.net/</A></TT>
66
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan, freshclam
65 67
 <BR>
66
-clamaktion is a little utility which allows KDE 3 users to scan files
67
-    and directories with clamscan from the right-click Konqueror menu.
68
+ClamWin provides Graphical User Interface to Clam AntiVirus scanning
69
+    engine. It allows to select and scan a folder or file, configure settings
70
+    and update virus databases. It also includes a Windows Taskbar tray icon.
71
+    ClamWin also features a context menu handler for Windows Explorer which
72
+    installs Scan into the right-click explorer menu for files and folders.
73
+    The package comes with an installer built with InnoSetup. Cygwin dlls
74
+    are included.
68 75
 
69 76
 <P>
70 77
 <BR><HR>
71 78
 <ADDRESS>
72 79
 Tomasz Kojm
73
-2004-06-29
80
+2004-07-22
74 81
 </ADDRESS>
75 82
 </BODY>
76 83
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html436"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html447"
31 32
   HREF="node8.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html432"
35
+<A NAME="tex2html443"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html426"
39
+<A NAME="tex2html437"
39 40
   HREF="node6.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html434"
43
+<A NAME="tex2html445"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html437"
48
+<B> Next:</B> <A NAME="tex2html448"
48 49
   HREF="node8.html">Binary packages - stable</A>
49
-<B> Up:</B> <A NAME="tex2html433"
50
+<B> Up:</B> <A NAME="tex2html444"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html427"
52
+<B> Previous:</B> <A NAME="tex2html438"
52 53
   HREF="node6.html">Installation</A>
53
- &nbsp <B>  <A NAME="tex2html435"
54
+ &nbsp; <B>  <A NAME="tex2html446"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00031000000000000000">
... ...
@@ -86,6 +86,8 @@ Supported platforms</A>
86 86
 <LI>Cobalt MIPS boxes (RAQ1, RAQ2, QUBE2)
87 87
 </LI>
88 88
 <LI>Windows/Cygwin
89
+</LI>
90
+<LI>Windows Services for Unix 3.5 (Interix)
89 91
     
90 92
 </LI>
91 93
 </UL>
... ...
@@ -97,7 +99,7 @@ Supported platforms</A>
97 97
 <BR><HR>
98 98
 <ADDRESS>
99 99
 Tomasz Kojm
100
-2004-06-29
100
+2004-07-22
101 101
 </ADDRESS>
102 102
 </BODY>
103 103
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>QMVC - Qmail Mail and Virus Control</TITLE>
11
-<META NAME="description" CONTENT="QMVC - Qmail Mail and Virus Control">
10
+<TITLE>KlamAV</TITLE>
11
+<META NAME="description" CONTENT="KlamAV">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,52 +25,55 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1239"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1253"
31 32
   HREF="node71.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1235"
35
+<A NAME="tex2html1249"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1229"
39
+<A NAME="tex2html1243"
39 40
   HREF="node69.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1237"
43
+<A NAME="tex2html1251"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1240"
48
-  HREF="node71.html">FETCAV</A>
49
-<B> Up:</B> <A NAME="tex2html1236"
48
+<B> Next:</B> <A NAME="tex2html1254"
49
+  HREF="node71.html">Clamaktion</A>
50
+<B> Up:</B> <A NAME="tex2html1250"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1230"
52
-  HREF="node69.html">Clamaktion</A>
53
- &nbsp <B>  <A NAME="tex2html1238"
52
+<B> Previous:</B> <A NAME="tex2html1244"
53
+  HREF="node69.html">ClamWin</A>
54
+ &nbsp; <B>  <A NAME="tex2html1252"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000642000000000000000">
60
-QMVC - Qmail Mail and Virus Control</A>
61
+KlamAV</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html121"
63
-  HREF="http://www.fehcom.de/qmail/qmvc.html">http://www.fehcom.de/qmail/qmvc.html</A></TT>
64
-<BR>    <B>Supports:</B> clamdscan, clamscan
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html122"
64
+  HREF="http://sourceforge.net/projects/klamav/">http://sourceforge.net/projects/klamav/</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> ClamAV
65 66
 <BR>
66
-QMVC is an unidirectional mail filter for Qmail. It works in conjunction
67
-    with the "dot-qmail" mechanism for qmail-local and is entirely designed
68
-    for Qmail (no additional patches required).
67
+A collection of GUI tools for using ClamAV on KDE. Klamscan, a KDE
68
+    frontend for clamscan, is available via CVS. For the forseeable future,
69
+    KlamAV will requre ClamAV to be already installed on your machine.
70
+    Hopefully, KlamAV will soon include freshklam, a sigtool utility,
71
+    and hopefully an interface for clamuko ('auto-protect' style scanning).
69 72
 
70 73
 <P>
71 74
 <BR><HR>
72 75
 <ADDRESS>
73 76
 Tomasz Kojm
74
-2004-06-29
77
+2004-07-22
75 78
 </ADDRESS>
76 79
 </BODY>
77 80
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>FETCAV</TITLE>
11
-<META NAME="description" CONTENT="FETCAV">
10
+<TITLE>Clamaktion</TITLE>
11
+<META NAME="description" CONTENT="Clamaktion">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,51 +25,52 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1251"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1265"
31 32
   HREF="node72.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1247"
35
+<A NAME="tex2html1261"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1241"
39
+<A NAME="tex2html1255"
39 40
   HREF="node70.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1249"
43
+<A NAME="tex2html1263"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1252"
48
-  HREF="node72.html">Famuko</A>
49
-<B> Up:</B> <A NAME="tex2html1248"
48
+<B> Next:</B> <A NAME="tex2html1266"
49
+  HREF="node72.html">QMVC - Qmail Mail</A>
50
+<B> Up:</B> <A NAME="tex2html1262"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1242"
52
-  HREF="node70.html">QMVC - Qmail Mail</A>
53
- &nbsp <B>  <A NAME="tex2html1250"
52
+<B> Previous:</B> <A NAME="tex2html1256"
53
+  HREF="node70.html">KlamAV</A>
54
+ &nbsp; <B>  <A NAME="tex2html1264"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000643000000000000000">
60
-FETCAV</A>
61
+Clamaktion</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html122"
63
-  HREF="http://www.thymox.uklinux.net">http://www.thymox.uklinux.net</A></TT>
64
-<BR>    <B>Supports:</B> clamscan
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html123"
64
+  HREF="http://web.tiscali.it/rospolosco/clamaktion">http://web.tiscali.it/rospolosco/clamaktion</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
65 66
 <BR>
66
-FETCAV stands for Front End To Clam AntiVirus. It's a GUI interface
67
-    to ClamAV and requires Xdialog.
67
+clamaktion is a little utility which allows KDE 3 users to scan files
68
+    and directories with clamscan from the right-click Konqueror menu.
68 69
 
69 70
 <P>
70 71
 <BR><HR>
71 72
 <ADDRESS>
72 73
 Tomasz Kojm
73
-2004-06-29
74
+2004-07-22
74 75
 </ADDRESS>
75 76
 </BODY>
76 77
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Famuko</TITLE>
11
-<META NAME="description" CONTENT="Famuko">
10
+<TITLE>QMVC - Qmail Mail and Virus Control</TITLE>
11
+<META NAME="description" CONTENT="QMVC - Qmail Mail and Virus Control">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,50 +25,53 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1263"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1277"
31 32
   HREF="node73.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1259"
35
+<A NAME="tex2html1273"
35 36
   HREF="node28.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1253"
39
+<A NAME="tex2html1267"
39 40
   HREF="node71.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1261"
43
+<A NAME="tex2html1275"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1264"
48
-  HREF="node73.html">SoftlabsAV</A>
49
-<B> Up:</B> <A NAME="tex2html1260"
48
+<B> Next:</B> <A NAME="tex2html1278"
49
+  HREF="node73.html">FETCAV</A>
50
+<B> Up:</B> <A NAME="tex2html1274"
50 51
   HREF="node28.html">Third party software</A>
51
-<B> Previous:</B> <A NAME="tex2html1254"
52
-  HREF="node71.html">FETCAV</A>
53
- &nbsp <B>  <A NAME="tex2html1262"
52
+<B> Previous:</B> <A NAME="tex2html1268"
53
+  HREF="node71.html">Clamaktion</A>
54
+ &nbsp; <B>  <A NAME="tex2html1276"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION000644000000000000000">
60
-Famuko</A>
61
+QMVC - Qmail Mail and Virus Control</A>
61 62
 </H2>
62
-    <B>Homepage:</B> <TT><A NAME="tex2html123"
63
-  HREF="http://www.campana.vi.it/ottavio/Progetti/Famuko/">http://www.campana.vi.it/ottavio/Progetti/Famuko/</A></TT>
64
-<BR>    <B>Supports:</B> libclamav
63
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html124"
64
+  HREF="http://www.fehcom.de/qmail/qmvc.html">http://www.fehcom.de/qmail/qmvc.html</A></TT>
65
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamdscan, clamscan
65 66
 <BR>
66
-Famuko is an on-access scanner based on libfam and working in a userspace.
67
+QMVC is an unidirectional mail filter for Qmail. It works in conjunction
68
+    with the "dot-qmail" mechanism for qmail-local and is entirely designed
69
+    for Qmail (no additional patches required).
67 70
 
68 71
 <P>
69 72
 <BR><HR>
70 73
 <ADDRESS>
71 74
 Tomasz Kojm
72
-2004-06-29
75
+2004-07-22
73 76
 </ADDRESS>
74 77
 </BODY>
75 78
 </HTML>
... ...
@@ -1,76 +1,76 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>SoftlabsAV</TITLE>
11
-<META NAME="description" CONTENT="SoftlabsAV">
10
+<TITLE>FETCAV</TITLE>
11
+<META NAME="description" CONTENT="FETCAV">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
21
+<LINK REL="next" HREF="node74.html">
22 22
 <LINK REL="previous" HREF="node72.html">
23 23
 <LINK REL="up" HREF="node28.html">
24 24
 <LINK REL="next" HREF="node74.html">
25 25
 </HEAD>
26 26
 
27 27
 <BODY >
28
-<!--Navigation Panel-->
29
-<A NAME="tex2html1273"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html1289"
30 31
   HREF="node74.html">
31 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
33
-<A NAME="tex2html1269"
34
+<A NAME="tex2html1285"
34 35
   HREF="node28.html">
35 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
37
-<A NAME="tex2html1265"
38
+<A NAME="tex2html1279"
38 39
   HREF="node72.html">
39 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
-<A NAME="tex2html1271"
42
+<A NAME="tex2html1287"
42 43
   HREF="node1.html">
43 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
45 46
 <BR>
46
-<B> Next:</B> <A NAME="tex2html1274"
47
-  HREF="node74.html">LibClamAV</A>
48
-<B> Up:</B> <A NAME="tex2html1270"
47
+<B> Next:</B> <A NAME="tex2html1290"
48
+  HREF="node74.html">Famuko</A>
49
+<B> Up:</B> <A NAME="tex2html1286"
49 50
   HREF="node28.html">Third party software</A>
50
-<B> Previous:</B> <A NAME="tex2html1266"
51
-  HREF="node72.html">Famuko</A>
52
- &nbsp <B>  <A NAME="tex2html1272"
51
+<B> Previous:</B> <A NAME="tex2html1280"
52
+  HREF="node72.html">QMVC - Qmail Mail</A>
53
+ &nbsp; <B>  <A NAME="tex2html1288"
53 54
   HREF="node1.html">Contents</A></B> 
54 55
 <BR>
55
-<BR>
56
+<BR></DIV>
56 57
 <!--End of Navigation Panel-->
57 58
 
58 59
 <H2><A NAME="SECTION000645000000000000000">
59
-SoftlabsAV</A>
60
+FETCAV</A>
60 61
 </H2>
61
-    <B>Homepage:</B> <TT><A NAME="tex2html124"
62
-  HREF="http://antivirus.softlabs.info/">http://antivirus.softlabs.info/</A></TT>
63
-<BR>    <B>Supports:</B> clamscan
62
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html125"
63
+  HREF="http://www.thymox.uklinux.net">http://www.thymox.uklinux.net</A></TT>
64
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
64 65
 <BR>
65
-Softlabs AntiVirus is a generic anti-virus filter for incoming mail
66
-    servers on Unix, running as plugin for procmail. In addition, it plugs
67
-    to the Clam AntiVirus scanner (clamscan) if available.
66
+FETCAV stands for Front End To Clam AntiVirus. It's a GUI interface
67
+    to ClamAV and requires Xdialog.
68 68
 
69 69
 <P>
70 70
 <BR><HR>
71 71
 <ADDRESS>
72 72
 Tomasz Kojm
73
-2004-06-29
73
+2004-07-22
74 74
 </ADDRESS>
75 75
 </BODY>
76 76
 </HTML>
... ...
@@ -1,90 +1,75 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>LibClamAV</TITLE>
11
-<META NAME="description" CONTENT="LibClamAV">
10
+<TITLE>Famuko</TITLE>
11
+<META NAME="description" CONTENT="Famuko">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22
-<LINK REL="next" HREF="node79.html">
23
-<LINK REL="previous" HREF="node28.html">
24
-<LINK REL="up" HREF="clamdoc.html">
21
+<LINK REL="next" HREF="node75.html">
22
+<LINK REL="previous" HREF="node73.html">
23
+<LINK REL="up" HREF="node28.html">
25 24
 <LINK REL="next" HREF="node75.html">
26 25
 </HEAD>
27 26
 
28 27
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1285"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html1301"
31 31
   HREF="node75.html">
32 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1281"
35
-  HREF="clamdoc.html">
34
+<A NAME="tex2html1297"
35
+  HREF="node28.html">
36 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1275"
38
+<A NAME="tex2html1291"
39 39
   HREF="node73.html">
40 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1283"
42
+<A NAME="tex2html1299"
43 43
   HREF="node1.html">
44 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 46
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1286"
48
-  HREF="node75.html">General API</A>
49
-<B> Up:</B> <A NAME="tex2html1282"
50
-  HREF="clamdoc.html">clamdoc</A>
51
-<B> Previous:</B> <A NAME="tex2html1276"
52
-  HREF="node73.html">SoftlabsAV</A>
53
- &nbsp <B>  <A NAME="tex2html1284"
47
+<B> Next:</B> <A NAME="tex2html1302"
48
+  HREF="node75.html">SoftlabsAV</A>
49
+<B> Up:</B> <A NAME="tex2html1298"
50
+  HREF="node28.html">Third party software</A>
51
+<B> Previous:</B> <A NAME="tex2html1292"
52
+  HREF="node73.html">FETCAV</A>
53
+ &nbsp; <B>  <A NAME="tex2html1300"
54 54
   HREF="node1.html">Contents</A></B> 
55 55
 <BR>
56
-<BR>
56
+<BR></DIV>
57 57
 <!--End of Navigation Panel-->
58 58
 
59
-<H1><A NAME="SECTION00070000000000000000">
60
-LibClamAV</A>
61
-</H1>
62
-
63
-<P>
64
-libclamav may be used to add a virus protection to your software.
65
-    The library is thread-safe and can transparently recognize and scan
66
-    archives, mail files and MS Office document files.
59
+<H2><A NAME="SECTION000646000000000000000">
60
+Famuko</A>
61
+</H2>
62
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html126"
63
+  HREF="http://www.campana.vi.it/ottavio/Progetti/Famuko/">http://www.campana.vi.it/ottavio/Progetti/Famuko/</A></TT>
64
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> libclamav
65
+<BR>
66
+Famuko is an on-access scanner based on libfam and working in a userspace.
67 67
 
68 68
 <P>
69 69
 <BR><HR>
70
-<!--Table of Child-Links-->
71
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
72
-
73
-<UL>
74
-<LI><A NAME="tex2html1287"
75
-  HREF="node75.html">General API</A>
76
-<LI><A NAME="tex2html1288"
77
-  HREF="node76.html">Database reloading</A>
78
-<LI><A NAME="tex2html1289"
79
-  HREF="node77.html">Scan engine</A>
80
-<LI><A NAME="tex2html1290"
81
-  HREF="node78.html">CVD format</A>
82
-</UL>
83
-<!--End of Table of Child-Links-->
84
-<BR><HR>
85 70
 <ADDRESS>
86 71
 Tomasz Kojm
87
-2004-06-29
72
+2004-07-22
88 73
 </ADDRESS>
89 74
 </BODY>
90 75
 </HTML>
... ...
@@ -1,251 +1,77 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>General API</TITLE>
11
-<META NAME="description" CONTENT="General API">
10
+<TITLE>SoftlabsAV</TITLE>
11
+<META NAME="description" CONTENT="SoftlabsAV">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22 21
 <LINK REL="next" HREF="node76.html">
23 22
 <LINK REL="previous" HREF="node74.html">
24
-<LINK REL="up" HREF="node74.html">
23
+<LINK REL="up" HREF="node28.html">
25 24
 <LINK REL="next" HREF="node76.html">
26 25
 </HEAD>
27 26
 
28 27
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1301"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html1313"
31 31
   HREF="node76.html">
32 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1297"
35
-  HREF="node74.html">
34
+<A NAME="tex2html1309"
35
+  HREF="node28.html">
36 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1291"
38
+<A NAME="tex2html1303"
39 39
   HREF="node74.html">
40 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1299"
42
+<A NAME="tex2html1311"
43 43
   HREF="node1.html">
44 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 46
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1302"
48
-  HREF="node76.html">Database reloading</A>
49
-<B> Up:</B> <A NAME="tex2html1298"
50
-  HREF="node74.html">LibClamAV</A>
51
-<B> Previous:</B> <A NAME="tex2html1292"
52
-  HREF="node74.html">LibClamAV</A>
53
- &nbsp <B>  <A NAME="tex2html1300"
47
+<B> Next:</B> <A NAME="tex2html1314"
48
+  HREF="node76.html">OdeiaVir</A>
49
+<B> Up:</B> <A NAME="tex2html1310"
50
+  HREF="node28.html">Third party software</A>
51
+<B> Previous:</B> <A NAME="tex2html1304"
52
+  HREF="node74.html">Famuko</A>
53
+ &nbsp; <B>  <A NAME="tex2html1312"
54 54
   HREF="node1.html">Contents</A></B> 
55 55
 <BR>
56
-<BR>
56
+<BR></DIV>
57 57
 <!--End of Navigation Panel-->
58 58
 
59
-<H2><A NAME="SECTION00071000000000000000">
60
-General API</A>
59
+<H2><A NAME="SECTION000647000000000000000">
60
+SoftlabsAV</A>
61 61
 </H2>
62
-    Every program based on libclamav must include the <code>clamav.h</code> header
63
-    file:
64
-    <PRE>
65
-	#include &lt;clamav.h&gt;
66
-</PRE>
67
-    A first step is to initialize the scanning engine. There are three
68
-    functions available:
69
-    <PRE>
70
-	int cl_loaddb(const char *filename, struct cl_node **root,
71
-	int *virnum);
72
-
73
-	int cl_loaddbdir(const char *dirname, struct cl_node **root,
74
-	int *virnum);
75
-
76
-	const char *cl_retdbdir(void);
77
-</PRE>
78
-    <code>cl_loaddb()</code> loads a particular database, <code>cl_loaddbdir()</code>
79
-    loads all <I>.cvd</I> (and older <I>.db</I>, .db2) databases from a
80
-    directory <code>dirname</code>. <code>cl_retdbdir()</code> returns a hardcoded
81
-    database directory path. Initial internal database (Aho-Corasick tree,
82
-    trie; see <A HREF="node77.html#engine">6.3</A>) will be saved under <code>root</code> and a number of
83
-    signatures loaded will be <B>added</B> <A NAME="tex2html125"
84
-  HREF="footnode.html#foot728"><SUP>8</SUP></A> to <code>virnum</code>. Pointer to the trie
85
-    must initially point to NULL. If you don't care about number of signatures
86
-    pass NULL as a third argument. <code>cl_loaddb</code> functions return 0 on
87
-    success and an other value on failure.
88
-    <PRE>
89
-	    struct cl_node *root = NULL;
90
-	    int ret;
91
-
92
-	ret = cl_loaddbdir(cl_retdbdir(), &amp;root, NULL);
93
-</PRE>
94
-    There's an elegant way to print libclamav's error codes:
95
-    <PRE>
96
-	const char *cl_strerror(int clerror);
97
-</PRE>
98
-    <code>cl_strerror()</code> returns a (statically allocated) string describing
99
-    a <code>clerror</code> code:
100
-    <PRE>
101
-	if(ret) {
102
-	    printf("cl_loaddbdir() error: %s\n", cl_strerror(ret));
103
-	    exit(1);
104
-	}
105
-</PRE>
106
-    When database is loaded you must build the final trie with:
107
-    <PRE>
108
-	int cl_buildtrie(struct cl_node *root);
109
-</PRE>
110
-    In our example:
111
-    <PRE>
112
-	if((ret = cl_buildtrie(root)))
113
-	    printf("cl_buildtrie() error: %s\n", cl_strerror(ret));
114
-    </PRE>
115
-    Now you can scan a buffer, a descriptor or a file with:
116
-    <PRE>
117
-	int cl_scanbuff(const char *buffer, unsigned int length,
118
-	const char **virname, const struct cl_node *root);
119
-
120
-	int cl_scandesc(int desc, const char **virname, unsigned
121
-	long int *scanned, const struct cl_node *root, const
122
-	struct cl_limits *limits, int options);
123
-
124
-	int cl_scanfile(const char *filename, const char **virname,
125
-	unsigned long int *scanned, const struct cl_node *root,
126
-	const struct cl_limits *limits, int options);
127
-</PRE>
128
-    All the functions save a virus name address under <code>virname</code> pointer.
129
-    It points to a name in the trie structure thus it can't be released
130
-    directly. <code>cl_scandesc()</code> and <code>cl_scanfile()</code> can
131
-    increase the <code>scanned</code> value in <code>CL_COUNT_PRECISION</code> units,
132
-    they also support archive limits:
133
-    <PRE>
134
-	struct cl_limits {
135
-	    int maxreclevel; /* maximal recursion level */
136
-	    int maxfiles; /* maximal number of files to be
137
-			   * scanned within an archive
138
-			   */
139
-	    int maxratio; /* maximal compression ratio */
140
-	    short archivememlim; /* limit memory usage for bzip2 (0/1) */
141
-	    long int maxfilesize; /* files in an archive larger than
142
-				   * this value will not be scanned
143
-				   */
144
-	};
145
-</PRE>
146
-    The last argument in the <code>cl_scan</code> family  configures the scan
147
-    engine. It supports the following flags:
148
-    
149
-<UL>
150
-<LI><B>CL_RAW</B>
62
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html127"
63
+  HREF="http://antivirus.softlabs.info/">http://antivirus.softlabs.info/</A></TT>
64
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamscan
151 65
 <BR>
152
-It does nothing. Please use it (alone) if you don't want
153
-	      to scan any special files.
154
-</LI>
155
-<LI><B>CL_ARCHIVE</B>
156
-<BR>
157
-This flag enables the transparent archive scanning.
158
-</LI>
159
-<LI><B>CL_DISABLERAR</B>
160
-<BR>
161
-Disables the built-in RAR unpacker which is known to cause
162
-	      memory leaks.
163
-</LI>
164
-<LI><B>CL_ENCRYPTED</B>
165
-<BR>
166
-Marks encrypted archives as viruses (Encrypted.Zip,
167
-	      Encrypted.RAR).
168
-</LI>
169
-<LI><B>CL_MAIL</B>
170
-<BR>
171
-Required to scan various types of mail files.
172
-</LI>
173
-<LI><B>CL_OLE2</B>
174
-<BR>
175
-Enables support for Microsoft Office document files.
176
-    
177
-</LI>
178
-</UL>
179
-    All functions return 0 (<code>CL_CLEAN</code>) if the file is clean,
180
-    <code>CL_VIRUS</code> when virus is detected and an other value on failure.
181
-    <PRE>
182
-	    struct cl_limits limits;
183
-	    const char *virname;
184
-
185
-	memset(&amp;limits, 0, sizeof(struct cl_limits));
186
-	/* maximal number of files in archive */;
187
-	limits.maxfiles = 1000
188
-	/* maximal archived file size == 10 MB */
189
-	limits.maxfilesize = 10 * 1048576;
190
-	/* maximal recursion level */
191
-	limits.maxreclevel = 5;
192
-	/* maximal compression ratio */
193
-	limits.maxratio = 200;
194
-	/* disable memory limit for bzip2 scanner */
195
-	limits.archivememlim = 0;
196
-
197
-	if((ret = cl_scanfile("/home/zolw/test", &amp;virname, NULL, root,
198
-	&amp;limits, CL_ARCHIVE | CL_MAIL | CL_OLE2)) == CL_VIRUS) {
199
-	    printf("Detected %s virus.\n", virname);
200
-	} else {
201
-	    printf("No virus detected.\n");
202
-	    if(ret != CL_CLEAN)
203
-	        printf("Error: %s\n", cl_strerror(ret));
204
-	}
205
-</PRE>
206
-    Release the trie if you no longer need it:
207
-    <PRE>
208
-	void cl_freetrie(struct cl_node *root);
209
-</PRE>
210
-    You will find an example scanner in clamav sources (/example). All
211
-    programs based on libclamav must be linked against it:
212
-    <PRE>
213
-	gcc -Wall ex1.c -o ex1 -lclamav
214
-</PRE>
215
-    Enjoy !
66
+Softlabs AntiVirus is a generic anti-virus filter for incoming mail
67
+    servers on Unix, running as plugin for procmail. In addition, it plugs
68
+    to the Clam AntiVirus scanner (clamscan) if available.
216 69
 
217 70
 <P>
218
-<HR>
219
-<!--Navigation Panel-->
220
-<A NAME="tex2html1301"
221
-  HREF="node76.html">
222
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
223
- SRC="/usr/share/latex2html/icons/next.png"></A> 
224
-<A NAME="tex2html1297"
225
-  HREF="node74.html">
226
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
227
- SRC="/usr/share/latex2html/icons/up.png"></A> 
228
-<A NAME="tex2html1291"
229
-  HREF="node74.html">
230
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
231
- SRC="/usr/share/latex2html/icons/prev.png"></A> 
232
-<A NAME="tex2html1299"
233
-  HREF="node1.html">
234
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
235
- SRC="/usr/share/latex2html/icons/contents.png"></A>  
236
-<BR>
237
-<B> Next:</B> <A NAME="tex2html1302"
238
-  HREF="node76.html">Database reloading</A>
239
-<B> Up:</B> <A NAME="tex2html1298"
240
-  HREF="node74.html">LibClamAV</A>
241
-<B> Previous:</B> <A NAME="tex2html1292"
242
-  HREF="node74.html">LibClamAV</A>
243
- &nbsp <B>  <A NAME="tex2html1300"
244
-  HREF="node1.html">Contents</A></B> 
245
-<!--End of Navigation Panel-->
71
+<BR><HR>
246 72
 <ADDRESS>
247 73
 Tomasz Kojm
248
-2004-06-29
74
+2004-07-22
249 75
 </ADDRESS>
250 76
 </BODY>
251 77
 </HTML>
... ...
@@ -1,94 +1,74 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Database reloading</TITLE>
11
-<META NAME="description" CONTENT="Database reloading">
10
+<TITLE>OdeiaVir</TITLE>
11
+<META NAME="description" CONTENT="OdeiaVir">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22
-<LINK REL="next" HREF="node77.html">
23 21
 <LINK REL="previous" HREF="node75.html">
24
-<LINK REL="up" HREF="node74.html">
22
+<LINK REL="up" HREF="node28.html">
25 23
 <LINK REL="next" HREF="node77.html">
26 24
 </HEAD>
27 25
 
28 26
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1313"
27
+
28
+<DIV CLASS="navigation"><!--Navigation Panel-->
29
+<A NAME="tex2html1323"
31 30
   HREF="node77.html">
32 31
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 32
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1309"
35
-  HREF="node74.html">
33
+<A NAME="tex2html1319"
34
+  HREF="node28.html">
36 35
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 36
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1303"
37
+<A NAME="tex2html1315"
39 38
   HREF="node75.html">
40 39
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 40
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1311"
41
+<A NAME="tex2html1321"
43 42
   HREF="node1.html">
44 43
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 44
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 45
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1314"
48
-  HREF="node77.html">Scan engine</A>
49
-<B> Up:</B> <A NAME="tex2html1310"
50
-  HREF="node74.html">LibClamAV</A>
51
-<B> Previous:</B> <A NAME="tex2html1304"
52
-  HREF="node75.html">General API</A>
53
- &nbsp <B>  <A NAME="tex2html1312"
46
+<B> Next:</B> <A NAME="tex2html1324"
47
+  HREF="node77.html">LibClamAV</A>
48
+<B> Up:</B> <A NAME="tex2html1320"
49
+  HREF="node28.html">Third party software</A>
50
+<B> Previous:</B> <A NAME="tex2html1316"
51
+  HREF="node75.html">SoftlabsAV</A>
52
+ &nbsp; <B>  <A NAME="tex2html1322"
54 53
   HREF="node1.html">Contents</A></B> 
55 54
 <BR>
56
-<BR>
55
+<BR></DIV>
57 56
 <!--End of Navigation Panel-->
58 57
 
59
-<H2><A NAME="SECTION00072000000000000000">
60
-Database reloading</A>
58
+<H2><A NAME="SECTION000648000000000000000">
59
+OdeiaVir</A>
61 60
 </H2>
62
-    The most important thing is to keep the internal instance of the database
63
-    up to date. You can watch database changes with the <code>cl_stat</code>
64
-    functions family:
65
-    <PRE>
66
-	int cl_statinidir(const char *dirname, struct cl_stat *dbstat);
67
-	int cl_statchkdir(const struct cl_stat *dbstat);
68
-	int cl_statfree(struct cl_stat *dbstat);
69
-</PRE>
70
-    Initialization:
71
-    <PRE>
72
-	    struct cl_stat dbstat;
73
-    
74
-	memset(&amp;dbstat, 0, sizeof(struct cl_stat));
75
-	cl_statinidir(dbdir, &amp;dbstat);
76
-</PRE>
77
-    To check for a change you only need to call <code>cl_statchkdir</code>:
78
-    <PRE>
79
-	if(cl_statchkdir(&amp;dbstat) == 1) {
80
-	    reload_database...;
81
-	    cl_statfree(&amp;dbstat);
82
-	    cl_statinidir(cl_retdbdir(), &amp;dbstat);
83
-	}
84
-</PRE>
85
-    Remember to reinitialize the structure after a reload.
61
+    <SPAN  CLASS="textbf">Homepage:</SPAN> <TT><A NAME="tex2html128"
62
+  HREF="http://odeiavir.sourceforge.net/">http://odeiavir.sourceforge.net/</A></TT>
63
+<BR>    <SPAN  CLASS="textbf">Supports:</SPAN> clamdscan
64
+<BR>
65
+OdeiaVir is an e-mail filter for Qmail or Exim.
86 66
 
87 67
 <P>
88 68
 <BR><HR>
89 69
 <ADDRESS>
90 70
 Tomasz Kojm
91
-2004-06-29
71
+2004-07-22
92 72
 </ADDRESS>
93 73
 </BODY>
94 74
 </HTML>
... ...
@@ -1,90 +1,90 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Scan engine</TITLE>
11
-<META NAME="description" CONTENT="Scan engine">
10
+<TITLE>LibClamAV</TITLE>
11
+<META NAME="description" CONTENT="LibClamAV">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22
-<LINK REL="next" HREF="node78.html">
23
-<LINK REL="previous" HREF="node76.html">
24
-<LINK REL="up" HREF="node74.html">
21
+<LINK REL="next" HREF="node82.html">
22
+<LINK REL="previous" HREF="node28.html">
23
+<LINK REL="up" HREF="clamdoc.html">
25 24
 <LINK REL="next" HREF="node78.html">
26 25
 </HEAD>
27 26
 
28 27
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1325"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html1335"
31 31
   HREF="node78.html">
32 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1321"
35
-  HREF="node74.html">
34
+<A NAME="tex2html1331"
35
+  HREF="clamdoc.html">
36 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1315"
38
+<A NAME="tex2html1325"
39 39
   HREF="node76.html">
40 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1323"
42
+<A NAME="tex2html1333"
43 43
   HREF="node1.html">
44 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 46
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1326"
48
-  HREF="node78.html">CVD format</A>
49
-<B> Up:</B> <A NAME="tex2html1322"
50
-  HREF="node74.html">LibClamAV</A>
51
-<B> Previous:</B> <A NAME="tex2html1316"
52
-  HREF="node76.html">Database reloading</A>
53
- &nbsp <B>  <A NAME="tex2html1324"
47
+<B> Next:</B> <A NAME="tex2html1336"
48
+  HREF="node78.html">General API</A>
49
+<B> Up:</B> <A NAME="tex2html1332"
50
+  HREF="clamdoc.html">clamdoc</A>
51
+<B> Previous:</B> <A NAME="tex2html1326"
52
+  HREF="node76.html">OdeiaVir</A>
53
+ &nbsp; <B>  <A NAME="tex2html1334"
54 54
   HREF="node1.html">Contents</A></B> 
55 55
 <BR>
56
-<BR>
56
+<BR></DIV>
57 57
 <!--End of Navigation Panel-->
58 58
 
59
-<H2><A NAME="SECTION00073000000000000000"></A><A NAME="engine"></A>
60
-<BR>
61
-Scan engine
62
-</H2>
63
-    New versions of Clam AntiVirus use a mutation of the Aho-Corasick
64
-    pattern matching algorithm. The algorithm is based a finite state pattern
65
-    matching automaton [<A
66
- HREF="node87.html#clr">1</A>] and it's a generalization of the famous
67
-    Knuth-Morris-Pratt algorithm. Please take a look at the <code>matcher.h</code>
68
-    for data type definitions. The automaton is represented by a trie. It
69
-    is a rooted tree with some specific properties [<A
70
- HREF="node87.html#acwww">2</A>]. Every node
71
-    of the trie represents some state of the automaton. In our implementation,
72
-    the node is defined as follows:
73
-    <PRE>
74
-	struct cl_node {
75
-	    short int islast;
76
-	    struct cli_patt *list;
77
-	    int maxpatlen;
78
-	    struct node *next[NUM_CHILDS], *trans[NUM_CHILDS], *fail;
79
-	};
80
-</PRE>
81
-    [To be continued...]
59
+<H1><A NAME="SECTION00070000000000000000">
60
+LibClamAV</A>
61
+</H1>
62
+
63
+<P>
64
+libclamav may be used to add a virus protection to your software.
65
+    The library is thread-safe and can transparently recognize and scan
66
+    archives, mail files and MS Office document files.
82 67
 
83 68
 <P>
84 69
 <BR><HR>
70
+<!--Table of Child-Links-->
71
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
72
+
73
+<UL CLASS="ChildLinks">
74
+<LI><A NAME="tex2html1337"
75
+  HREF="node78.html">General API</A>
76
+<LI><A NAME="tex2html1338"
77
+  HREF="node79.html">Database reloading</A>
78
+<LI><A NAME="tex2html1339"
79
+  HREF="node80.html">Scan engine</A>
80
+<LI><A NAME="tex2html1340"
81
+  HREF="node81.html">CVD format</A>
82
+</UL>
83
+<!--End of Table of Child-Links-->
84
+<BR><HR>
85 85
 <ADDRESS>
86 86
 Tomasz Kojm
87
-2004-06-29
87
+2004-07-22
88 88
 </ADDRESS>
89 89
 </BODY>
90 90
 </HTML>
... ...
@@ -1,81 +1,252 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>CVD format</TITLE>
11
-<META NAME="description" CONTENT="CVD format">
10
+<TITLE>General API</TITLE>
11
+<META NAME="description" CONTENT="General API">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
21
+<LINK REL="next" HREF="node79.html">
22 22
 <LINK REL="previous" HREF="node77.html">
23
-<LINK REL="up" HREF="node74.html">
23
+<LINK REL="up" HREF="node77.html">
24 24
 <LINK REL="next" HREF="node79.html">
25 25
 </HEAD>
26 26
 
27 27
 <BODY >
28
-<!--Navigation Panel-->
29
-<A NAME="tex2html1335"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html1351"
30 31
   HREF="node79.html">
31 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
33
-<A NAME="tex2html1331"
34
-  HREF="node74.html">
34
+<A NAME="tex2html1347"
35
+  HREF="node77.html">
35 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
37
-<A NAME="tex2html1327"
38
+<A NAME="tex2html1341"
38 39
   HREF="node77.html">
39 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
-<A NAME="tex2html1333"
42
+<A NAME="tex2html1349"
42 43
   HREF="node1.html">
43 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
45 46
 <BR>
46
-<B> Next:</B> <A NAME="tex2html1336"
47
-  HREF="node79.html">Credits</A>
48
-<B> Up:</B> <A NAME="tex2html1332"
49
-  HREF="node74.html">LibClamAV</A>
50
-<B> Previous:</B> <A NAME="tex2html1328"
51
-  HREF="node77.html">Scan engine</A>
52
- &nbsp <B>  <A NAME="tex2html1334"
47
+<B> Next:</B> <A NAME="tex2html1352"
48
+  HREF="node79.html">Database reloading</A>
49
+<B> Up:</B> <A NAME="tex2html1348"
50
+  HREF="node77.html">LibClamAV</A>
51
+<B> Previous:</B> <A NAME="tex2html1342"
52
+  HREF="node77.html">LibClamAV</A>
53
+ &nbsp; <B>  <A NAME="tex2html1350"
53 54
   HREF="node1.html">Contents</A></B> 
54 55
 <BR>
55
-<BR>
56
+<BR></DIV>
56 57
 <!--End of Navigation Panel-->
57 58
 
58
-<H2><A NAME="SECTION00074000000000000000">
59
-CVD format</A>
59
+<H2><A NAME="SECTION00071000000000000000">
60
+General API</A>
60 61
 </H2>
61
-    CVD (ClamAV Virus Database) is a digitally signed tarball file that
62
-    contains one or more databases. You can find some useful information in the
63
-    ASCII header of the file. It's a 512 bytes long string with the following
64
-    colon separated fields:
62
+    Every program based on libclamav must include the <code>clamav.h</code> header
63
+    file:
64
+    <PRE>
65
+	#include &lt;clamav.h&gt;
66
+</PRE>
67
+    A first step is to initialize the scanning engine. There are three
68
+    functions available:
69
+    <PRE>
70
+	int cl_loaddb(const char *filename, struct cl_node **root,
71
+	int *virnum);
72
+
73
+	int cl_loaddbdir(const char *dirname, struct cl_node **root,
74
+	int *virnum);
75
+
76
+	const char *cl_retdbdir(void);
77
+</PRE>
78
+    <code>cl_loaddb()</code> loads a particular database, <code>cl_loaddbdir()</code>
79
+    loads all <SPAN  CLASS="textit">.cvd</SPAN> (and older <SPAN  CLASS="textit">.db</SPAN>, .db2) databases from a
80
+    directory <code>dirname</code>. <code>cl_retdbdir()</code> returns a hardcoded
81
+    database directory path. Initial internal database (Aho-Corasick tree,
82
+    trie; see <A HREF="node80.html#engine">6.3</A>) will be saved under <code>root</code> and a number of
83
+    signatures loaded will be <SPAN  CLASS="textbf">added</SPAN> <A NAME="tex2html129"
84
+  HREF="footnode.html#foot742"><SUP><SPAN CLASS="arabic">8</SPAN></SUP></A> to <code>virnum</code>. Pointer to the trie
85
+    must initially point to NULL. If you don't care about number of signatures
86
+    pass NULL as a third argument. <code>cl_loaddb</code> functions return 0 on
87
+    success and an other value on failure.
88
+    <PRE>
89
+	    struct cl_node *root = NULL;
90
+	    int ret;
91
+
92
+	ret = cl_loaddbdir(cl_retdbdir(), &amp;root, NULL);
93
+</PRE>
94
+    There's an elegant way to print libclamav's error codes:
65 95
     <PRE>
66
-ClamAV-VDB:build time:version:number of signatures:functionality
67
-level required:MD5 checksum:digital signature:builder name
96
+	const char *cl_strerror(int clerror);
68 97
 </PRE>
69
-    and can be easily parsed by scripts or with <code>sigtool --info</code>.
70
-    There are two CVD databases in ClamAV: <I>main.cvd</I> and <I>daily.cvd</I>
71
-    for daily updates. You can use <I>sigtool</I> to unpack a CVD file
72
-    (<code>--unpack</code>) and to list virus names (<code>--list-sigs</code>).
98
+    <code>cl_strerror()</code> returns a (statically allocated) string describing
99
+    a <code>clerror</code> code:
100
+    <PRE>
101
+	if(ret) {
102
+	    printf("cl_loaddbdir() error: %s\n", cl_strerror(ret));
103
+	    exit(1);
104
+	}
105
+</PRE>
106
+    When database is loaded you must build the final trie with:
107
+    <PRE>
108
+	int cl_buildtrie(struct cl_node *root);
109
+</PRE>
110
+    In our example:
111
+    <PRE>
112
+	if((ret = cl_buildtrie(root)))
113
+	    printf("cl_buildtrie() error: %s\n", cl_strerror(ret));
114
+    </PRE>
115
+    Now you can scan a buffer, a descriptor or a file with:
116
+    <PRE>
117
+	int cl_scanbuff(const char *buffer, unsigned int length,
118
+	const char **virname, const struct cl_node *root);
119
+
120
+	int cl_scandesc(int desc, const char **virname, unsigned
121
+	long int *scanned, const struct cl_node *root, const
122
+	struct cl_limits *limits, int options);
123
+
124
+	int cl_scanfile(const char *filename, const char **virname,
125
+	unsigned long int *scanned, const struct cl_node *root,
126
+	const struct cl_limits *limits, int options);
127
+</PRE>
128
+    All the functions save a virus name address under <code>virname</code> pointer.
129
+    It points to a name in the trie structure thus it can't be released
130
+    directly. <code>cl_scandesc()</code> and <code>cl_scanfile()</code> can
131
+    increase the <code>scanned</code> value in <code>CL_COUNT_PRECISION</code> units,
132
+    they also support archive limits:
133
+    <PRE>
134
+	struct cl_limits {
135
+	    int maxreclevel; /* maximal recursion level */
136
+	    int maxfiles; /* maximal number of files to be
137
+			   * scanned within an archive
138
+			   */
139
+	    int maxratio; /* maximal compression ratio */
140
+	    short archivememlim; /* limit memory usage for bzip2 (0/1) */
141
+	    long int maxfilesize; /* files in an archive larger than
142
+				   * this value will not be scanned
143
+				   */
144
+	};
145
+</PRE>
146
+    The last argument in the <code>cl_scan</code> family  configures the scan
147
+    engine. It supports the following flags:
148
+    
149
+<UL>
150
+<LI><SPAN  CLASS="textbf">CL_RAW</SPAN>
151
+<BR>
152
+It does nothing. Please use it (alone) if you don't want
153
+	      to scan any special files.
154
+</LI>
155
+<LI><SPAN  CLASS="textbf">CL_ARCHIVE</SPAN>
156
+<BR>
157
+This flag enables the transparent archive scanning.
158
+</LI>
159
+<LI><SPAN  CLASS="textbf">CL_DISABLERAR</SPAN>
160
+<BR>
161
+Disables the built-in RAR unpacker which is known to cause
162
+	      memory leaks.
163
+</LI>
164
+<LI><SPAN  CLASS="textbf">CL_ENCRYPTED</SPAN>
165
+<BR>
166
+Marks encrypted archives as viruses (Encrypted.Zip,
167
+	      Encrypted.RAR).
168
+</LI>
169
+<LI><SPAN  CLASS="textbf">CL_MAIL</SPAN>
170
+<BR>
171
+Required to scan various types of mail files.
172
+</LI>
173
+<LI><SPAN  CLASS="textbf">CL_OLE2</SPAN>
174
+<BR>
175
+Enables support for Microsoft Office document files.
176
+    
177
+</LI>
178
+</UL>
179
+    All functions return 0 (<code>CL_CLEAN</code>) if the file is clean,
180
+    <code>CL_VIRUS</code> when virus is detected and an other value on failure.
181
+    <PRE>
182
+	    struct cl_limits limits;
183
+	    const char *virname;
184
+
185
+	memset(&amp;limits, 0, sizeof(struct cl_limits));
186
+	/* maximal number of files in archive */;
187
+	limits.maxfiles = 1000
188
+	/* maximal archived file size == 10 MB */
189
+	limits.maxfilesize = 10 * 1048576;
190
+	/* maximal recursion level */
191
+	limits.maxreclevel = 5;
192
+	/* maximal compression ratio */
193
+	limits.maxratio = 200;
194
+	/* disable memory limit for bzip2 scanner */
195
+	limits.archivememlim = 0;
196
+
197
+	if((ret = cl_scanfile("/home/zolw/test", &amp;virname, NULL, root,
198
+	&amp;limits, CL_ARCHIVE | CL_MAIL | CL_OLE2)) == CL_VIRUS) {
199
+	    printf("Detected %s virus.\n", virname);
200
+	} else {
201
+	    printf("No virus detected.\n");
202
+	    if(ret != CL_CLEAN)
203
+	        printf("Error: %s\n", cl_strerror(ret));
204
+	}
205
+</PRE>
206
+    Release the trie if you no longer need it:
207
+    <PRE>
208
+	void cl_freetrie(struct cl_node *root);
209
+</PRE>
210
+    You will find an example scanner in clamav sources (/example). All
211
+    programs based on libclamav must be linked against it:
212
+    <PRE>
213
+	gcc -Wall ex1.c -o ex1 -lclamav
214
+</PRE>
215
+    Enjoy !
73 216
 
74 217
 <P>
75
-<BR><HR>
218
+
219
+<DIV CLASS="navigation"><HR>
220
+<!--Navigation Panel-->
221
+<A NAME="tex2html1351"
222
+  HREF="node79.html">
223
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
224
+ SRC="/usr/share/latex2html/icons/next.png"></A> 
225
+<A NAME="tex2html1347"
226
+  HREF="node77.html">
227
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
228
+ SRC="/usr/share/latex2html/icons/up.png"></A> 
229
+<A NAME="tex2html1341"
230
+  HREF="node77.html">
231
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
232
+ SRC="/usr/share/latex2html/icons/prev.png"></A> 
233
+<A NAME="tex2html1349"
234
+  HREF="node1.html">
235
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
236
+ SRC="/usr/share/latex2html/icons/contents.png"></A>  
237
+<BR>
238
+<B> Next:</B> <A NAME="tex2html1352"
239
+  HREF="node79.html">Database reloading</A>
240
+<B> Up:</B> <A NAME="tex2html1348"
241
+  HREF="node77.html">LibClamAV</A>
242
+<B> Previous:</B> <A NAME="tex2html1342"
243
+  HREF="node77.html">LibClamAV</A>
244
+ &nbsp; <B>  <A NAME="tex2html1350"
245
+  HREF="node1.html">Contents</A></B> </DIV>
246
+<!--End of Navigation Panel-->
76 247
 <ADDRESS>
77 248
 Tomasz Kojm
78
-2004-06-29
249
+2004-07-22
79 250
 </ADDRESS>
80 251
 </BODY>
81 252
 </HTML>
... ...
@@ -1,81 +1,94 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Credits</TITLE>
11
-<META NAME="description" CONTENT="Credits">
10
+<TITLE>Database reloading</TITLE>
11
+<META NAME="description" CONTENT="Database reloading">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22
-<LINK REL="next" HREF="node82.html">
23
-<LINK REL="previous" HREF="node74.html">
24
-<LINK REL="up" HREF="clamdoc.html">
21
+<LINK REL="next" HREF="node80.html">
22
+<LINK REL="previous" HREF="node78.html">
23
+<LINK REL="up" HREF="node77.html">
25 24
 <LINK REL="next" HREF="node80.html">
26 25
 </HEAD>
27 26
 
28 27
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1347"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html1363"
31 31
   HREF="node80.html">
32 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1343"
35
-  HREF="clamdoc.html">
34
+<A NAME="tex2html1359"
35
+  HREF="node77.html">
36 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1337"
38
+<A NAME="tex2html1353"
39 39
   HREF="node78.html">
40 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1345"
42
+<A NAME="tex2html1361"
43 43
   HREF="node1.html">
44 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 46
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1348"
48
-  HREF="node80.html">Contributors</A>
49
-<B> Up:</B> <A NAME="tex2html1344"
50
-  HREF="clamdoc.html">clamdoc</A>
51
-<B> Previous:</B> <A NAME="tex2html1338"
52
-  HREF="node78.html">CVD format</A>
53
- &nbsp <B>  <A NAME="tex2html1346"
47
+<B> Next:</B> <A NAME="tex2html1364"
48
+  HREF="node80.html">Scan engine</A>
49
+<B> Up:</B> <A NAME="tex2html1360"
50
+  HREF="node77.html">LibClamAV</A>
51
+<B> Previous:</B> <A NAME="tex2html1354"
52
+  HREF="node78.html">General API</A>
53
+ &nbsp; <B>  <A NAME="tex2html1362"
54 54
   HREF="node1.html">Contents</A></B> 
55 55
 <BR>
56
-<BR>
56
+<BR></DIV>
57 57
 <!--End of Navigation Panel-->
58 58
 
59
-<H1><A NAME="SECTION00080000000000000000">
60
-Credits</A>
61
-</H1>
59
+<H2><A NAME="SECTION00072000000000000000">
60
+Database reloading</A>
61
+</H2>
62
+    The most important thing is to keep the internal instance of the database
63
+    up to date. You can watch database changes with the <code>cl_stat</code>
64
+    functions family:
65
+    <PRE>
66
+	int cl_statinidir(const char *dirname, struct cl_stat *dbstat);
67
+	int cl_statchkdir(const struct cl_stat *dbstat);
68
+	int cl_statfree(struct cl_stat *dbstat);
69
+</PRE>
70
+    Initialization:
71
+    <PRE>
72
+	    struct cl_stat dbstat;
73
+    
74
+	memset(&amp;dbstat, 0, sizeof(struct cl_stat));
75
+	cl_statinidir(dbdir, &amp;dbstat);
76
+</PRE>
77
+    To check for a change you only need to call <code>cl_statchkdir</code>:
78
+    <PRE>
79
+	if(cl_statchkdir(&amp;dbstat) == 1) {
80
+	    reload_database...;
81
+	    cl_statfree(&amp;dbstat);
82
+	    cl_statinidir(cl_retdbdir(), &amp;dbstat);
83
+	}
84
+</PRE>
85
+    Remember to reinitialize the structure after a reload.
62 86
 
63 87
 <P>
64 88
 <BR><HR>
65
-<!--Table of Child-Links-->
66
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
67
-
68
-<UL>
69
-<LI><A NAME="tex2html1349"
70
-  HREF="node80.html">Contributors</A>
71
-<LI><A NAME="tex2html1350"
72
-  HREF="node81.html">Donors</A>
73
-</UL>
74
-<!--End of Table of Child-Links-->
75
-<BR><HR>
76 89
 <ADDRESS>
77 90
 Tomasz Kojm
78
-2004-06-29
91
+2004-07-22
79 92
 </ADDRESS>
80 93
 </BODY>
81 94
 </HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html448"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html459"
31 32
   HREF="node9.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html444"
35
+<A NAME="tex2html455"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html438"
39
+<A NAME="tex2html449"
39 40
   HREF="node7.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html446"
43
+<A NAME="tex2html457"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html449"
48
+<B> Next:</B> <A NAME="tex2html460"
48 49
   HREF="node9.html">Binary packages - snapshots</A>
49
-<B> Up:</B> <A NAME="tex2html445"
50
+<B> Up:</B> <A NAME="tex2html456"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html439"
52
+<B> Previous:</B> <A NAME="tex2html450"
52 53
   HREF="node7.html">Supported platforms</A>
53
- &nbsp <B>  <A NAME="tex2html447"
54
+ &nbsp; <B>  <A NAME="tex2html458"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00032000000000000000">
... ...
@@ -61,7 +61,7 @@ Binary packages - stable versions</A>
61 61
 </H2>
62 62
     
63 63
 <UL>
64
-<LI><B>Debian</B>
64
+<LI><SPAN  CLASS="textbf">Debian</SPAN>
65 65
 <BR>
66 66
 The package is maintained by Stephen Gran and Thomas Lamy.
67 67
 	ClamAV has been officially included in the Debian distribution
... ...
@@ -83,7 +83,7 @@ The package is maintained by Stephen Gran and Thomas Lamy.
83 83
 
84 84
 <P>
85 85
 </LI>
86
-<LI><B>RedHat - Fedora</B>
86
+<LI><SPAN  CLASS="textbf">RedHat - Fedora</SPAN>
87 87
 <BR>
88 88
 The packages are maintained by Petr Kristof and available at
89 89
 	<TT><A NAME="tex2html6"
... ...
@@ -98,7 +98,7 @@ The packages are maintained by Petr Kristof and available at
98 98
 
99 99
 <P>
100 100
 </LI>
101
-<LI><B>PLD Linux Distribution</B>
101
+<LI><SPAN  CLASS="textbf">PLD Linux Distribution</SPAN>
102 102
 <BR>
103 103
 The RPM packages for the Polish(ed) Linux Distribution are maintained
104 104
 	by Arkadiusz Miskiewicz (visit <TT><A NAME="tex2html8"
... ...
@@ -106,7 +106,7 @@ The RPM packages for the Polish(ed) Linux Distribution are maintained
106 106
 
107 107
 <P>
108 108
 </LI>
109
-<LI><B>Mandrake</B>
109
+<LI><SPAN  CLASS="textbf">Mandrake</SPAN>
110 110
 <BR>
111 111
 The RPM package for Mandrake is available on Mandrake's mirrors, see
112 112
 	<TT><A NAME="tex2html9"
... ...
@@ -117,13 +117,13 @@ The RPM package for Mandrake is available on Mandrake's mirrors, see
117 117
 
118 118
 <P>
119 119
 </LI>
120
-<LI><B>Slackware</B>
120
+<LI><SPAN  CLASS="textbf">Slackware</SPAN>
121 121
 <BR>
122 122
 Actual packages are available at: <TT><A NAME="tex2html11"
123 123
   HREF="http://linuxpackages.net">http://linuxpackages.net</A></TT>
124 124
 <P>
125 125
 </LI>
126
-<LI><B>FreeBSD</B>
126
+<LI><SPAN  CLASS="textbf">FreeBSD</SPAN>
127 127
 <BR>
128 128
 The official FreeBSD port is maintained by Masahiro Teramoto. There
129 129
 	are two version available: clamav and clamav-devel. You can find both
... ...
@@ -131,27 +131,27 @@ The official FreeBSD port is maintained by Masahiro Teramoto. There
131 131
 
132 132
 <P>
133 133
 </LI>
134
-<LI><B>OpenBSD</B>
134
+<LI><SPAN  CLASS="textbf">OpenBSD</SPAN>
135 135
 <BR>
136 136
 The unofficial port for OpenBSD is available at:
137 137
 	<TT><A NAME="tex2html12"
138 138
   HREF="http://www.fatbsd.com/openbsd/">http://www.fatbsd.com/openbsd/</A></TT>
139 139
 <P>
140 140
 </LI>
141
-<LI><B>NetBSD</B>
141
+<LI><SPAN  CLASS="textbf">NetBSD</SPAN>
142 142
 <BR>
143 143
 The official port is available.
144 144
 
145 145
 <P>
146 146
 </LI>
147
-<LI><B>AIX</B>
147
+<LI><SPAN  CLASS="textbf">AIX</SPAN>
148 148
 <BR>
149 149
 The binary packages for AIX are available in AIX PDSLIB, UCLA
150 150
 	<TT><A NAME="tex2html13"
151 151
   HREF="http://aixpdslib.seas.ucla.edu/packages/clamav.html">http://aixpdslib.seas.ucla.edu/packages/clamav.html</A></TT>
152 152
 <P>
153 153
 </LI>
154
-<LI><B>MS Windows</B>
154
+<LI><SPAN  CLASS="textbf">MS Windows</SPAN>
155 155
 <BR>
156 156
 All major features of ClamAV are implemented under Win32 using the
157 157
 	Cygwin compatibility layer. You can download a self installing
... ...
@@ -159,46 +159,47 @@ All major features of ClamAV are implemented under Win32 using the
159 159
   HREF="http://www.sosdg.org/clamav-win32/index.php">http://www.sosdg.org/clamav-win32/index.php</A></TT>
160 160
 <P>
161 161
 </LI>
162
-<LI><B>MS Windows - graphical version</B>
162
+<LI><SPAN  CLASS="textbf">MS Windows - graphical version</SPAN>
163 163
 <BR>
164 164
 A standalone GUI version is also available. See ClamWin
165
-	in the <I>Third Party Software</I> section (<A HREF="node67.html#clamwin">5.39</A>).
165
+	in the <SPAN  CLASS="textit">Third Party Software</SPAN> section (<A HREF="node69.html#clamwin">5.41</A>).
166 166
     
167 167
 </LI>
168 168
 </UL>
169 169
 
170 170
 <P>
171
-<HR>
171
+
172
+<DIV CLASS="navigation"><HR>
172 173
 <!--Navigation Panel-->
173
-<A NAME="tex2html448"
174
+<A NAME="tex2html459"
174 175
   HREF="node9.html">
175 176
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
176 177
  SRC="/usr/share/latex2html/icons/next.png"></A> 
177
-<A NAME="tex2html444"
178
+<A NAME="tex2html455"
178 179
   HREF="node6.html">
179 180
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
180 181
  SRC="/usr/share/latex2html/icons/up.png"></A> 
181
-<A NAME="tex2html438"
182
+<A NAME="tex2html449"
182 183
   HREF="node7.html">
183 184
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
184 185
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
185
-<A NAME="tex2html446"
186
+<A NAME="tex2html457"
186 187
   HREF="node1.html">
187 188
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
188 189
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
189 190
 <BR>
190
-<B> Next:</B> <A NAME="tex2html449"
191
+<B> Next:</B> <A NAME="tex2html460"
191 192
   HREF="node9.html">Binary packages - snapshots</A>
192
-<B> Up:</B> <A NAME="tex2html445"
193
+<B> Up:</B> <A NAME="tex2html456"
193 194
   HREF="node6.html">Installation</A>
194
-<B> Previous:</B> <A NAME="tex2html439"
195
+<B> Previous:</B> <A NAME="tex2html450"
195 196
   HREF="node7.html">Supported platforms</A>
196
- &nbsp <B>  <A NAME="tex2html447"
197
-  HREF="node1.html">Contents</A></B> 
197
+ &nbsp; <B>  <A NAME="tex2html458"
198
+  HREF="node1.html">Contents</A></B> </DIV>
198 199
 <!--End of Navigation Panel-->
199 200
 <ADDRESS>
200 201
 Tomasz Kojm
201
-2004-06-29
202
+2004-07-22
202 203
 </ADDRESS>
203 204
 </BODY>
204 205
 </HTML>
... ...
@@ -1,458 +1,90 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Contributors</TITLE>
11
-<META NAME="description" CONTENT="Contributors">
10
+<TITLE>Scan engine</TITLE>
11
+<META NAME="description" CONTENT="Scan engine">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22 21
 <LINK REL="next" HREF="node81.html">
23 22
 <LINK REL="previous" HREF="node79.html">
24
-<LINK REL="up" HREF="node79.html">
23
+<LINK REL="up" HREF="node77.html">
25 24
 <LINK REL="next" HREF="node81.html">
26 25
 </HEAD>
27 26
 
28 27
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1361"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html1375"
31 31
   HREF="node81.html">
32 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1357"
35
-  HREF="node79.html">
34
+<A NAME="tex2html1371"
35
+  HREF="node77.html">
36 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1351"
38
+<A NAME="tex2html1365"
39 39
   HREF="node79.html">
40 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1359"
42
+<A NAME="tex2html1373"
43 43
   HREF="node1.html">
44 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 46
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1362"
48
-  HREF="node81.html">Donors</A>
49
-<B> Up:</B> <A NAME="tex2html1358"
50
-  HREF="node79.html">Credits</A>
51
-<B> Previous:</B> <A NAME="tex2html1352"
52
-  HREF="node79.html">Credits</A>
53
- &nbsp <B>  <A NAME="tex2html1360"
47
+<B> Next:</B> <A NAME="tex2html1376"
48
+  HREF="node81.html">CVD format</A>
49
+<B> Up:</B> <A NAME="tex2html1372"
50
+  HREF="node77.html">LibClamAV</A>
51
+<B> Previous:</B> <A NAME="tex2html1366"
52
+  HREF="node79.html">Database reloading</A>
53
+ &nbsp; <B>  <A NAME="tex2html1374"
54 54
   HREF="node1.html">Contents</A></B> 
55 55
 <BR>
56
-<BR>
56
+<BR></DIV>
57 57
 <!--End of Navigation Panel-->
58 58
 
59
-<H2><A NAME="SECTION00081000000000000000">
60
-Contributors</A>
59
+<H2><A NAME="SECTION00073000000000000000"></A><A NAME="engine"></A>
60
+<BR>
61
+Scan engine
61 62
 </H2>
62
-    The following people contributed to our project in some way (providing
63
-    patches, bug reports, technical support, documentation, good ideas...):
64
-    
65
-<UL>
66
-<LI>Sergey Y.  Afonin &lt;asy*kraft-s.ru&gt;
67
-</LI>
68
-<LI>Robert Allerstorfer &lt;roal*anet.at&gt;
69
-</LI>
70
-<LI>Claudio Alonso &lt;cfalonso*yahoo.com&gt;
71
-</LI>
72
-<LI>Kamil Andrusz &lt;wizz*mniam.net&gt;
73
-</LI>
74
-<LI>Jean-Edouard Babin &lt;Jeb*jeb.com.fr&gt;
75
-</LI>
76
-<LI>Marc Baudoin &lt;babafou*babafou.eu.org&gt;
77
-</LI>
78
-<LI>Scott Beck &lt;sbeck*gossamer-threads.com&gt;
79
-</LI>
80
-<LI>Rolf Eike Beer &lt;eike*mail.math.uni-mannheim.de&gt;
81
-</LI>
82
-<LI>Rene Bellora &lt;rbellora*tecnoaccion.com.ar&gt;
83
-</LI>
84
-<LI>Hilko Bengen &lt;bengen*vdst-ka.inka.de&gt;
85
-</LI>
86
-<LI>Patrick Bihan-Faou &lt;patrick*mindstep.com&gt;
87
-</LI>
88
-<LI>Dale Blount &lt;dale*velocity.net&gt;
89
-</LI>
90
-<LI>Oliver Brandmueller &lt;ob*e-Gitt.NET&gt;
91
-</LI>
92
-<LI>Igor Brezac &lt;igor*ipass.net&gt;
93
-</LI>
94
-<LI>Brian Bruns &lt;bruns*2mbit.com&gt;
95
-</LI>
96
-<LI>Len Budney &lt;lbudney*pobox.com&gt;
97
-</LI>
98
-<LI>Matt Butt &lt;mattb*cre8tiv.com&gt;
99
-</LI>
100
-<LI>Eric I. Lopez Carreon &lt;elopezc*technitrade.com&gt;
101
-</LI>
102
-<LI>Andrey Cherezov &lt;andrey*cherezov.koenig.su&gt;
103
-</LI>
104
-<LI>Alex Cherney &lt;alex*cher.id.au&gt;
105
-</LI>
106
-<LI>Tom G. Christensen &lt;tgc*statsbiblioteket.dk&gt;
107
-</LI>
108
-<LI>Nicholas Chua &lt;nicholas*ncmbox.net&gt;
109
-</LI>
110
-<LI>Chris Conn &lt;cconn*abacom.com&gt;
111
-</LI>
112
-<LI>Christoph Cordes &lt;ib*precompiled.de&gt;
113
-</LI>
114
-<LI>Ole Craig &lt;olc*cs.umass.edu&gt;
115
-</LI>
116
-<LI>Eugene Crosser &lt;crosser*rol.ru&gt;
117
-</LI>
118
-<LI>Damien Curtain &lt;damien*pagefault.org&gt;
119
-</LI>
120
-<LI>Krisztian Czako &lt;slapic*linux.co.hu&gt;
121
-</LI>
122
-<LI>Diego d'Ambra &lt;da*softcom.dk&gt;
123
-</LI>
124
-<LI>Michael Dankov &lt;misha*btrc.ru&gt;
125
-</LI>
126
-<LI>Maxim Dounin &lt;mdounin*rambler-co.ru&gt;
127
-</LI>
128
-<LI>Alejandro Dubrovsky &lt;s328940*student.uq.edu.au&gt;
129
-</LI>
130
-<LI>Magnus Ekdahl &lt;magnus*debian.org&gt;
131
-</LI>
132
-<LI>Mehmet Ekiz &lt;ekizm*tbmm.gov.tr&gt;
133
-</LI>
134
-<LI>Jens Elkner &lt;elkner*linofee.org&gt;
135
-</LI>
136
-<LI>Fred van Engen &lt;fred*wooha.org&gt;
137
-</LI>
138
-<LI>Jason Englander &lt;jason*englanders.cc&gt;
139
-</LI>
140
-<LI>Oden Eriksson &lt;oeriksson*mandrakesoft.com&gt;
141
-</LI>
142
-<LI>Andy Fiddaman &lt;af*jeamland.org&gt;
143
-</LI>
144
-<LI>Edison Figueira Junior &lt;edison*brc.com.br&gt;
145
-</LI>
146
-<LI>David Ford &lt;david+cert*blue-labs.org&gt;
147
-</LI>
148
-<LI>Brian J. France &lt;list*firehawksystems.com&gt;
149
-</LI>
150
-<LI>Free Oscar &lt;freeoscar*wp.pl&gt;
151
-</LI>
152
-<LI>Martin Fuxa &lt;yeti*email.cz&gt;
153
-</LI>
154
-<LI>Piotr Gackiewicz &lt;gacek*intertele.pl&gt;
155
-</LI>
156
-<LI>Jeremy Garcia &lt;jeremy*linuxquestions.org&gt;
157
-</LI>
158
-<LI>Dean Gaudet &lt;dean-clamav*arctic.org&gt;
159
-</LI>
160
-<LI>Michel Gaudet &lt;Michel.Gaudet*ehess.fr&gt;
161
-</LI>
162
-<LI>Philippe Gay &lt;ph.gay*free.fr&gt;
163
-</LI>
164
-<LI>Nick Gazaloff &lt;nick*sbin.org&gt;
165
-</LI>
166
-<LI>Luca 'NERvOus' Gibelli &lt;nervous*nervous.it&gt;
167
-</LI>
168
-<LI>Scott Gifford &lt;sgifford*suspectclass.com&gt;
169
-</LI>
170
-<LI>Wieslaw Glod &lt;wkg*x2.pl&gt;
171
-</LI>
172
-<LI>Stephen Gran &lt;steve*lobefin.net&gt;
173
-</LI>
174
-<LI>Matthew A. Grant &lt;grantma*anathoth.gen.nz&gt;
175
-</LI>
176
-<LI>Hrvoje Habjanic &lt;hrvoje.habjanic*zg.hinet.hr&gt;
177
-</LI>
178
-<LI>Michal Hajduczenia &lt;michalis*mat.uni.torun.pl&gt;
179
-</LI>
180
-<LI>Jean-Christophe Heger &lt;jcheger*acytec.com&gt;
181
-</LI>
182
-<LI>Anders Herbjornsen &lt;andersh*gar.no&gt;
183
-</LI>
184
-<LI>Paul Hoadley &lt;paulh*logixsquad.net&gt;
185
-</LI>
186
-<LI>Robert Hogan &lt;robert*roberthogan.net&gt;
187
-</LI>
188
-<LI>Przemyslaw Holowczyc &lt;doozer*skc.com.pl&gt;
189
-</LI>
190
-<LI>Thomas W. Holt Jr. &lt;twh*cohesive.net&gt;
191
-</LI>
192
-<LI>James F.  Hranicky &lt;jfh*cise.ufl.edu&gt;
193
-</LI>
194
-<LI>Douglas J Hunley &lt;doug*hunley.homeip.net&gt;
195
-</LI>
196
-<LI>Kurt Huwig &lt;kurt*iku-netz.de&gt;
197
-</LI>
198
-<LI>Andy Igoshin &lt;ai*vsu.ru&gt;
199
-</LI>
200
-<LI>Jay &lt;sysop-clamav*coronastreet.net&gt;
201
-</LI>
202
-<LI>Stephane Jeannenot &lt;stephane.jeannenot*wanadoo.fr&gt;
203
-</LI>
204
-<LI>Dave Jones &lt;dave*kalkbay.co.za&gt;
205
-</LI>
206
-<LI>Jesper Juhl &lt;juhl*dif.dk&gt;
207
-</LI>
208
-<LI>Alex Kah &lt;alex*narfonix.com&gt;
209
-</LI>
210
-<LI>Stefan Kaltenbrunner &lt;mm-mailinglist*madness.at&gt;
211
-</LI>
212
-<LI>Lloyd Kamara &lt;l.kamara*imperial.ac.uk&gt;
213
-</LI>
214
-<LI>Kazuhiko &lt;kazuhiko*fdiary.net&gt;
215
-</LI>
216
-<LI>Tomasz Klim &lt;tomek*euroneto.pl&gt;
217
-</LI>
218
-<LI>Robbert Kouprie &lt;robbert*exx.nl&gt;
219
-</LI>
220
-<LI>Martin Kraft &lt;martin.kraft*fal.de&gt;
221
-</LI>
222
-<LI>Petr Kristof &lt;Kristof.P*fce.vutbr.cz&gt;
223
-</LI>
224
-<LI>Henk Kuipers &lt;henk*opensourcesolutions.nl&gt;
225
-</LI>
226
-<LI>Nigel Kukard &lt;nkukard*lbsd.net&gt;
227
-</LI>
228
-<LI>Dr Andrzej Kurpiel &lt;akurpiel*mat.uni.torun.pl&gt;
229
-</LI>
230
-<LI>Thomas Lamy &lt;Thomas.Lamy*in-online.net&gt;
231
-</LI>
232
-<LI>Marty Lee &lt;marty*maui.co.uk&gt;
233
-</LI>
234
-<LI>Dennis Leeuw &lt;dleeuw*made-it.com&gt;
235
-</LI>
236
-<LI>Martin Lesser &lt;admin-debian*bettercom.de&gt;
237
-</LI>
238
-<LI>Peter N Lewis &lt;peter*stairways.com.au&gt;
239
-</LI>
240
-<LI>James Lick &lt;jlick*drivel.com&gt;
241
-</LI>
242
-<LI>Mike Loewen &lt;mloewen*sturgeon.cac.psu.edu&gt;
243
-</LI>
244
-<LI>David S. Madole &lt;david*madole.net&gt;
245
-</LI>
246
-<LI>Thomas Madsen &lt;tm*softcom.dk&gt;
247
-</LI>
248
-<LI>Bill Maidment &lt;bill*maidment.com.au&gt;
249
-</LI>
250
-<LI>Joe Maimon &lt;jmaimon*ttec.com&gt;
251
-</LI>
252
-<LI>Andrey V. Malyshev &lt;amal*krasn.ru&gt;
253
-</LI>
254
-<LI>Stefan Martig &lt;sm*officeco.ch&gt;
255
-</LI>
256
-<LI>Chris Masters" &lt;cmasters*insl.co.uk&gt;
257
-</LI>
258
-<LI>Serhiy V. Matveyev &lt;matveyev*uatele.com&gt;
259
-</LI>
260
-<LI>Reinhard Max &lt;max*suse.de&gt;
261
-</LI>
262
-<LI>Brian May &lt;bam*debian.org&gt;
263
-</LI>
264
-<LI>Ken McKittrick &lt;klmac*usadatanet.com&gt;
265
-</LI>
266
-<LI>Chris van Meerendonk &lt;cvm*castel.nl&gt;
267
-</LI>
268
-<LI>Andrey J. Melnikoff &lt;temnota*kmv.ru&gt;
269
-</LI>
270
-<LI>Damian Menscher &lt;menscher*uiuc.edu&gt;
271
-</LI>
272
-<LI>Arkadiusz Miskiewicz &lt;misiek*pld-linux.org&gt;
273
-</LI>
274
-<LI>Mark Mielke &lt;mark*mark.mielke.cc&gt;
275
-</LI>
276
-<LI>Jo Mills &lt;Jonathan.Mills*frequentis.com&gt;
277
-</LI>
278
-<LI>Dustin Mollo &lt;dustin.mollo*sonoma.edu&gt;
279
-</LI>
280
-<LI>Doug Monroe &lt;doug*planetconnect.com&gt;
281
-</LI>
282
-<LI>Alex S Moore &lt;asmoore*edge.net&gt;
283
-</LI>
284
-<LI>Dirk Mueller &lt;mueller*kde.org&gt;
285
-</LI>
286
-<LI>Flinn Mueller&lt;flinn*activeintra.net&gt;
287
-</LI>
288
-<LI>Hendrik Muhs &lt;Hendrik.Muhs*student.uni-magdeburg.de&gt;
289
-</LI>
290
-<LI>Farit Nabiullin <TT><A NAME="tex2html126"
291
-  HREF="http://program.farit.ru">http://program.farit.ru</A></TT>
292
-</LI>
293
-<LI>Nemosoft Unv. &lt;nemosoft*smcc.demon.nl&gt;
294
-</LI>
295
-<LI>Wojciech Noworyta &lt;wnow*konarski.edu.pl&gt;
296
-</LI>
297
-<LI>Jorgen Norgaard &lt;jnp*anneli.dk&gt;
298
-</LI>
299
-<LI>Fajar A. Nugraha &lt;fajar*telkom.co.id&gt;
300
-</LI>
301
-<LI>Joe Oaks &lt;joe.oaks*hp.com&gt;
302
-</LI>
303
-<LI>Washington Odhiambo &lt;wash*wananchi.com&gt;
304
-</LI>
305
-<LI>Masaki Ogawa &lt;proc*mac.com&gt;
306
-</LI>
307
-<LI>Phil Oleson &lt;oz*nixil.net&gt;
308
-</LI>
309
-<LI>Martijn van Oosterhout &lt;kleptog*svana.org&gt;
310
-</LI>
311
-<LI>OpenAntiVirus Team (<TT><A NAME="tex2html127"
312
-  HREF="http://www.OpenAntiVirus.org">http://www.OpenAntiVirus.org</A></TT>)
313
-</LI>
314
-<LI>Tomasz Papszun &lt;tomek*lodz.tpsa.pl&gt;
315
-</LI>
316
-<LI>Eric Parsonage &lt;eric*eparsonage.com&gt;
317
-</LI>
318
-<LI>Oliver Paukstadt &lt;pstadt*stud.fh-heilbronn.de&gt;
319
-</LI>
320
-<LI>Christian Pelissier &lt;Christian.Pelissier*onera.fr&gt;
321
-</LI>
322
-<LI>Rudolph Pereira &lt;r.pereira*isu.usyd.edu.au&gt;
323
-</LI>
324
-<LI>Ed Phillips &lt;ed*UDel.Edu&gt;
325
-</LI>
326
-<LI>Andreas Piesk &lt;Andreas.Piesk*heise.de&gt;
327
-</LI>
328
-<LI>Alex Pleiner &lt;pleiner*zeitform.de&gt;
329
-</LI>
330
-<LI>Ant La Porte &lt;ant*dvere.net&gt;
331
-</LI>
332
-<LI>Sergei Pronin &lt;sp*finndesign.fi&gt;
333
-</LI>
334
-<LI>Thomas Quinot &lt;thomas*cuivre.fr.eu.org&gt;
335
-</LI>
336
-<LI>Ed Ravin &lt;eravin*panix.com&gt;
337
-</LI>
338
-<LI>Brian A. Reiter &lt;breiter*wolfereiter.com&gt;
339
-</LI>
340
-<LI>Rupert Roesler-Schmidt &lt;r.roesler-schmidt*uplink.at&gt;
341
-</LI>
342
-<LI>David Sanchez &lt;dsanchez*veloxia.com&gt;
343
-</LI>
344
-<LI>David Santinoli &lt;david*santinoli.com&gt;
345
-</LI>
346
-<LI>Vijay Sarvepalli &lt;vssarvep*office.uncg.edu&gt;
347
-</LI>
348
-<LI>Martin Schitter
349
-</LI>
350
-<LI>Theo Schlossnagle &lt;jesus*omniti.com&gt;
351
-</LI>
352
-<LI>Enrico Scholz &lt;enrico.scholz*informatik.tu-chemnitz.de&gt;
353
-</LI>
354
-<LI>Karina Schwarz &lt;k.schwarz*uplink.at&gt;
355
-</LI>
356
-<LI>Scsi &lt;scsi*softland.ru&gt;
357
-</LI>
358
-<LI>Dr Matthew J Seaman &lt;m.seaman*infracaninophile.co.uk&gt;
359
-</LI>
360
-<LI>Hector M. Rulot Segovia &lt;Hector.Rulot*uv.es&gt;
361
-</LI>
362
-<LI>Omer Faruk Sen &lt;ofsen*enderunix.org&gt;
363
-</LI>
364
-<LI>Sergey &lt;a_s_y*sama.ru&gt;
365
-</LI>
366
-<LI>Tuomas Silen &lt;tuomas.silen*nodeta.fi&gt;
367
-</LI>
368
-<LI>Al Smith &lt;ajs+clamav*aeschi.ch.eu.org&gt;
369
-</LI>
370
-<LI>Kevin Spicer &lt;kevin*kevinspicer.co.uk&gt;
371
-</LI>
372
-<LI>Ole Stanstrup &lt;ole*stanstrup.dk&gt;
373
-</LI>
374
-<LI>Adam Stein &lt;adam*scan.mc.xerox.com&gt;
375
-</LI>
376
-<LI>Steve &lt;steveb*webtribe.net&gt;
377
-</LI>
378
-<LI>Richard Stevenson &lt;richard*endace.com&gt;
379
-</LI>
380
-<LI>Matt Sullivan &lt;matt*sullivan.gen.nz&gt;
381
-</LI>
382
-<LI>Dr Zbigniew Szewczak &lt;zssz*mat.uni.torun.pl&gt;
383
-</LI>
384
-<LI>Joe Talbott &lt;josepht*cstone.net&gt;
385
-</LI>
386
-<LI>Gernot Tenchio &lt;g.tenchio*telco-tech.de&gt;
387
-</LI>
388
-<LI>Masahiro Teramoto &lt;markun*onohara.to&gt;
389
-</LI>
390
-<LI>Ryan Thompson &lt;clamav*sasknow.com&gt;
391
-</LI>
392
-<LI>Michael L. Torrie &lt;torriem*chem.byu.edu&gt;
393
-</LI>
394
-<LI>Trashware &lt;trashware*gmx.net&gt;
395
-</LI>
396
-<LI>Matthew Trent &lt;mtrent*localaccess.com&gt;
397
-</LI>
398
-<LI>Daniel Mario Vega &lt;dv5a*dc.uba.ar&gt;
399
-</LI>
400
-<LI>Laurent Wacrenier &lt;lwa*teaser.fr&gt;
401
-</LI>
402
-<LI>Charlie Watts &lt;cewatts*brainstorminternet.net&gt;
403
-</LI>
404
-<LI>Nicklaus Wicker &lt;n.wicker*cnk-networks.de&gt;
405
-</LI>
406
-<LI>David Woakes &lt;david*mitredata.co.uk&gt;
407
-</LI>
408
-<LI>Troy Wollenslegel &lt;troy*intranet.org&gt;
409
-</LI>
410
-<LI>Dale Woolridge &lt;dwoolridge*drh.net&gt;
411
-</LI>
412
-<LI>Takumi Yamane &lt;yamtak*b-session.com&gt;
413
-</LI>
414
-<LI>Youza Youzovic &lt;youza*post.cz&gt;
415
-</LI>
416
-<LI>Leonid Zeitlin &lt;lz*europe.com&gt;
417
-</LI>
418
-<LI>ZMan Z. &lt;x86zman*go-a-way.dyndns.org&gt;
419
-</LI>
420
-<LI>Andoni Zubimendi &lt;andoni*lpsat.net&gt;
421
-</LI>
422
-</UL>
63
+    New versions of Clam AntiVirus use a mutation of the Aho-Corasick
64
+    pattern matching algorithm. The algorithm is based a finite state pattern
65
+    matching automaton [<A
66
+ HREF="node90.html#clr">1</A>] and it's a generalization of the famous
67
+    Knuth-Morris-Pratt algorithm. Please take a look at the <code>matcher.h</code>
68
+    for data type definitions. The automaton is represented by a trie. It
69
+    is a rooted tree with some specific properties [<A
70
+ HREF="node90.html#acwww">2</A>]. Every node
71
+    of the trie represents some state of the automaton. In our implementation,
72
+    the node is defined as follows:
73
+    <PRE>
74
+	struct cl_node {
75
+	    short int islast;
76
+	    struct cli_patt *list;
77
+	    int maxpatlen;
78
+	    struct node *next[NUM_CHILDS], *trans[NUM_CHILDS], *fail;
79
+	};
80
+</PRE>
81
+    [To be continued...]
423 82
 
424 83
 <P>
425
-<HR>
426
-<!--Navigation Panel-->
427
-<A NAME="tex2html1361"
428
-  HREF="node81.html">
429
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
430
- SRC="/usr/share/latex2html/icons/next.png"></A> 
431
-<A NAME="tex2html1357"
432
-  HREF="node79.html">
433
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
434
- SRC="/usr/share/latex2html/icons/up.png"></A> 
435
-<A NAME="tex2html1351"
436
-  HREF="node79.html">
437
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
438
- SRC="/usr/share/latex2html/icons/prev.png"></A> 
439
-<A NAME="tex2html1359"
440
-  HREF="node1.html">
441
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
442
- SRC="/usr/share/latex2html/icons/contents.png"></A>  
443
-<BR>
444
-<B> Next:</B> <A NAME="tex2html1362"
445
-  HREF="node81.html">Donors</A>
446
-<B> Up:</B> <A NAME="tex2html1358"
447
-  HREF="node79.html">Credits</A>
448
-<B> Previous:</B> <A NAME="tex2html1352"
449
-  HREF="node79.html">Credits</A>
450
- &nbsp <B>  <A NAME="tex2html1360"
451
-  HREF="node1.html">Contents</A></B> 
452
-<!--End of Navigation Panel-->
84
+<BR><HR>
453 85
 <ADDRESS>
454 86
 Tomasz Kojm
455
-2004-06-29
87
+2004-07-22
456 88
 </ADDRESS>
457 89
 </BODY>
458 90
 </HTML>
... ...
@@ -1,243 +1,81 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Donors</TITLE>
11
-<META NAME="description" CONTENT="Donors">
10
+<TITLE>CVD format</TITLE>
11
+<META NAME="description" CONTENT="CVD format">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22 21
 <LINK REL="previous" HREF="node80.html">
23
-<LINK REL="up" HREF="node79.html">
22
+<LINK REL="up" HREF="node77.html">
24 23
 <LINK REL="next" HREF="node82.html">
25 24
 </HEAD>
26 25
 
27 26
 <BODY >
28
-<!--Navigation Panel-->
29
-<A NAME="tex2html1371"
27
+
28
+<DIV CLASS="navigation"><!--Navigation Panel-->
29
+<A NAME="tex2html1385"
30 30
   HREF="node82.html">
31 31
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32 32
  SRC="/usr/share/latex2html/icons/next.png"></A> 
33
-<A NAME="tex2html1367"
34
-  HREF="node79.html">
33
+<A NAME="tex2html1381"
34
+  HREF="node77.html">
35 35
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36 36
  SRC="/usr/share/latex2html/icons/up.png"></A> 
37
-<A NAME="tex2html1363"
37
+<A NAME="tex2html1377"
38 38
   HREF="node80.html">
39 39
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40 40
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
-<A NAME="tex2html1369"
41
+<A NAME="tex2html1383"
42 42
   HREF="node1.html">
43 43
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44 44
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
45 45
 <BR>
46
-<B> Next:</B> <A NAME="tex2html1372"
47
-  HREF="node82.html">Authors</A>
48
-<B> Up:</B> <A NAME="tex2html1368"
49
-  HREF="node79.html">Credits</A>
50
-<B> Previous:</B> <A NAME="tex2html1364"
51
-  HREF="node80.html">Contributors</A>
52
- &nbsp <B>  <A NAME="tex2html1370"
46
+<B> Next:</B> <A NAME="tex2html1386"
47
+  HREF="node82.html">Credits</A>
48
+<B> Up:</B> <A NAME="tex2html1382"
49
+  HREF="node77.html">LibClamAV</A>
50
+<B> Previous:</B> <A NAME="tex2html1378"
51
+  HREF="node80.html">Scan engine</A>
52
+ &nbsp; <B>  <A NAME="tex2html1384"
53 53
   HREF="node1.html">Contents</A></B> 
54 54
 <BR>
55
-<BR>
55
+<BR></DIV>
56 56
 <!--End of Navigation Panel-->
57 57
 
58
-<H2><A NAME="SECTION00082000000000000000">
59
-Donors</A>
58
+<H2><A NAME="SECTION00074000000000000000">
59
+CVD format</A>
60 60
 </H2>
61
-    We received financial support from (this is not a full list because we
62
-    only list people from whom we received an agreement):
63
-    
64
-<UL>
65
-<LI>ActiveIntra.net Inc. (<TT><A NAME="tex2html128"
66
-  HREF="http://www.activeintra.net">http://www.activeintra.net</A></TT>)
67
-</LI>
68
-<LI>Advance Healthcare Group (<TT><A NAME="tex2html129"
69
-  HREF="http://www.ahgl.com.au">http://www.ahgl.com.au</A></TT>)
70
-</LI>
71
-<LI>Anonymous donor from Colorado, US
72
-</LI>
73
-<LI>Atlas College (<TT><A NAME="tex2html130"
74
-  HREF="http://www.atlascollege.nl">http://www.atlascollege.nl</A></TT>)
75
-</LI>
76
-<LI>AWD Online (<TT><A NAME="tex2html131"
77
-  HREF="http://www.awdonline.com">http://www.awdonline.com</A></TT>)
78
-</LI>
79
-<LI>Norman E. Brake, Jr.
80
-</LI>
81
-<LI>cedarcreeksoftware.com (<TT><A NAME="tex2html132"
82
-  HREF="http://www.cedarcreeksoftware.com">http://www.cedarcreeksoftware.com</A></TT>)
83
-</LI>
84
-<LI>Thanos Chatziathanassiou
85
-</LI>
86
-<LI>Cheahch from Singapore
87
-</LI>
88
-<LI>Joe Cooper
89
-</LI>
90
-<LI>Steve Donegan (<TT><A NAME="tex2html133"
91
-  HREF="http://www.donegan.org">http://www.donegan.org</A></TT>)
92
-</LI>
93
-<LI>Dynamic Network Services, Inc (<TT><A NAME="tex2html134"
94
-  HREF="http://www.dyndns.org">http://www.dyndns.org</A></TT>)
95
-</LI>
96
-<LI>Electric Embers
97
-</LI>
98
-<LI>Epublica
99
-</LI>
100
-<LI>Bernhard Erdmann
101
-</LI>
102
-<LI>David Eriksson (<TT><A NAME="tex2html135"
103
-  HREF="http://www.2good.nu">http://www.2good.nu</A></TT>)
104
-</LI>
105
-<LI>Explido Software USA Inc. (<TT><A NAME="tex2html136"
106
-  HREF="http://www.explido.us">http://www.explido.us</A></TT>)
107
-</LI>
108
-<LI>David Farrick
109
-</LI>
110
-<LI>Petr Ferschmann (<TT><A NAME="tex2html137"
111
-  HREF="http://petr.ferschmann.cz/">http://petr.ferschmann.cz/</A></TT>)
112
-</LI>
113
-<LI>Andries Filmer (<TT><A NAME="tex2html138"
114
-  HREF="http://www.netexpo.nl">http://www.netexpo.nl</A></TT>)
115
-</LI>
116
-<LI>Jack Fung
117
-</LI>
118
-<LI>GANDI (<TT><A NAME="tex2html139"
119
-  HREF="http://www.gandi.net">http://www.gandi.net</A></TT>)
120
-</LI>
121
-<LI>Jeremy Garcia (<TT><A NAME="tex2html140"
122
-  HREF="http://www.linuxquestions.org">http://www.linuxquestions.org</A></TT>)
123
-</LI>
124
-<LI>GBC Internet Service Center GmbH (<TT><A NAME="tex2html141"
125
-  HREF="http://www.gbc.net">http://www.gbc.net</A></TT>)
126
-</LI>
127
-<LI>GCS Tech (<TT><A NAME="tex2html142"
128
-  HREF="http://www.gcstech.net">http://www.gcstech.net</A></TT>)
129
-</LI>
130
-<LI>Todd Goodman
131
-</LI>
132
-<LI>Bill Gradwohl (<TT><A NAME="tex2html143"
133
-  HREF="http://www.ycc.com">http://www.ycc.com</A></TT>)
134
-</LI>
135
-<LI>Grain-of-Salt Consulting
136
-</LI>
137
-<LI>IDEAL Software GmbH (<TT><A NAME="tex2html144"
138
-  HREF="http://www.IdealSoftware.com">http://www.IdealSoftware.com</A></TT>)
139
-</LI>
140
-<LI>Invisik Corporation (<TT><A NAME="tex2html145"
141
-  HREF="http://www.invisik.com">http://www.invisik.com</A></TT>)
142
-</LI>
143
-<LI>Keith (<TT><A NAME="tex2html146"
144
-  HREF="http://www.textpad.com">http://www.textpad.com</A></TT>)
145
-</LI>
146
-<LI>Brad Koehn
147
-</LI>
148
-<LI>Logic Partners Inc. (<TT><A NAME="tex2html147"
149
-  HREF="http://www.logicpartners.com">http://www.logicpartners.com</A></TT>)
150
-</LI>
151
-<LI>Midcoast Internet Solutions
152
-</LI>
153
-<LI>Mimecast (<TT><A NAME="tex2html148"
154
-  HREF="http://www.mimecast.com">http://www.mimecast.com</A></TT>)
155
-</LI>
156
-<LI>Paul Morgan
157
-</LI>
158
-<LI>Michael Nolan (<TT><A NAME="tex2html149"
159
-  HREF="http://www.michaelnolan.co.uk">http://www.michaelnolan.co.uk</A></TT>)
160
-</LI>
161
-<LI>Oneworkspace.com (<TT><A NAME="tex2html150"
162
-  HREF="http://www.oneworkspace.com">http://www.oneworkspace.com</A></TT>)
163
-</LI>
164
-<LI>Origin Solutions (<TT><A NAME="tex2html151"
165
-  HREF="http://www.originsolutions.com.au">http://www.originsolutions.com.au</A></TT>)
166
-</LI>
167
-<LI>outermedia GmbH (<TT><A NAME="tex2html152"
168
-  HREF="http://www.outermedia.de">http://www.outermedia.de</A></TT>)
169
-</LI>
170
-<LI>Thodoris Pitikaris
171
-</LI>
172
-<LI>Luke Reeves (<TT><A NAME="tex2html153"
173
-  HREF="http://www.neuro-tech.net">http://www.neuro-tech.net</A></TT>)
174
-</LI>
175
-<LI>Roaring Penguin Software Inc. (<TT><A NAME="tex2html154"
176
-  HREF="http://www.roaringpenguin.com/">http://www.roaringpenguin.com/</A></TT>)
177
-</LI>
178
-<LI>Tim Scoff
179
-</LI>
180
-<LI>Seattle Server (<TT><A NAME="tex2html155"
181
-  HREF="http://www.seattleserver.com">http://www.seattleserver.com</A></TT>)
182
-</LI>
183
-<LI>Solutions In A Box (<TT><A NAME="tex2html156"
184
-  HREF="http://www.siab.com.au">http://www.siab.com.au</A></TT>)
185
-</LI>
186
-<LI>Stephane Rault
187
-</LI>
188
-<LI>Fernando Augusto Medeiros Silva (<TT><A NAME="tex2html157"
189
-  HREF="http://www.linuxplace.com.br">http://www.linuxplace.com.br</A></TT>)
190
-</LI>
191
-<LI>StarBand (<TT><A NAME="tex2html158"
192
-  HREF="http://www.starband.com">http://www.starband.com</A></TT>)
193
-</LI>
194
-<LI>Brad Tarver
195
-</LI>
196
-<LI>Per Reedtz Thomsen
197
-</LI>
198
-<LI>Jeremy Vanderburg (<TT><A NAME="tex2html159"
199
-  HREF="http://www.jeremytech.com">http://www.jeremytech.com</A></TT>)
200
-</LI>
201
-<LI>Webzone Srl (<TT><A NAME="tex2html160"
202
-  HREF="http://www.webzone.it">http://www.webzone.it</A></TT>)
203
-</LI>
204
-<LI>Nicklaus Wicker
205
-    
206
-</LI>
207
-</UL>
61
+    CVD (ClamAV Virus Database) is a digitally signed tarball file that
62
+    contains one or more databases. You can find some useful information in the
63
+    ASCII header of the file. It's a 512 bytes long string with the following
64
+    colon separated fields:
65
+    <PRE>
66
+ClamAV-VDB:build time:version:number of signatures:functionality
67
+level required:MD5 checksum:digital signature:builder name
68
+</PRE>
69
+    and can be easily parsed by scripts or with <code>sigtool --info</code>.
70
+    There are two CVD databases in ClamAV: <SPAN  CLASS="textit">main.cvd</SPAN> and <SPAN  CLASS="textit">daily.cvd</SPAN>
71
+    for daily updates. You can use <SPAN  CLASS="textit">sigtool</SPAN> to unpack a CVD file
72
+    (<code>--unpack</code>) and to list virus names (<code>--list-sigs</code>).
208 73
 
209 74
 <P>
210
-<HR>
211
-<!--Navigation Panel-->
212
-<A NAME="tex2html1371"
213
-  HREF="node82.html">
214
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
215
- SRC="/usr/share/latex2html/icons/next.png"></A> 
216
-<A NAME="tex2html1367"
217
-  HREF="node79.html">
218
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
219
- SRC="/usr/share/latex2html/icons/up.png"></A> 
220
-<A NAME="tex2html1363"
221
-  HREF="node80.html">
222
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
223
- SRC="/usr/share/latex2html/icons/prev.png"></A> 
224
-<A NAME="tex2html1369"
225
-  HREF="node1.html">
226
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
227
- SRC="/usr/share/latex2html/icons/contents.png"></A>  
228
-<BR>
229
-<B> Next:</B> <A NAME="tex2html1372"
230
-  HREF="node82.html">Authors</A>
231
-<B> Up:</B> <A NAME="tex2html1368"
232
-  HREF="node79.html">Credits</A>
233
-<B> Previous:</B> <A NAME="tex2html1364"
234
-  HREF="node80.html">Contributors</A>
235
- &nbsp <B>  <A NAME="tex2html1370"
236
-  HREF="node1.html">Contents</A></B> 
237
-<!--End of Navigation Panel-->
75
+<BR><HR>
238 76
 <ADDRESS>
239 77
 Tomasz Kojm
240
-2004-06-29
78
+2004-07-22
241 79
 </ADDRESS>
242 80
 </BODY>
243 81
 </HTML>
... ...
@@ -1,83 +1,81 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Authors</TITLE>
11
-<META NAME="description" CONTENT="Authors">
10
+<TITLE>Credits</TITLE>
11
+<META NAME="description" CONTENT="Credits">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22
-<LINK REL="next" HREF="node87.html">
23
-<LINK REL="previous" HREF="node79.html">
21
+<LINK REL="next" HREF="node85.html">
22
+<LINK REL="previous" HREF="node77.html">
24 23
 <LINK REL="up" HREF="clamdoc.html">
25 24
 <LINK REL="next" HREF="node83.html">
26 25
 </HEAD>
27 26
 
28 27
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1383"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html1397"
31 31
   HREF="node83.html">
32 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1379"
34
+<A NAME="tex2html1393"
35 35
   HREF="clamdoc.html">
36 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1373"
38
+<A NAME="tex2html1387"
39 39
   HREF="node81.html">
40 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1381"
42
+<A NAME="tex2html1395"
43 43
   HREF="node1.html">
44 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 46
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1384"
48
-  HREF="node83.html">Virus database maintainers</A>
49
-<B> Up:</B> <A NAME="tex2html1380"
47
+<B> Next:</B> <A NAME="tex2html1398"
48
+  HREF="node83.html">Contributors</A>
49
+<B> Up:</B> <A NAME="tex2html1394"
50 50
   HREF="clamdoc.html">clamdoc</A>
51
-<B> Previous:</B> <A NAME="tex2html1374"
52
-  HREF="node81.html">Donors</A>
53
- &nbsp <B>  <A NAME="tex2html1382"
51
+<B> Previous:</B> <A NAME="tex2html1388"
52
+  HREF="node81.html">CVD format</A>
53
+ &nbsp; <B>  <A NAME="tex2html1396"
54 54
   HREF="node1.html">Contents</A></B> 
55 55
 <BR>
56
-<BR>
56
+<BR></DIV>
57 57
 <!--End of Navigation Panel-->
58 58
 
59
-<H1><A NAME="SECTION00090000000000000000">
60
-Authors</A>
59
+<H1><A NAME="SECTION00080000000000000000">
60
+Credits</A>
61 61
 </H1>
62
-    <BR><HR>
62
+
63
+<P>
64
+<BR><HR>
63 65
 <!--Table of Child-Links-->
64 66
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
65 67
 
66
-<UL>
67
-<LI><A NAME="tex2html1385"
68
-  HREF="node83.html">Virus database maintainers</A>
69
-<LI><A NAME="tex2html1386"
70
-  HREF="node84.html">Network management</A>
71
-<LI><A NAME="tex2html1387"
72
-  HREF="node85.html">Graphics</A>
73
-<LI><A NAME="tex2html1388"
74
-  HREF="node86.html">Core developers</A>
68
+<UL CLASS="ChildLinks">
69
+<LI><A NAME="tex2html1399"
70
+  HREF="node83.html">Contributors</A>
71
+<LI><A NAME="tex2html1400"
72
+  HREF="node84.html">Donors</A>
75 73
 </UL>
76 74
 <!--End of Table of Child-Links-->
77 75
 <BR><HR>
78 76
 <ADDRESS>
79 77
 Tomasz Kojm
80
-2004-06-29
78
+2004-07-22
81 79
 </ADDRESS>
82 80
 </BODY>
83 81
 </HTML>
... ...
@@ -1,20 +1,19 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Virus database maintainers</TITLE>
11
-<META NAME="description" CONTENT="Virus database maintainers">
10
+<TITLE>Contributors</TITLE>
11
+<META NAME="description" CONTENT="Contributors">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,70 +25,437 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1399"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html1411"
31 32
   HREF="node84.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1395"
35
+<A NAME="tex2html1407"
35 36
   HREF="node82.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1389"
39
+<A NAME="tex2html1401"
39 40
   HREF="node82.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1397"
43
+<A NAME="tex2html1409"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1400"
48
-  HREF="node84.html">Network management</A>
49
-<B> Up:</B> <A NAME="tex2html1396"
50
-  HREF="node82.html">Authors</A>
51
-<B> Previous:</B> <A NAME="tex2html1390"
52
-  HREF="node82.html">Authors</A>
53
- &nbsp <B>  <A NAME="tex2html1398"
48
+<B> Next:</B> <A NAME="tex2html1412"
49
+  HREF="node84.html">Donors</A>
50
+<B> Up:</B> <A NAME="tex2html1408"
51
+  HREF="node82.html">Credits</A>
52
+<B> Previous:</B> <A NAME="tex2html1402"
53
+  HREF="node82.html">Credits</A>
54
+ &nbsp; <B>  <A NAME="tex2html1410"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59
-<H2><A NAME="SECTION00091000000000000000">
60
-Virus database maintainers</A>
60
+<H2><A NAME="SECTION00081000000000000000">
61
+Contributors</A>
61 62
 </H2>
62
-    Virus database is a heart of every anti-virus software. The following
63
-    people care ClamAV's heart to be in a fine condition:
63
+    The following people contributed to our project in some way (providing
64
+    patches, bug reports, technical support, documentation, good ideas...):
64 65
     
65 66
 <UL>
66
-<LI>aCaB &lt;acab*clamav.net&gt;
67
+<LI>Sergey Y.  Afonin &lt;asy*kraft-s.ru&gt;
67 68
 </LI>
68
-<LI>Christoph Cordes &lt;ccordes*clamav.net&gt;
69
+<LI>Robert Allerstorfer &lt;roal*anet.at&gt;
69 70
 </LI>
70
-<LI>Diego D'Ambra &lt;diego*clamav.net&gt;
71
+<LI>Claudio Alonso &lt;cfalonso*yahoo.com&gt;
71 72
 </LI>
72
-<LI>Jason Englander &lt;jason*clamav.net&gt;
73
+<LI>Kamil Andrusz &lt;wizz*mniam.net&gt;
73 74
 </LI>
74
-<LI>Tomasz Kojm &lt;tkojm*clamav.net&gt;
75
+<LI>Jean-Edouard Babin &lt;Jeb*jeb.com.fr&gt;
75 76
 </LI>
76
-<LI>Denis De Messemacker &lt;ddm*clamav.net&gt;
77
+<LI>Marc Baudoin &lt;babafou*babafou.eu.org&gt;
77 78
 </LI>
78
-<LI>Tomasz Papszun &lt;tomek*clamav.net&gt;
79
+<LI>Scott Beck &lt;sbeck*gossamer-threads.com&gt;
79 80
 </LI>
80
-<LI>Trog &lt;trog*clamav.net&gt; (macro viruses)
81
-    
81
+<LI>Rolf Eike Beer &lt;eike*mail.math.uni-mannheim.de&gt;
82
+</LI>
83
+<LI>Rene Bellora &lt;rbellora*tecnoaccion.com.ar&gt;
84
+</LI>
85
+<LI>Hilko Bengen &lt;bengen*vdst-ka.inka.de&gt;
86
+</LI>
87
+<LI>Patrick Bihan-Faou &lt;patrick*mindstep.com&gt;
88
+</LI>
89
+<LI>Martin Blapp &lt;mb*imp.ch&gt;
90
+</LI>
91
+<LI>Dale Blount &lt;dale*velocity.net&gt;
92
+</LI>
93
+<LI>Oliver Brandmueller &lt;ob*e-Gitt.NET&gt;
94
+</LI>
95
+<LI>Igor Brezac &lt;igor*ipass.net&gt;
96
+</LI>
97
+<LI>Brian Bruns &lt;bruns*2mbit.com&gt;
98
+</LI>
99
+<LI>Len Budney &lt;lbudney*pobox.com&gt;
100
+</LI>
101
+<LI>Matt Butt &lt;mattb*cre8tiv.com&gt;
102
+</LI>
103
+<LI>Eric I. Lopez Carreon &lt;elopezc*technitrade.com&gt;
104
+</LI>
105
+<LI>Andrey Cherezov &lt;andrey*cherezov.koenig.su&gt;
106
+</LI>
107
+<LI>Alex Cherney &lt;alex*cher.id.au&gt;
108
+</LI>
109
+<LI>Tom G. Christensen &lt;tgc*statsbiblioteket.dk&gt;
110
+</LI>
111
+<LI>Nicholas Chua &lt;nicholas*ncmbox.net&gt;
112
+</LI>
113
+<LI>Chris Conn &lt;cconn*abacom.com&gt;
114
+</LI>
115
+<LI>Christoph Cordes &lt;ib*precompiled.de&gt;
116
+</LI>
117
+<LI>Ole Craig &lt;olc*cs.umass.edu&gt;
118
+</LI>
119
+<LI>Eugene Crosser &lt;crosser*rol.ru&gt;
120
+</LI>
121
+<LI>Damien Curtain &lt;damien*pagefault.org&gt;
122
+</LI>
123
+<LI>Krisztian Czako &lt;slapic*linux.co.hu&gt;
124
+</LI>
125
+<LI>Diego d'Ambra &lt;da*softcom.dk&gt;
126
+</LI>
127
+<LI>Michael Dankov &lt;misha*btrc.ru&gt;
128
+</LI>
129
+<LI>Maxim Dounin &lt;mdounin*rambler-co.ru&gt;
130
+</LI>
131
+<LI>Alejandro Dubrovsky &lt;s328940*student.uq.edu.au&gt;
132
+</LI>
133
+<LI>Magnus Ekdahl &lt;magnus*debian.org&gt;
134
+</LI>
135
+<LI>Mehmet Ekiz &lt;ekizm*tbmm.gov.tr&gt;
136
+</LI>
137
+<LI>Jens Elkner &lt;elkner*linofee.org&gt;
138
+</LI>
139
+<LI>Fred van Engen &lt;fred*wooha.org&gt;
140
+</LI>
141
+<LI>Jason Englander &lt;jason*englanders.cc&gt;
142
+</LI>
143
+<LI>Oden Eriksson &lt;oeriksson*mandrakesoft.com&gt;
144
+</LI>
145
+<LI>Andy Fiddaman &lt;af*jeamland.org&gt;
146
+</LI>
147
+<LI>Edison Figueira Junior &lt;edison*brc.com.br&gt;
148
+</LI>
149
+<LI>David Ford &lt;david+cert*blue-labs.org&gt;
150
+</LI>
151
+<LI>Brian J. France &lt;list*firehawksystems.com&gt;
152
+</LI>
153
+<LI>Free Oscar &lt;freeoscar*wp.pl&gt;
154
+</LI>
155
+<LI>Martin Fuxa &lt;yeti*email.cz&gt;
156
+</LI>
157
+<LI>Piotr Gackiewicz &lt;gacek*intertele.pl&gt;
158
+</LI>
159
+<LI>Jeremy Garcia &lt;jeremy*linuxquestions.org&gt;
160
+</LI>
161
+<LI>Dean Gaudet &lt;dean-clamav*arctic.org&gt;
162
+</LI>
163
+<LI>Michel Gaudet &lt;Michel.Gaudet*ehess.fr&gt;
164
+</LI>
165
+<LI>Philippe Gay &lt;ph.gay*free.fr&gt;
166
+</LI>
167
+<LI>Nick Gazaloff &lt;nick*sbin.org&gt;
168
+</LI>
169
+<LI>Luca 'NERvOus' Gibelli &lt;nervous*nervous.it&gt;
170
+</LI>
171
+<LI>Scott Gifford &lt;sgifford*suspectclass.com&gt;
172
+</LI>
173
+<LI>Wieslaw Glod &lt;wkg*x2.pl&gt;
174
+</LI>
175
+<LI>Stephen Gran &lt;steve*lobefin.net&gt;
176
+</LI>
177
+<LI>Matthew A. Grant &lt;grantma*anathoth.gen.nz&gt;
178
+</LI>
179
+<LI>Hrvoje Habjanic &lt;hrvoje.habjanic*zg.hinet.hr&gt;
180
+</LI>
181
+<LI>Michal Hajduczenia &lt;michalis*mat.uni.torun.pl&gt;
182
+</LI>
183
+<LI>Jean-Christophe Heger &lt;jcheger*acytec.com&gt;
184
+</LI>
185
+<LI>Anders Herbjornsen &lt;andersh*gar.no&gt;
186
+</LI>
187
+<LI>Paul Hoadley &lt;paulh*logixsquad.net&gt;
188
+</LI>
189
+<LI>Robert Hogan &lt;robert*roberthogan.net&gt;
190
+</LI>
191
+<LI>Przemyslaw Holowczyc &lt;doozer*skc.com.pl&gt;
192
+</LI>
193
+<LI>Thomas W. Holt Jr. &lt;twh*cohesive.net&gt;
194
+</LI>
195
+<LI>James F.  Hranicky &lt;jfh*cise.ufl.edu&gt;
196
+</LI>
197
+<LI>Douglas J Hunley &lt;doug*hunley.homeip.net&gt;
198
+</LI>
199
+<LI>Kurt Huwig &lt;kurt*iku-netz.de&gt;
200
+</LI>
201
+<LI>Andy Igoshin &lt;ai*vsu.ru&gt;
202
+</LI>
203
+<LI>Jay &lt;sysop-clamav*coronastreet.net&gt;
204
+</LI>
205
+<LI>Stephane Jeannenot &lt;stephane.jeannenot*wanadoo.fr&gt;
206
+</LI>
207
+<LI>Dave Jones &lt;dave*kalkbay.co.za&gt;
208
+</LI>
209
+<LI>Jesper Juhl &lt;juhl*dif.dk&gt;
210
+</LI>
211
+<LI>Alex Kah &lt;alex*narfonix.com&gt;
212
+</LI>
213
+<LI>Stefan Kaltenbrunner &lt;mm-mailinglist*madness.at&gt;
214
+</LI>
215
+<LI>Lloyd Kamara &lt;l.kamara*imperial.ac.uk&gt;
216
+</LI>
217
+<LI>Kazuhiko &lt;kazuhiko*fdiary.net&gt;
218
+</LI>
219
+<LI>Tomasz Klim &lt;tomek*euroneto.pl&gt;
220
+</LI>
221
+<LI>Robbert Kouprie &lt;robbert*exx.nl&gt;
222
+</LI>
223
+<LI>Martin Kraft &lt;martin.kraft*fal.de&gt;
224
+</LI>
225
+<LI>Petr Kristof &lt;Kristof.P*fce.vutbr.cz&gt;
226
+</LI>
227
+<LI>Henk Kuipers &lt;henk*opensourcesolutions.nl&gt;
228
+</LI>
229
+<LI>Nigel Kukard &lt;nkukard*lbsd.net&gt;
230
+</LI>
231
+<LI>Dr Andrzej Kurpiel &lt;akurpiel*mat.uni.torun.pl&gt;
232
+</LI>
233
+<LI>Thomas Lamy &lt;Thomas.Lamy*in-online.net&gt;
234
+</LI>
235
+<LI>Marty Lee &lt;marty*maui.co.uk&gt;
236
+</LI>
237
+<LI>Dennis Leeuw &lt;dleeuw*made-it.com&gt;
238
+</LI>
239
+<LI>Martin Lesser &lt;admin-debian*bettercom.de&gt;
240
+</LI>
241
+<LI>Peter N Lewis &lt;peter*stairways.com.au&gt;
242
+</LI>
243
+<LI>James Lick &lt;jlick*drivel.com&gt;
244
+</LI>
245
+<LI>Mike Loewen &lt;mloewen*sturgeon.cac.psu.edu&gt;
246
+</LI>
247
+<LI>David S. Madole &lt;david*madole.net&gt;
248
+</LI>
249
+<LI>Thomas Madsen &lt;tm*softcom.dk&gt;
250
+</LI>
251
+<LI>Bill Maidment &lt;bill*maidment.com.au&gt;
252
+</LI>
253
+<LI>Joe Maimon &lt;jmaimon*ttec.com&gt;
254
+</LI>
255
+<LI>Andrey V. Malyshev &lt;amal*krasn.ru&gt;
256
+</LI>
257
+<LI>Stefan Martig &lt;sm*officeco.ch&gt;
258
+</LI>
259
+<LI>Chris Masters" &lt;cmasters*insl.co.uk&gt;
260
+</LI>
261
+<LI>Serhiy V. Matveyev &lt;matveyev*uatele.com&gt;
262
+</LI>
263
+<LI>Reinhard Max &lt;max*suse.de&gt;
264
+</LI>
265
+<LI>Brian May &lt;bam*debian.org&gt;
266
+</LI>
267
+<LI>Ken McKittrick &lt;klmac*usadatanet.com&gt;
268
+</LI>
269
+<LI>Chris van Meerendonk &lt;cvm*castel.nl&gt;
270
+</LI>
271
+<LI>Andrey J. Melnikoff &lt;temnota*kmv.ru&gt;
272
+</LI>
273
+<LI>Damian Menscher &lt;menscher*uiuc.edu&gt;
274
+</LI>
275
+<LI>Arkadiusz Miskiewicz &lt;misiek*pld-linux.org&gt;
276
+</LI>
277
+<LI>Mark Mielke &lt;mark*mark.mielke.cc&gt;
278
+</LI>
279
+<LI>Jo Mills &lt;Jonathan.Mills*frequentis.com&gt;
280
+</LI>
281
+<LI>Dustin Mollo &lt;dustin.mollo*sonoma.edu&gt;
282
+</LI>
283
+<LI>Doug Monroe &lt;doug*planetconnect.com&gt;
284
+</LI>
285
+<LI>Alex S Moore &lt;asmoore*edge.net&gt;
286
+</LI>
287
+<LI>Dirk Mueller &lt;mueller*kde.org&gt;
288
+</LI>
289
+<LI>Flinn Mueller&lt;flinn*activeintra.net&gt;
290
+</LI>
291
+<LI>Hendrik Muhs &lt;Hendrik.Muhs*student.uni-magdeburg.de&gt;
292
+</LI>
293
+<LI>Farit Nabiullin <TT><A NAME="tex2html130"
294
+  HREF="http://program.farit.ru">http://program.farit.ru</A></TT>
295
+</LI>
296
+<LI>Nemosoft Unv. &lt;nemosoft*smcc.demon.nl&gt;
297
+</LI>
298
+<LI>Wojciech Noworyta &lt;wnow*konarski.edu.pl&gt;
299
+</LI>
300
+<LI>Jorgen Norgaard &lt;jnp*anneli.dk&gt;
301
+</LI>
302
+<LI>Fajar A. Nugraha &lt;fajar*telkom.co.id&gt;
303
+</LI>
304
+<LI>Joe Oaks &lt;joe.oaks*hp.com&gt;
305
+</LI>
306
+<LI>Washington Odhiambo &lt;wash*wananchi.com&gt;
307
+</LI>
308
+<LI>Masaki Ogawa &lt;proc*mac.com&gt;
309
+</LI>
310
+<LI>Phil Oleson &lt;oz*nixil.net&gt;
311
+</LI>
312
+<LI>Martijn van Oosterhout &lt;kleptog*svana.org&gt;
313
+</LI>
314
+<LI>OpenAntiVirus Team (<TT><A NAME="tex2html131"
315
+  HREF="http://www.OpenAntiVirus.org">http://www.OpenAntiVirus.org</A></TT>)
316
+</LI>
317
+<LI>Tomasz Papszun &lt;tomek*lodz.tpsa.pl&gt;
318
+</LI>
319
+<LI>Eric Parsonage &lt;eric*eparsonage.com&gt;
320
+</LI>
321
+<LI>Oliver Paukstadt &lt;pstadt*stud.fh-heilbronn.de&gt;
322
+</LI>
323
+<LI>Christian Pelissier &lt;Christian.Pelissier*onera.fr&gt;
324
+</LI>
325
+<LI>Rudolph Pereira &lt;r.pereira*isu.usyd.edu.au&gt;
326
+</LI>
327
+<LI>Ed Phillips &lt;ed*UDel.Edu&gt;
328
+</LI>
329
+<LI>Andreas Piesk &lt;Andreas.Piesk*heise.de&gt;
330
+</LI>
331
+<LI>Alex Pleiner &lt;pleiner*zeitform.de&gt;
332
+</LI>
333
+<LI>Ant La Porte &lt;ant*dvere.net&gt;
334
+</LI>
335
+<LI>Sergei Pronin &lt;sp*finndesign.fi&gt;
336
+</LI>
337
+<LI>Thomas Quinot &lt;thomas*cuivre.fr.eu.org&gt;
338
+</LI>
339
+<LI>Ed Ravin &lt;eravin*panix.com&gt;
340
+</LI>
341
+<LI>Brian A. Reiter &lt;breiter*wolfereiter.com&gt;
342
+</LI>
343
+<LI>Rupert Roesler-Schmidt &lt;r.roesler-schmidt*uplink.at&gt;
344
+</LI>
345
+<LI>David Sanchez &lt;dsanchez*veloxia.com&gt;
346
+</LI>
347
+<LI>David Santinoli &lt;david*santinoli.com&gt;
348
+</LI>
349
+<LI>Vijay Sarvepalli &lt;vssarvep*office.uncg.edu&gt;
350
+</LI>
351
+<LI>Martin Schitter
352
+</LI>
353
+<LI>Theo Schlossnagle &lt;jesus*omniti.com&gt;
354
+</LI>
355
+<LI>Enrico Scholz &lt;enrico.scholz*informatik.tu-chemnitz.de&gt;
356
+</LI>
357
+<LI>Karina Schwarz &lt;k.schwarz*uplink.at&gt;
358
+</LI>
359
+<LI>Scsi &lt;scsi*softland.ru&gt;
360
+</LI>
361
+<LI>Dr Matthew J Seaman &lt;m.seaman*infracaninophile.co.uk&gt;
362
+</LI>
363
+<LI>Hector M. Rulot Segovia &lt;Hector.Rulot*uv.es&gt;
364
+</LI>
365
+<LI>Omer Faruk Sen &lt;ofsen*enderunix.org&gt;
366
+</LI>
367
+<LI>Sergey &lt;a_s_y*sama.ru&gt;
368
+</LI>
369
+<LI>Tuomas Silen &lt;tuomas.silen*nodeta.fi&gt;
370
+</LI>
371
+<LI>Al Smith &lt;ajs+clamav*aeschi.ch.eu.org&gt;
372
+</LI>
373
+<LI>Kevin Spicer &lt;kevin*kevinspicer.co.uk&gt;
374
+</LI>
375
+<LI>Ole Stanstrup &lt;ole*stanstrup.dk&gt;
376
+</LI>
377
+<LI>Adam Stein &lt;adam*scan.mc.xerox.com&gt;
378
+</LI>
379
+<LI>Steve &lt;steveb*webtribe.net&gt;
380
+</LI>
381
+<LI>Richard Stevenson &lt;richard*endace.com&gt;
382
+</LI>
383
+<LI>Matt Sullivan &lt;matt*sullivan.gen.nz&gt;
384
+</LI>
385
+<LI>Dr Zbigniew Szewczak &lt;zssz*mat.uni.torun.pl&gt;
386
+</LI>
387
+<LI>Joe Talbott &lt;josepht*cstone.net&gt;
388
+</LI>
389
+<LI>Gernot Tenchio &lt;g.tenchio*telco-tech.de&gt;
390
+</LI>
391
+<LI>Masahiro Teramoto &lt;markun*onohara.to&gt;
392
+</LI>
393
+<LI>Ryan Thompson &lt;clamav*sasknow.com&gt;
394
+</LI>
395
+<LI>Michael L. Torrie &lt;torriem*chem.byu.edu&gt;
396
+</LI>
397
+<LI>Trashware &lt;trashware*gmx.net&gt;
398
+</LI>
399
+<LI>Matthew Trent &lt;mtrent*localaccess.com&gt;
400
+</LI>
401
+<LI>Daniel Mario Vega &lt;dv5a*dc.uba.ar&gt;
402
+</LI>
403
+<LI>Laurent Wacrenier &lt;lwa*teaser.fr&gt;
404
+</LI>
405
+<LI>Charlie Watts &lt;cewatts*brainstorminternet.net&gt;
406
+</LI>
407
+<LI>Nicklaus Wicker &lt;n.wicker*cnk-networks.de&gt;
408
+</LI>
409
+<LI>David Woakes &lt;david*mitredata.co.uk&gt;
410
+</LI>
411
+<LI>Troy Wollenslegel &lt;troy*intranet.org&gt;
412
+</LI>
413
+<LI>Dale Woolridge &lt;dwoolridge*drh.net&gt;
414
+</LI>
415
+<LI>Takumi Yamane &lt;yamtak*b-session.com&gt;
416
+</LI>
417
+<LI>Youza Youzovic &lt;youza*post.cz&gt;
418
+</LI>
419
+<LI>Leonid Zeitlin &lt;lz*europe.com&gt;
420
+</LI>
421
+<LI>ZMan Z. &lt;x86zman*go-a-way.dyndns.org&gt;
422
+</LI>
423
+<LI>Andoni Zubimendi &lt;andoni*lpsat.net&gt;
82 424
 </LI>
83 425
 </UL>
84
-    Our database includes the virus database (about 5000 signatures) from
85
-<BR>    <TT><A NAME="tex2html161"
86
-  HREF="OpenAntiVirus.org">OpenAntiVirus.org</A></TT>.
87 426
 
88 427
 <P>
89
-<BR><HR>
428
+
429
+<DIV CLASS="navigation"><HR>
430
+<!--Navigation Panel-->
431
+<A NAME="tex2html1411"
432
+  HREF="node84.html">
433
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
434
+ SRC="/usr/share/latex2html/icons/next.png"></A> 
435
+<A NAME="tex2html1407"
436
+  HREF="node82.html">
437
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
438
+ SRC="/usr/share/latex2html/icons/up.png"></A> 
439
+<A NAME="tex2html1401"
440
+  HREF="node82.html">
441
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
442
+ SRC="/usr/share/latex2html/icons/prev.png"></A> 
443
+<A NAME="tex2html1409"
444
+  HREF="node1.html">
445
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
446
+ SRC="/usr/share/latex2html/icons/contents.png"></A>  
447
+<BR>
448
+<B> Next:</B> <A NAME="tex2html1412"
449
+  HREF="node84.html">Donors</A>
450
+<B> Up:</B> <A NAME="tex2html1408"
451
+  HREF="node82.html">Credits</A>
452
+<B> Previous:</B> <A NAME="tex2html1402"
453
+  HREF="node82.html">Credits</A>
454
+ &nbsp; <B>  <A NAME="tex2html1410"
455
+  HREF="node1.html">Contents</A></B> </DIV>
456
+<!--End of Navigation Panel-->
90 457
 <ADDRESS>
91 458
 Tomasz Kojm
92
-2004-06-29
459
+2004-07-22
93 460
 </ADDRESS>
94 461
 </BODY>
95 462
 </HTML>
... ...
@@ -1,75 +1,258 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Network management</TITLE>
11
-<META NAME="description" CONTENT="Network management">
10
+<TITLE>Donors</TITLE>
11
+<META NAME="description" CONTENT="Donors">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22
-<LINK REL="next" HREF="node85.html">
23 21
 <LINK REL="previous" HREF="node83.html">
24 22
 <LINK REL="up" HREF="node82.html">
25 23
 <LINK REL="next" HREF="node85.html">
26 24
 </HEAD>
27 25
 
28 26
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1411"
27
+
28
+<DIV CLASS="navigation"><!--Navigation Panel-->
29
+<A NAME="tex2html1421"
31 30
   HREF="node85.html">
32 31
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 32
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1407"
33
+<A NAME="tex2html1417"
35 34
   HREF="node82.html">
36 35
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 36
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1401"
37
+<A NAME="tex2html1413"
39 38
   HREF="node83.html">
40 39
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 40
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1409"
41
+<A NAME="tex2html1419"
43 42
   HREF="node1.html">
44 43
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 44
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 45
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1412"
48
-  HREF="node85.html">Graphics</A>
49
-<B> Up:</B> <A NAME="tex2html1408"
50
-  HREF="node82.html">Authors</A>
51
-<B> Previous:</B> <A NAME="tex2html1402"
52
-  HREF="node83.html">Virus database maintainers</A>
53
- &nbsp <B>  <A NAME="tex2html1410"
46
+<B> Next:</B> <A NAME="tex2html1422"
47
+  HREF="node85.html">Authors</A>
48
+<B> Up:</B> <A NAME="tex2html1418"
49
+  HREF="node82.html">Credits</A>
50
+<B> Previous:</B> <A NAME="tex2html1414"
51
+  HREF="node83.html">Contributors</A>
52
+ &nbsp; <B>  <A NAME="tex2html1420"
54 53
   HREF="node1.html">Contents</A></B> 
55 54
 <BR>
56
-<BR>
55
+<BR></DIV>
57 56
 <!--End of Navigation Panel-->
58 57
 
59
-<H2><A NAME="SECTION00092000000000000000">
60
-Network management</A>
58
+<H2><A NAME="SECTION00082000000000000000">
59
+Donors</A>
61 60
 </H2>
62
-    Thanks to Luca 'NERvOus' Gibelli &lt;luca*clamav.net&gt; you can
63
-    download our database from all the mirrors listed in <A HREF="node17.html#mirrors">2.11</A>. Luca
64
-    is also responsible for our main site <TT><A NAME="tex2html162"
65
-  HREF="www.clamav.net">www.clamav.net</A></TT>, mailing lists,
66
-    and the virus submission mechanism.
61
+    We received financial support from (this is not a full list because we
62
+    only list people from whom we received an agreement):
63
+    
64
+<UL>
65
+<LI>ActiveIntra.net Inc. (<TT><A NAME="tex2html132"
66
+  HREF="http://www.activeintra.net">http://www.activeintra.net</A></TT>)
67
+</LI>
68
+<LI>Advance Healthcare Group (<TT><A NAME="tex2html133"
69
+  HREF="http://www.ahgl.com.au">http://www.ahgl.com.au</A></TT>)
70
+</LI>
71
+<LI>Anonymous donor from Colorado, US
72
+</LI>
73
+<LI>Atlas College (<TT><A NAME="tex2html134"
74
+  HREF="http://www.atlascollege.nl">http://www.atlascollege.nl</A></TT>)
75
+</LI>
76
+<LI>AWD Online (<TT><A NAME="tex2html135"
77
+  HREF="http://www.awdonline.com">http://www.awdonline.com</A></TT>)
78
+</LI>
79
+<LI>Bear and Bear Consulting, Inc. (<TT><A NAME="tex2html136"
80
+  HREF="http://www.bear-consulting.com">http://www.bear-consulting.com</A></TT>)
81
+</LI>
82
+<LI>Norman E. Brake, Jr.
83
+</LI>
84
+<LI>cedarcreeksoftware.com (<TT><A NAME="tex2html137"
85
+  HREF="http://www.cedarcreeksoftware.com">http://www.cedarcreeksoftware.com</A></TT>)
86
+</LI>
87
+<LI>Thanos Chatziathanassiou
88
+</LI>
89
+<LI>Cheahch from Singapore
90
+</LI>
91
+<LI>Joe Cooper
92
+</LI>
93
+<LI>Steve Donegan (<TT><A NAME="tex2html138"
94
+  HREF="http://www.donegan.org">http://www.donegan.org</A></TT>)
95
+</LI>
96
+<LI>Dynamic Network Services, Inc (<TT><A NAME="tex2html139"
97
+  HREF="http://www.dyndns.org">http://www.dyndns.org</A></TT>)
98
+</LI>
99
+<LI>Electric Embers
100
+</LI>
101
+<LI>Epublica
102
+</LI>
103
+<LI>Bernhard Erdmann
104
+</LI>
105
+<LI>David Eriksson (<TT><A NAME="tex2html140"
106
+  HREF="http://www.2good.nu">http://www.2good.nu</A></TT>)
107
+</LI>
108
+<LI>Explido Software USA Inc. (<TT><A NAME="tex2html141"
109
+  HREF="http://www.explido.us">http://www.explido.us</A></TT>)
110
+</LI>
111
+<LI>David Farrick
112
+</LI>
113
+<LI>Petr Ferschmann (<TT><A NAME="tex2html142"
114
+  HREF="http://petr.ferschmann.cz/">http://petr.ferschmann.cz/</A></TT>)
115
+</LI>
116
+<LI>Andries Filmer (<TT><A NAME="tex2html143"
117
+  HREF="http://www.netexpo.nl">http://www.netexpo.nl</A></TT>)
118
+</LI>
119
+<LI>Jack Fung
120
+</LI>
121
+<LI>GANDI (<TT><A NAME="tex2html144"
122
+  HREF="http://www.gandi.net">http://www.gandi.net</A></TT>)
123
+</LI>
124
+<LI>Jeremy Garcia (<TT><A NAME="tex2html145"
125
+  HREF="http://www.linuxquestions.org">http://www.linuxquestions.org</A></TT>)
126
+</LI>
127
+<LI>GBC Internet Service Center GmbH (<TT><A NAME="tex2html146"
128
+  HREF="http://www.gbc.net">http://www.gbc.net</A></TT>)
129
+</LI>
130
+<LI>GCS Tech (<TT><A NAME="tex2html147"
131
+  HREF="http://www.gcstech.net">http://www.gcstech.net</A></TT>)
132
+</LI>
133
+<LI>Todd Goodman
134
+</LI>
135
+<LI>Bill Gradwohl (<TT><A NAME="tex2html148"
136
+  HREF="http://www.ycc.com">http://www.ycc.com</A></TT>)
137
+</LI>
138
+<LI>Grain-of-Salt Consulting
139
+</LI>
140
+<LI>IDEAL Software GmbH (<TT><A NAME="tex2html149"
141
+  HREF="http://www.IdealSoftware.com">http://www.IdealSoftware.com</A></TT>)
142
+</LI>
143
+<LI>Industry Standard Computers (<TT><A NAME="tex2html150"
144
+  HREF="http://www.ISCnetwork.com">http://www.ISCnetwork.com</A></TT>)
145
+</LI>
146
+<LI>Invisik Corporation (<TT><A NAME="tex2html151"
147
+  HREF="http://www.invisik.com">http://www.invisik.com</A></TT>)
148
+</LI>
149
+<LI>Keith (<TT><A NAME="tex2html152"
150
+  HREF="http://www.textpad.com">http://www.textpad.com</A></TT>)
151
+</LI>
152
+<LI>Brad Koehn
153
+</LI>
154
+<LI>Logic Partners Inc. (<TT><A NAME="tex2html153"
155
+  HREF="http://www.logicpartners.com">http://www.logicpartners.com</A></TT>)
156
+</LI>
157
+<LI>Midcoast Internet Solutions
158
+</LI>
159
+<LI>Mimecast (<TT><A NAME="tex2html154"
160
+  HREF="http://www.mimecast.com">http://www.mimecast.com</A></TT>)
161
+</LI>
162
+<LI>Paul Morgan
163
+</LI>
164
+<LI>Tomas Morkus
165
+</LI>
166
+<LI>Michael Nolan (<TT><A NAME="tex2html155"
167
+  HREF="http://www.michaelnolan.co.uk">http://www.michaelnolan.co.uk</A></TT>)
168
+</LI>
169
+<LI>Oneworkspace.com (<TT><A NAME="tex2html156"
170
+  HREF="http://www.oneworkspace.com">http://www.oneworkspace.com</A></TT>)
171
+</LI>
172
+<LI>Origin Solutions (<TT><A NAME="tex2html157"
173
+  HREF="http://www.originsolutions.com.au">http://www.originsolutions.com.au</A></TT>)
174
+</LI>
175
+<LI>outermedia GmbH (<TT><A NAME="tex2html158"
176
+  HREF="http://www.outermedia.de">http://www.outermedia.de</A></TT>)
177
+</LI>
178
+<LI>Dan Pelleg
179
+</LI>
180
+<LI>Thodoris Pitikaris
181
+</LI>
182
+<LI>Luke Reeves (<TT><A NAME="tex2html159"
183
+  HREF="http://www.neuro-tech.net">http://www.neuro-tech.net</A></TT>)
184
+</LI>
185
+<LI>Roaring Penguin Software Inc. (<TT><A NAME="tex2html160"
186
+  HREF="http://www.roaringpenguin.com/">http://www.roaringpenguin.com/</A></TT>)
187
+</LI>
188
+<LI>Luke Rosenthal
189
+</LI>
190
+<LI>Tim Scoff
191
+</LI>
192
+<LI>Seattle Server (<TT><A NAME="tex2html161"
193
+  HREF="http://www.seattleserver.com">http://www.seattleserver.com</A></TT>)
194
+</LI>
195
+<LI>Solutions In A Box (<TT><A NAME="tex2html162"
196
+  HREF="http://www.siab.com.au">http://www.siab.com.au</A></TT>)
197
+</LI>
198
+<LI>Stephane Rault
199
+</LI>
200
+<LI>Fernando Augusto Medeiros Silva (<TT><A NAME="tex2html163"
201
+  HREF="http://www.linuxplace.com.br">http://www.linuxplace.com.br</A></TT>)
202
+</LI>
203
+<LI>StarBand (<TT><A NAME="tex2html164"
204
+  HREF="http://www.starband.com">http://www.starband.com</A></TT>)
205
+</LI>
206
+<LI>Brad Tarver
207
+</LI>
208
+<LI>Per Reedtz Thomsen
209
+</LI>
210
+<LI>William Tisdale
211
+</LI>
212
+<LI>Jeremy Vanderburg (<TT><A NAME="tex2html165"
213
+  HREF="http://www.jeremytech.com">http://www.jeremytech.com</A></TT>)
214
+</LI>
215
+<LI>Webzone Srl (<TT><A NAME="tex2html166"
216
+  HREF="http://www.webzone.it">http://www.webzone.it</A></TT>)
217
+</LI>
218
+<LI>Nicklaus Wicker
219
+    
220
+</LI>
221
+</UL>
67 222
 
68 223
 <P>
69
-<BR><HR>
224
+
225
+<DIV CLASS="navigation"><HR>
226
+<!--Navigation Panel-->
227
+<A NAME="tex2html1421"
228
+  HREF="node85.html">
229
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
230
+ SRC="/usr/share/latex2html/icons/next.png"></A> 
231
+<A NAME="tex2html1417"
232
+  HREF="node82.html">
233
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
234
+ SRC="/usr/share/latex2html/icons/up.png"></A> 
235
+<A NAME="tex2html1413"
236
+  HREF="node83.html">
237
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
238
+ SRC="/usr/share/latex2html/icons/prev.png"></A> 
239
+<A NAME="tex2html1419"
240
+  HREF="node1.html">
241
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
242
+ SRC="/usr/share/latex2html/icons/contents.png"></A>  
243
+<BR>
244
+<B> Next:</B> <A NAME="tex2html1422"
245
+  HREF="node85.html">Authors</A>
246
+<B> Up:</B> <A NAME="tex2html1418"
247
+  HREF="node82.html">Credits</A>
248
+<B> Previous:</B> <A NAME="tex2html1414"
249
+  HREF="node83.html">Contributors</A>
250
+ &nbsp; <B>  <A NAME="tex2html1420"
251
+  HREF="node1.html">Contents</A></B> </DIV>
252
+<!--End of Navigation Panel-->
70 253
 <ADDRESS>
71 254
 Tomasz Kojm
72
-2004-06-29
255
+2004-07-22
73 256
 </ADDRESS>
74 257
 </BODY>
75 258
 </HTML>
... ...
@@ -1,72 +1,83 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
7 7
   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 8
 <HTML>
9 9
 <HEAD>
10
-<TITLE>Graphics</TITLE>
11
-<META NAME="description" CONTENT="Graphics">
10
+<TITLE>Authors</TITLE>
11
+<META NAME="description" CONTENT="Authors">
12 12
 <META NAME="keywords" CONTENT="clamdoc">
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
21 20
 
22
-<LINK REL="next" HREF="node86.html">
23
-<LINK REL="previous" HREF="node84.html">
24
-<LINK REL="up" HREF="node82.html">
21
+<LINK REL="next" HREF="node90.html">
22
+<LINK REL="previous" HREF="node82.html">
23
+<LINK REL="up" HREF="clamdoc.html">
25 24
 <LINK REL="next" HREF="node86.html">
26 25
 </HEAD>
27 26
 
28 27
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html1423"
28
+
29
+<DIV CLASS="navigation"><!--Navigation Panel-->
30
+<A NAME="tex2html1433"
31 31
   HREF="node86.html">
32 32
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 33
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html1419"
35
-  HREF="node82.html">
34
+<A NAME="tex2html1429"
35
+  HREF="clamdoc.html">
36 36
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 37
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html1413"
38
+<A NAME="tex2html1423"
39 39
   HREF="node84.html">
40 40
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 41
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html1421"
42
+<A NAME="tex2html1431"
43 43
   HREF="node1.html">
44 44
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 45
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 46
 <BR>
47
-<B> Next:</B> <A NAME="tex2html1424"
48
-  HREF="node86.html">Core developers</A>
49
-<B> Up:</B> <A NAME="tex2html1420"
50
-  HREF="node82.html">Authors</A>
51
-<B> Previous:</B> <A NAME="tex2html1414"
52
-  HREF="node84.html">Network management</A>
53
- &nbsp <B>  <A NAME="tex2html1422"
47
+<B> Next:</B> <A NAME="tex2html1434"
48
+  HREF="node86.html">Virus database maintainers</A>
49
+<B> Up:</B> <A NAME="tex2html1430"
50
+  HREF="clamdoc.html">clamdoc</A>
51
+<B> Previous:</B> <A NAME="tex2html1424"
52
+  HREF="node84.html">Donors</A>
53
+ &nbsp; <B>  <A NAME="tex2html1432"
54 54
   HREF="node1.html">Contents</A></B> 
55 55
 <BR>
56
-<BR>
56
+<BR></DIV>
57 57
 <!--End of Navigation Panel-->
58 58
 
59
-<H2><A NAME="SECTION00093000000000000000">
60
-Graphics</A>
61
-</H2>
62
-    The authors of the nice ClamAV logo (look at the title page) are Mia
63
-    Kalenius and Sergei Pronin &lt;sp*finndesign.fi&gt;.
59
+<H1><A NAME="SECTION00090000000000000000">
60
+Authors</A>
61
+</H1>
62
+    <BR><HR>
63
+<!--Table of Child-Links-->
64
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
64 65
 
65
-<P>
66
+<UL CLASS="ChildLinks">
67
+<LI><A NAME="tex2html1435"
68
+  HREF="node86.html">Virus database maintainers</A>
69
+<LI><A NAME="tex2html1436"
70
+  HREF="node87.html">Network management</A>
71
+<LI><A NAME="tex2html1437"
72
+  HREF="node88.html">Graphics</A>
73
+<LI><A NAME="tex2html1438"
74
+  HREF="node89.html">Core developers</A>
75
+</UL>
76
+<!--End of Table of Child-Links-->
66 77
 <BR><HR>
67 78
 <ADDRESS>
68 79
 Tomasz Kojm
69
-2004-06-29
80
+2004-07-22
70 81
 </ADDRESS>
71 82
 </BODY>
72 83
 </HTML>
73 84
new file mode 100644
... ...
@@ -0,0 +1,95 @@
0
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
1
+
2
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
3
+original version by:  Nikos Drakos, CBLU, University of Leeds
4
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
5
+* with significant contributions from:
6
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
7
+<HTML>
8
+<HEAD>
9
+<TITLE>Virus database maintainers</TITLE>
10
+<META NAME="description" CONTENT="Virus database maintainers">
11
+<META NAME="keywords" CONTENT="clamdoc">
12
+<META NAME="resource-type" CONTENT="document">
13
+<META NAME="distribution" CONTENT="global">
14
+
15
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
16
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
17
+
18
+<LINK REL="STYLESHEET" HREF="clamdoc.css">
19
+
20
+<LINK REL="next" HREF="node87.html">
21
+<LINK REL="previous" HREF="node85.html">
22
+<LINK REL="up" HREF="node85.html">
23
+<LINK REL="next" HREF="node87.html">
24
+</HEAD>
25
+
26
+<BODY >
27
+
28
+<DIV CLASS="navigation"><!--Navigation Panel-->
29
+<A NAME="tex2html1449"
30
+  HREF="node87.html">
31
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32
+ SRC="/usr/share/latex2html/icons/next.png"></A> 
33
+<A NAME="tex2html1445"
34
+  HREF="node85.html">
35
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36
+ SRC="/usr/share/latex2html/icons/up.png"></A> 
37
+<A NAME="tex2html1439"
38
+  HREF="node85.html">
39
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40
+ SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
+<A NAME="tex2html1447"
42
+  HREF="node1.html">
43
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44
+ SRC="/usr/share/latex2html/icons/contents.png"></A>  
45
+<BR>
46
+<B> Next:</B> <A NAME="tex2html1450"
47
+  HREF="node87.html">Network management</A>
48
+<B> Up:</B> <A NAME="tex2html1446"
49
+  HREF="node85.html">Authors</A>
50
+<B> Previous:</B> <A NAME="tex2html1440"
51
+  HREF="node85.html">Authors</A>
52
+ &nbsp; <B>  <A NAME="tex2html1448"
53
+  HREF="node1.html">Contents</A></B> 
54
+<BR>
55
+<BR></DIV>
56
+<!--End of Navigation Panel-->
57
+
58
+<H2><A NAME="SECTION00091000000000000000">
59
+Virus database maintainers</A>
60
+</H2>
61
+    Virus database is a heart of every anti-virus software. The following
62
+    people care ClamAV's heart to be in a fine condition:
63
+    
64
+<UL>
65
+<LI>aCaB &lt;acab*clamav.net&gt;
66
+</LI>
67
+<LI>Christoph Cordes &lt;ccordes*clamav.net&gt;
68
+</LI>
69
+<LI>Diego D'Ambra &lt;diego*clamav.net&gt;
70
+</LI>
71
+<LI>Jason Englander &lt;jason*clamav.net&gt;
72
+</LI>
73
+<LI>Tomasz Kojm &lt;tkojm*clamav.net&gt;
74
+</LI>
75
+<LI>Denis De Messemacker &lt;ddm*clamav.net&gt;
76
+</LI>
77
+<LI>Tomasz Papszun &lt;tomek*clamav.net&gt;
78
+</LI>
79
+<LI>Trog &lt;trog*clamav.net&gt; (macro viruses)
80
+    
81
+</LI>
82
+</UL>
83
+    Our database includes the virus database (about 5000 signatures) from
84
+<BR>    <TT><A NAME="tex2html167"
85
+  HREF="OpenAntiVirus.org">OpenAntiVirus.org</A></TT>.
86
+
87
+<P>
88
+<BR><HR>
89
+<ADDRESS>
90
+Tomasz Kojm
91
+2004-07-22
92
+</ADDRESS>
93
+</BODY>
94
+</HTML>
0 95
new file mode 100644
... ...
@@ -0,0 +1,75 @@
0
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
1
+
2
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
3
+original version by:  Nikos Drakos, CBLU, University of Leeds
4
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
5
+* with significant contributions from:
6
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
7
+<HTML>
8
+<HEAD>
9
+<TITLE>Network management</TITLE>
10
+<META NAME="description" CONTENT="Network management">
11
+<META NAME="keywords" CONTENT="clamdoc">
12
+<META NAME="resource-type" CONTENT="document">
13
+<META NAME="distribution" CONTENT="global">
14
+
15
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
16
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
17
+
18
+<LINK REL="STYLESHEET" HREF="clamdoc.css">
19
+
20
+<LINK REL="next" HREF="node88.html">
21
+<LINK REL="previous" HREF="node86.html">
22
+<LINK REL="up" HREF="node85.html">
23
+<LINK REL="next" HREF="node88.html">
24
+</HEAD>
25
+
26
+<BODY >
27
+
28
+<DIV CLASS="navigation"><!--Navigation Panel-->
29
+<A NAME="tex2html1461"
30
+  HREF="node88.html">
31
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32
+ SRC="/usr/share/latex2html/icons/next.png"></A> 
33
+<A NAME="tex2html1457"
34
+  HREF="node85.html">
35
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36
+ SRC="/usr/share/latex2html/icons/up.png"></A> 
37
+<A NAME="tex2html1451"
38
+  HREF="node86.html">
39
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40
+ SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
+<A NAME="tex2html1459"
42
+  HREF="node1.html">
43
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44
+ SRC="/usr/share/latex2html/icons/contents.png"></A>  
45
+<BR>
46
+<B> Next:</B> <A NAME="tex2html1462"
47
+  HREF="node88.html">Graphics</A>
48
+<B> Up:</B> <A NAME="tex2html1458"
49
+  HREF="node85.html">Authors</A>
50
+<B> Previous:</B> <A NAME="tex2html1452"
51
+  HREF="node86.html">Virus database maintainers</A>
52
+ &nbsp; <B>  <A NAME="tex2html1460"
53
+  HREF="node1.html">Contents</A></B> 
54
+<BR>
55
+<BR></DIV>
56
+<!--End of Navigation Panel-->
57
+
58
+<H2><A NAME="SECTION00092000000000000000">
59
+Network management</A>
60
+</H2>
61
+    Thanks to Luca 'NERvOus' Gibelli &lt;luca*clamav.net&gt; you can
62
+    download our database from all the mirrors listed in <A HREF="node17.html#mirrors">2.11</A>. Luca
63
+    is also responsible for our main site <TT><A NAME="tex2html168"
64
+  HREF="www.clamav.net">www.clamav.net</A></TT>, mailing lists,
65
+    and the virus submission mechanism.
66
+
67
+<P>
68
+<BR><HR>
69
+<ADDRESS>
70
+Tomasz Kojm
71
+2004-07-22
72
+</ADDRESS>
73
+</BODY>
74
+</HTML>
0 75
new file mode 100644
... ...
@@ -0,0 +1,72 @@
0
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
1
+
2
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
3
+original version by:  Nikos Drakos, CBLU, University of Leeds
4
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
5
+* with significant contributions from:
6
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
7
+<HTML>
8
+<HEAD>
9
+<TITLE>Graphics</TITLE>
10
+<META NAME="description" CONTENT="Graphics">
11
+<META NAME="keywords" CONTENT="clamdoc">
12
+<META NAME="resource-type" CONTENT="document">
13
+<META NAME="distribution" CONTENT="global">
14
+
15
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
16
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
17
+
18
+<LINK REL="STYLESHEET" HREF="clamdoc.css">
19
+
20
+<LINK REL="next" HREF="node89.html">
21
+<LINK REL="previous" HREF="node87.html">
22
+<LINK REL="up" HREF="node85.html">
23
+<LINK REL="next" HREF="node89.html">
24
+</HEAD>
25
+
26
+<BODY >
27
+
28
+<DIV CLASS="navigation"><!--Navigation Panel-->
29
+<A NAME="tex2html1473"
30
+  HREF="node89.html">
31
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32
+ SRC="/usr/share/latex2html/icons/next.png"></A> 
33
+<A NAME="tex2html1469"
34
+  HREF="node85.html">
35
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36
+ SRC="/usr/share/latex2html/icons/up.png"></A> 
37
+<A NAME="tex2html1463"
38
+  HREF="node87.html">
39
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40
+ SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
+<A NAME="tex2html1471"
42
+  HREF="node1.html">
43
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44
+ SRC="/usr/share/latex2html/icons/contents.png"></A>  
45
+<BR>
46
+<B> Next:</B> <A NAME="tex2html1474"
47
+  HREF="node89.html">Core developers</A>
48
+<B> Up:</B> <A NAME="tex2html1470"
49
+  HREF="node85.html">Authors</A>
50
+<B> Previous:</B> <A NAME="tex2html1464"
51
+  HREF="node87.html">Network management</A>
52
+ &nbsp; <B>  <A NAME="tex2html1472"
53
+  HREF="node1.html">Contents</A></B> 
54
+<BR>
55
+<BR></DIV>
56
+<!--End of Navigation Panel-->
57
+
58
+<H2><A NAME="SECTION00093000000000000000">
59
+Graphics</A>
60
+</H2>
61
+    The authors of the nice ClamAV logo (look at the title page) are Mia
62
+    Kalenius and Sergei Pronin &lt;sp*finndesign.fi&gt;.
63
+
64
+<P>
65
+<BR><HR>
66
+<ADDRESS>
67
+Tomasz Kojm
68
+2004-07-22
69
+</ADDRESS>
70
+</BODY>
71
+</HTML>
0 72
new file mode 100644
... ...
@@ -0,0 +1,75 @@
0
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
1
+
2
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
3
+original version by:  Nikos Drakos, CBLU, University of Leeds
4
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
5
+* with significant contributions from:
6
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
7
+<HTML>
8
+<HEAD>
9
+<TITLE>Core developers</TITLE>
10
+<META NAME="description" CONTENT="Core developers">
11
+<META NAME="keywords" CONTENT="clamdoc">
12
+<META NAME="resource-type" CONTENT="document">
13
+<META NAME="distribution" CONTENT="global">
14
+
15
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
16
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
17
+
18
+<LINK REL="STYLESHEET" HREF="clamdoc.css">
19
+
20
+<LINK REL="previous" HREF="node88.html">
21
+<LINK REL="up" HREF="node85.html">
22
+<LINK REL="next" HREF="node90.html">
23
+</HEAD>
24
+
25
+<BODY >
26
+
27
+<DIV CLASS="navigation"><!--Navigation Panel-->
28
+<A NAME="tex2html1483"
29
+  HREF="node90.html">
30
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
31
+ SRC="/usr/share/latex2html/icons/next.png"></A> 
32
+<A NAME="tex2html1479"
33
+  HREF="node85.html">
34
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
35
+ SRC="/usr/share/latex2html/icons/up.png"></A> 
36
+<A NAME="tex2html1475"
37
+  HREF="node88.html">
38
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
39
+ SRC="/usr/share/latex2html/icons/prev.png"></A> 
40
+<A NAME="tex2html1481"
41
+  HREF="node1.html">
42
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
43
+ SRC="/usr/share/latex2html/icons/contents.png"></A>  
44
+<BR>
45
+<B> Next:</B> <A NAME="tex2html1484"
46
+  HREF="node90.html">Bibliography</A>
47
+<B> Up:</B> <A NAME="tex2html1480"
48
+  HREF="node85.html">Authors</A>
49
+<B> Previous:</B> <A NAME="tex2html1476"
50
+  HREF="node88.html">Graphics</A>
51
+ &nbsp; <B>  <A NAME="tex2html1482"
52
+  HREF="node1.html">Contents</A></B> 
53
+<BR>
54
+<BR></DIV>
55
+<!--End of Navigation Panel-->
56
+
57
+<H2><A NAME="SECTION00094000000000000000">
58
+Core developers</A>
59
+</H2>
60
+    Nigel Horne &lt;njh*clamav.net&gt; is a very active ClamAV developer
61
+    responsible for the mbox code and clamav-milter. Trog
62
+    &lt;trog*clamav.net&gt; developes the OLE2 code and the new thread
63
+    manager in clamd. Thomas Lamy is a great memory leak killer and code
64
+    stabilizer. Tomasz Kojm &lt;tkojm*clamav.net&gt;  navigates the project
65
+    and keeps an eye on everything <code>8-)</code>
66
+
67
+<P>
68
+<BR><HR>
69
+<ADDRESS>
70
+Tomasz Kojm
71
+2004-07-22
72
+</ADDRESS>
73
+</BODY>
74
+</HTML>
... ...
@@ -1,6 +1,6 @@
1
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 2
 
3
-<!--Converted with LaTeX2HTML 2K.1beta (1.48)
3
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4 4
 original version by:  Nikos Drakos, CBLU, University of Leeds
5 5
 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 6
 * with significant contributions from:
... ...
@@ -13,8 +13,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
13 13
 <META NAME="resource-type" CONTENT="document">
14 14
 <META NAME="distribution" CONTENT="global">
15 15
 
16
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17
-<META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
16
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 17
 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19 18
 
20 19
 <LINK REL="STYLESHEET" HREF="clamdoc.css">
... ...
@@ -26,34 +25,35 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
26 26
 </HEAD>
27 27
 
28 28
 <BODY >
29
-<!--Navigation Panel-->
30
-<A NAME="tex2html460"
29
+
30
+<DIV CLASS="navigation"><!--Navigation Panel-->
31
+<A NAME="tex2html471"
31 32
   HREF="node10.html">
32 33
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33 34
  SRC="/usr/share/latex2html/icons/next.png"></A> 
34
-<A NAME="tex2html456"
35
+<A NAME="tex2html467"
35 36
   HREF="node6.html">
36 37
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37 38
  SRC="/usr/share/latex2html/icons/up.png"></A> 
38
-<A NAME="tex2html450"
39
+<A NAME="tex2html461"
39 40
   HREF="node8.html">
40 41
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41 42
  SRC="/usr/share/latex2html/icons/prev.png"></A> 
42
-<A NAME="tex2html458"
43
+<A NAME="tex2html469"
43 44
   HREF="node1.html">
44 45
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
45 46
  SRC="/usr/share/latex2html/icons/contents.png"></A>  
46 47
 <BR>
47
-<B> Next:</B> <A NAME="tex2html461"
48
+<B> Next:</B> <A NAME="tex2html472"
48 49
   HREF="node10.html">Requirements</A>
49
-<B> Up:</B> <A NAME="tex2html457"
50
+<B> Up:</B> <A NAME="tex2html468"
50 51
   HREF="node6.html">Installation</A>
51
-<B> Previous:</B> <A NAME="tex2html451"
52
+<B> Previous:</B> <A NAME="tex2html462"
52 53
   HREF="node8.html">Binary packages - stable</A>
53
- &nbsp <B>  <A NAME="tex2html459"
54
+ &nbsp; <B>  <A NAME="tex2html470"
54 55
   HREF="node1.html">Contents</A></B> 
55 56
 <BR>
56
-<BR>
57
+<BR></DIV>
57 58
 <!--End of Navigation Panel-->
58 59
 
59 60
 <H2><A NAME="SECTION00033000000000000000">
... ...
@@ -70,10 +70,10 @@ Binary packages - snapshots</A>
70 70
 <LI>AIX (built on AIX Version 5.1)
71 71
 </LI>
72 72
 <LI>Linux i386 with glibc 2.3 (compiled on Fedora Core 1,
73
-	      works on RH <IMG
74
- WIDTH="20" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
73
+	      works on RH <SPAN CLASS="MATH"><IMG
74
+ WIDTH="20" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
75 75
  SRC="img4.png"
76
- ALT="$\ge$"> 8)
76
+ ALT="$\ge$"></SPAN> 8)
77 77
 </LI>
78 78
 <LI>Win32/Cygwin (compiled on XP)
79 79
     
... ...
@@ -85,7 +85,7 @@ Binary packages - snapshots</A>
85 85
 <BR><HR>
86 86
 <ADDRESS>
87 87
 Tomasz Kojm
88
-2004-06-29
88
+2004-07-22
89 89
 </ADDRESS>
90 90
 </BODY>
91 91
 </HTML>
92 92
new file mode 100644
... ...
@@ -0,0 +1,75 @@
0
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
1
+
2
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
3
+original version by:  Nikos Drakos, CBLU, University of Leeds
4
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
5
+* with significant contributions from:
6
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
7
+<HTML>
8
+<HEAD>
9
+<TITLE>Bibliography</TITLE>
10
+<META NAME="description" CONTENT="Bibliography">
11
+<META NAME="keywords" CONTENT="clamdoc">
12
+<META NAME="resource-type" CONTENT="document">
13
+<META NAME="distribution" CONTENT="global">
14
+
15
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
16
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
17
+
18
+<LINK REL="STYLESHEET" HREF="clamdoc.css">
19
+
20
+<LINK REL="next" HREF="node91.html">
21
+<LINK REL="previous" HREF="node85.html">
22
+<LINK REL="up" HREF="clamdoc.html">
23
+<LINK REL="next" HREF="node91.html">
24
+</HEAD>
25
+
26
+<BODY >
27
+
28
+<DIV CLASS="navigation"><!--Navigation Panel-->
29
+<A NAME="tex2html1495"
30
+  HREF="node91.html">
31
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
32
+ SRC="/usr/share/latex2html/icons/next.png"></A> 
33
+<A NAME="tex2html1491"
34
+  HREF="clamdoc.html">
35
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
36
+ SRC="/usr/share/latex2html/icons/up.png"></A> 
37
+<A NAME="tex2html1485"
38
+  HREF="node89.html">
39
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
40
+ SRC="/usr/share/latex2html/icons/prev.png"></A> 
41
+<A NAME="tex2html1493"
42
+  HREF="node1.html">
43
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
44
+ SRC="/usr/share/latex2html/icons/contents.png"></A>  
45
+<BR>
46
+<B> Next:</B> <A NAME="tex2html1496"
47
+  HREF="node91.html">About this document ...</A>
48
+<B> Up:</B> <A NAME="tex2html1492"
49
+  HREF="clamdoc.html">clamdoc</A>
50
+<B> Previous:</B> <A NAME="tex2html1486"
51
+  HREF="node89.html">Core developers</A>
52
+ &nbsp; <B>  <A NAME="tex2html1494"
53
+  HREF="node1.html">Contents</A></B> 
54
+<BR><BR></DIV>
55
+<!--End of Navigation Panel-->
56
+ 
57
+<H2><A NAME="SECTION000100000000000000000">
58
+Bibliography</A>
59
+</H2><DL COMPACT><DD><P></P><DT><A NAME="clr">1</A>
60
+<DD>
61
+	    Cormen, Leiserson, Rivest: <SPAN  CLASS="textit">Introduction to Algorithms</SPAN>,
62
+	    Chapter 34, MIT Press.
63
+	<P></P><DT><A NAME="acwww">2</A>
64
+<DD>
65
+	    <SMALL CLASS="SMALL">	    <TT><A NAME="tex2html169"
66
+  HREF="http://www-sr.informatik.uni-tuebingen.de/~buehler/AC/AC.html">http://www-sr.informatik.uni-tuebingen.de/~buehler/AC/AC.html</A></TT></SMALL>:
67
+<BR>	    Aho-Corasick algorithm description
68
+</DL><BR><HR>
69
+<ADDRESS>
70
+Tomasz Kojm
71
+2004-07-22
72
+</ADDRESS>
73
+</BODY>
74
+</HTML>
0 75
new file mode 100644
... ...
@@ -0,0 +1,79 @@
0
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
1
+
2
+<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
3
+original version by:  Nikos Drakos, CBLU, University of Leeds
4
+* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
5
+* with significant contributions from:
6
+  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
7
+<HTML>
8
+<HEAD>
9
+<TITLE>About this document ...</TITLE>
10
+<META NAME="description" CONTENT="About this document ...">
11
+<META NAME="keywords" CONTENT="clamdoc">
12
+<META NAME="resource-type" CONTENT="document">
13
+<META NAME="distribution" CONTENT="global">
14
+
15
+<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
16
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
17
+
18
+<LINK REL="STYLESHEET" HREF="clamdoc.css">
19
+
20
+<LINK REL="previous" HREF="node90.html">
21
+<LINK REL="up" HREF="clamdoc.html">
22
+</HEAD>
23
+
24
+<BODY >
25
+
26
+<DIV CLASS="navigation"><!--Navigation Panel-->
27
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
28
+ SRC="/usr/share/latex2html/icons/next_g.png"> 
29
+<A NAME="tex2html1501"
30
+  HREF="clamdoc.html">
31
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
32
+ SRC="/usr/share/latex2html/icons/up.png"></A> 
33
+<A NAME="tex2html1497"
34
+  HREF="node90.html">
35
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
36
+ SRC="/usr/share/latex2html/icons/prev.png"></A> 
37
+<A NAME="tex2html1503"
38
+  HREF="node1.html">
39
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
40
+ SRC="/usr/share/latex2html/icons/contents.png"></A>  
41
+<BR>
42
+<B> Up:</B> <A NAME="tex2html1502"
43
+  HREF="clamdoc.html">clamdoc</A>
44
+<B> Previous:</B> <A NAME="tex2html1498"
45
+  HREF="node90.html">Bibliography</A>
46
+ &nbsp; <B>  <A NAME="tex2html1504"
47
+  HREF="node1.html">Contents</A></B> 
48
+<BR>
49
+<BR></DIV>
50
+<!--End of Navigation Panel-->
51
+
52
+<H1><A NAME="SECTION000110000000000000000">
53
+About this document ...</A>
54
+</H1>
55
+ <P>
56
+This document was generated using the
57
+<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.70)
58
+<P>
59
+Copyright &#169; 1993, 1994, 1995, 1996,
60
+<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>, 
61
+Computer Based Learning Unit, University of Leeds.
62
+<BR>
63
+Copyright &#169; 1997, 1998, 1999,
64
+<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>, 
65
+Mathematics Department, Macquarie University, Sydney.
66
+<P>
67
+The command line arguments were: <BR>
68
+ <STRONG>latex2html</STRONG> <TT><A NAME="tex2html170"
69
+  HREF="../clamdoc.tex">clamdoc.tex</A></TT>
70
+<P>
71
+The translation was initiated by Tomasz Kojm on 2004-07-22
72
+<BR><HR>
73
+<ADDRESS>
74
+Tomasz Kojm
75
+2004-07-22
76
+</ADDRESS>
77
+</BODY>
78
+</HTML>
... ...
@@ -53,6 +53,12 @@ configured with \-\-clamav-debug.
53 53
 Will be replaced by \-\-debug for compatability with other programs in the
54 54
 suite.
55 55
 .TP
56
+\fB-A, \-\-advisory\fR
57
+When in advisory mode, clamav\-milter flags emails with viruses but
58
+still forwards them. The default option is to stop viruses.
59
+.LP
60
+This mode is in compatible with \-\-quarantine and \-\-quarantine-dir.
61
+.TP
56 62
 \fB\-b, \-\-bounce\fR
57 63
 Send a failure message to the sender, and to the postmaster.
58 64
 [ \fBWarning\fR: most viruses and worms
... ...
@@ -150,6 +156,12 @@ in \fBclamav.conf\fR.
150 150
 .LP
151 151
 Most users will not need this option, if in doubt do not set it.
152 152
 .TP
153
+\fB\-\-dont\-wait\fR
154
+Tells clamav\-milter what do to if the max-children number is exceeded.
155
+Usuaully clamav\-milter waits until a child dies or the timeout value has been
156
+exceeded, which ever comes first, however with dont-wait enabled, clamav\-milter
157
+will inform the remote SMTP client to retry later.
158
+.TP
153 159
 \fB\-\-template\-file=file \-t file\fR
154 160
 File points to a file whose contents is sent as the warning message whenever a
155 161
 virus is intercepted.
... ...
@@ -165,6 +177,8 @@ Used in conjuction with max\-children. If clamav\-milter waits for more than
165 165
 \fIn\fR seconds (default 60) it proceeds with scanning. Setting \fIn\fR to zero
166 166
 will turn off the timeout and clamav\-milter will wait indefinately for the
167 167
 scanning to quit. In practice the timeout set by sendmail will then take over.
168
+.SH "BUGS"
169
+There is no support for IPv6.
168 170
 .SH "EXAMPLES"
169 171
 .LP
170 172
 clamav\-milter \-ol local:/var/run/clamav/clmilter.sock
... ...
@@ -1,14 +1,14 @@
1 1
 .\" Manual page created by Tomasz Kojm, 20020629
2
-.TH "sigtool" "1" "November 11, 2003" "Tomasz Kojm" "Clam AntiVirus"
2
+.TH "sigtool" "1" "July 22, 2004" "Tomasz Kojm" "Clam AntiVirus"
3 3
 .SH "NAME"
4 4
 .LP 
5
-sigtool \- generate a virus signature
5
+sigtool \- signature management tool
6 6
 .SH "SYNOPSIS"
7 7
 .LP 
8 8
 sigtool [options]
9 9
 .SH "DESCRIPTION"
10 10
 .LP 
11
-sigtool generates a virus signature using an external anti\-virus scanner which is able to detect the virus. It can also create a hexadecimal dump and build and unpack a CVD database.
11
+sigtool can be used to generate a virus signature using an external anti\-virus scanner (see the official documentation for license issues!). It can also dump hexadecimal data and build and unpack CVD databases.
12 12
 .SH "OPTIONS"
13 13
 .LP 
14 14
 
... ...
@@ -30,6 +30,7 @@ Read data from stdin and write hex string to stdout.
30 30
 .TP 
31 31
 \fB\-c, \-\-command\fR
32 32
 Anti\-virus scanner command with options. Remember about quotes if the argument string contains white characters. Command should contain everything except infected file name.
33
+Make sure your commercial scanner's license does not disallow sigtool usage !
33 34
 .TP 
34 35
 \fB\-f, \-\-file\fR
35 36
 Infected file name.
36 37
Binary files a/docs/signatures.pdf and b/docs/signatures.pdf differ
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -454,9 +454,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
454 454
 	  done | \
455 455
 	  $(AWK) '    { files[$$0] = 1; } \
456 456
 	       END { for (i in files) print i; }'`; \
457
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
458
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
459
-	     $$tags $$unique
457
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
458
+	  test -n "$$unique" || unique=$$empty_fix; \
459
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
460
+	    $$tags $$unique; \
461
+	fi
460 462
 ctags: CTAGS
461 463
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
462 464
 		$(TAGS_FILES) $(LISP)
... ...
@@ -6,6 +6,6 @@ includedir=@includedir@
6 6
 Name: libclamav
7 7
 Description: A GPL virus scanner
8 8
 Version: @LIBCLAMAV_VERSION@
9
-Libs: -L${libdir} @LIBCLAMAV_LIBS@
9
+Libs: -L${libdir} -lclamav @LIBCLAMAV_LIBS@
10 10
 Cflags: -I${includedir} @CFLAGS@
11 11
 
... ...
@@ -80,21 +80,6 @@ libclamav_la_SOURCES = \
80 80
 	vba_extract.h \
81 81
 	cltypes.h \
82 82
 	msexpand.c \
83
-	msexpand.h \
84
-	pe.c \
85
-	pe.h \
86
-	mspack/cabd.c \
87
-	mspack/cab.h \
88
-	mspack/lzxd.c \
89
-	mspack/lzx.h \
90
-	mspack/mspack.h \
91
-	mspack/mszipd.c \
92
-	mspack/mszip.h \
93
-	mspack/qtmd.c \
94
-	mspack/qtm.h \
95
-	mspack/system.c \
96
-	mspack/system.h \
97
-	upx.c \
98
-	upx.h
83
+	msexpand.h
99 84
 
100 85
 lib_LTLIBRARIES = libclamav.la
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -76,26 +76,21 @@ am_libclamav_la_OBJECTS = matcher.lo md5.lo others.lo readdb.lo cvd.lo \
76 76
 	dsig.lo str.lo scanners.lo unrarlib.lo zzip-dir.lo zzip-err.lo \
77 77
 	zzip-file.lo zzip-info.lo zzip-io.lo zzip-stat.lo zzip-zip.lo \
78 78
 	strc.lo blob.lo mbox.lo message.lo snprintf.lo strrcpy.lo \
79
-	table.lo text.lo ole2_extract.lo vba_extract.lo msexpand.lo \
80
-	pe.lo cabd.lo lzxd.lo mszipd.lo qtmd.lo system.lo upx.lo
79
+	table.lo text.lo ole2_extract.lo vba_extract.lo msexpand.lo
81 80
 libclamav_la_OBJECTS = $(am_libclamav_la_OBJECTS)
82 81
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
83 82
 depcomp = $(SHELL) $(top_srcdir)/depcomp
84 83
 am__depfiles_maybe = depfiles
85
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/blob.Plo ./$(DEPDIR)/cabd.Plo \
86
-@AMDEP_TRUE@	./$(DEPDIR)/cvd.Plo ./$(DEPDIR)/dsig.Plo \
87
-@AMDEP_TRUE@	./$(DEPDIR)/lzxd.Plo ./$(DEPDIR)/matcher.Plo \
84
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/blob.Plo ./$(DEPDIR)/cvd.Plo \
85
+@AMDEP_TRUE@	./$(DEPDIR)/dsig.Plo ./$(DEPDIR)/matcher.Plo \
88 86
 @AMDEP_TRUE@	./$(DEPDIR)/mbox.Plo ./$(DEPDIR)/md5.Plo \
89 87
 @AMDEP_TRUE@	./$(DEPDIR)/message.Plo ./$(DEPDIR)/msexpand.Plo \
90
-@AMDEP_TRUE@	./$(DEPDIR)/mszipd.Plo \
91 88
 @AMDEP_TRUE@	./$(DEPDIR)/ole2_extract.Plo \
92
-@AMDEP_TRUE@	./$(DEPDIR)/others.Plo ./$(DEPDIR)/pe.Plo \
93
-@AMDEP_TRUE@	./$(DEPDIR)/qtmd.Plo ./$(DEPDIR)/readdb.Plo \
89
+@AMDEP_TRUE@	./$(DEPDIR)/others.Plo ./$(DEPDIR)/readdb.Plo \
94 90
 @AMDEP_TRUE@	./$(DEPDIR)/scanners.Plo ./$(DEPDIR)/snprintf.Plo \
95 91
 @AMDEP_TRUE@	./$(DEPDIR)/str.Plo ./$(DEPDIR)/strc.Plo \
96
-@AMDEP_TRUE@	./$(DEPDIR)/strrcpy.Plo ./$(DEPDIR)/system.Plo \
97
-@AMDEP_TRUE@	./$(DEPDIR)/table.Plo ./$(DEPDIR)/text.Plo \
98
-@AMDEP_TRUE@	./$(DEPDIR)/unrarlib.Plo ./$(DEPDIR)/upx.Plo \
92
+@AMDEP_TRUE@	./$(DEPDIR)/strrcpy.Plo ./$(DEPDIR)/table.Plo \
93
+@AMDEP_TRUE@	./$(DEPDIR)/text.Plo ./$(DEPDIR)/unrarlib.Plo \
99 94
 @AMDEP_TRUE@	./$(DEPDIR)/vba_extract.Plo \
100 95
 @AMDEP_TRUE@	./$(DEPDIR)/zzip-dir.Plo ./$(DEPDIR)/zzip-err.Plo \
101 96
 @AMDEP_TRUE@	./$(DEPDIR)/zzip-file.Plo \
... ...
@@ -283,22 +278,7 @@ libclamav_la_SOURCES = \
283 283
 	vba_extract.h \
284 284
 	cltypes.h \
285 285
 	msexpand.c \
286
-	msexpand.h \
287
-	pe.c \
288
-	pe.h \
289
-	mspack/cabd.c \
290
-	mspack/cab.h \
291
-	mspack/lzxd.c \
292
-	mspack/lzx.h \
293
-	mspack/mspack.h \
294
-	mspack/mszipd.c \
295
-	mspack/mszip.h \
296
-	mspack/qtmd.c \
297
-	mspack/qtm.h \
298
-	mspack/system.c \
299
-	mspack/system.h \
300
-	upx.c \
301
-	upx.h
286
+	msexpand.h
302 287
 
303 288
 lib_LTLIBRARIES = libclamav.la
304 289
 all: all-am
... ...
@@ -357,7 +337,7 @@ clean-libLTLIBRARIES:
357 357
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
358 358
 	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
359 359
 	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
360
-	  test "$$dir" = "$$p" && dir=.; \
360
+	  test "$$dir" != "$$p" || dir=.; \
361 361
 	  echo "rm -f \"$${dir}/so_locations\""; \
362 362
 	  rm -f "$${dir}/so_locations"; \
363 363
 	done
... ...
@@ -371,31 +351,24 @@ distclean-compile:
371 371
 	-rm -f *.tab.c
372 372
 
373 373
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blob.Plo@am__quote@
374
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cabd.Plo@am__quote@
375 374
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cvd.Plo@am__quote@
376 375
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsig.Plo@am__quote@
377
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzxd.Plo@am__quote@
378 376
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matcher.Plo@am__quote@
379 377
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbox.Plo@am__quote@
380 378
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Plo@am__quote@
381 379
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/message.Plo@am__quote@
382 380
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msexpand.Plo@am__quote@
383
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mszipd.Plo@am__quote@
384 381
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ole2_extract.Plo@am__quote@
385 382
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/others.Plo@am__quote@
386
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe.Plo@am__quote@
387
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qtmd.Plo@am__quote@
388 383
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readdb.Plo@am__quote@
389 384
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanners.Plo@am__quote@
390 385
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snprintf.Plo@am__quote@
391 386
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str.Plo@am__quote@
392 387
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strc.Plo@am__quote@
393 388
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strrcpy.Plo@am__quote@
394
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system.Plo@am__quote@
395 389
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table.Plo@am__quote@
396 390
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Plo@am__quote@
397 391
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unrarlib.Plo@am__quote@
398
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/upx.Plo@am__quote@
399 392
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vba_extract.Plo@am__quote@
400 393
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zzip-dir.Plo@am__quote@
401 394
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zzip-err.Plo@am__quote@
... ...
@@ -621,126 +594,6 @@ strc.lo: zziplib/strc.c
621 621
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
622 622
 @am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strc.lo `test -f 'zziplib/strc.c' || echo '$(srcdir)/'`zziplib/strc.c
623 623
 
624
-cabd.o: mspack/cabd.c
625
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd.o -MD -MP -MF "$(DEPDIR)/cabd.Tpo" -c -o cabd.o `test -f 'mspack/cabd.c' || echo '$(srcdir)/'`mspack/cabd.c; \
626
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/cabd.Tpo" "$(DEPDIR)/cabd.Po"; else rm -f "$(DEPDIR)/cabd.Tpo"; exit 1; fi
627
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/cabd.c' object='cabd.o' libtool=no @AMDEPBACKSLASH@
628
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/cabd.Po' tmpdepfile='$(DEPDIR)/cabd.TPo' @AMDEPBACKSLASH@
629
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
630
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd.o `test -f 'mspack/cabd.c' || echo '$(srcdir)/'`mspack/cabd.c
631
-
632
-cabd.obj: mspack/cabd.c
633
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd.obj -MD -MP -MF "$(DEPDIR)/cabd.Tpo" -c -o cabd.obj `if test -f 'mspack/cabd.c'; then $(CYGPATH_W) 'mspack/cabd.c'; else $(CYGPATH_W) '$(srcdir)/mspack/cabd.c'; fi`; \
634
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/cabd.Tpo" "$(DEPDIR)/cabd.Po"; else rm -f "$(DEPDIR)/cabd.Tpo"; exit 1; fi
635
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/cabd.c' object='cabd.obj' libtool=no @AMDEPBACKSLASH@
636
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/cabd.Po' tmpdepfile='$(DEPDIR)/cabd.TPo' @AMDEPBACKSLASH@
637
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
638
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd.obj `if test -f 'mspack/cabd.c'; then $(CYGPATH_W) 'mspack/cabd.c'; else $(CYGPATH_W) '$(srcdir)/mspack/cabd.c'; fi`
639
-
640
-cabd.lo: mspack/cabd.c
641
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd.lo -MD -MP -MF "$(DEPDIR)/cabd.Tpo" -c -o cabd.lo `test -f 'mspack/cabd.c' || echo '$(srcdir)/'`mspack/cabd.c; \
642
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/cabd.Tpo" "$(DEPDIR)/cabd.Plo"; else rm -f "$(DEPDIR)/cabd.Tpo"; exit 1; fi
643
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/cabd.c' object='cabd.lo' libtool=yes @AMDEPBACKSLASH@
644
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/cabd.Plo' tmpdepfile='$(DEPDIR)/cabd.TPlo' @AMDEPBACKSLASH@
645
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
646
-@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd.lo `test -f 'mspack/cabd.c' || echo '$(srcdir)/'`mspack/cabd.c
647
-
648
-lzxd.o: mspack/lzxd.c
649
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lzxd.o -MD -MP -MF "$(DEPDIR)/lzxd.Tpo" -c -o lzxd.o `test -f 'mspack/lzxd.c' || echo '$(srcdir)/'`mspack/lzxd.c; \
650
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/lzxd.Tpo" "$(DEPDIR)/lzxd.Po"; else rm -f "$(DEPDIR)/lzxd.Tpo"; exit 1; fi
651
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/lzxd.c' object='lzxd.o' libtool=no @AMDEPBACKSLASH@
652
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/lzxd.Po' tmpdepfile='$(DEPDIR)/lzxd.TPo' @AMDEPBACKSLASH@
653
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
654
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lzxd.o `test -f 'mspack/lzxd.c' || echo '$(srcdir)/'`mspack/lzxd.c
655
-
656
-lzxd.obj: mspack/lzxd.c
657
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lzxd.obj -MD -MP -MF "$(DEPDIR)/lzxd.Tpo" -c -o lzxd.obj `if test -f 'mspack/lzxd.c'; then $(CYGPATH_W) 'mspack/lzxd.c'; else $(CYGPATH_W) '$(srcdir)/mspack/lzxd.c'; fi`; \
658
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/lzxd.Tpo" "$(DEPDIR)/lzxd.Po"; else rm -f "$(DEPDIR)/lzxd.Tpo"; exit 1; fi
659
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/lzxd.c' object='lzxd.obj' libtool=no @AMDEPBACKSLASH@
660
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/lzxd.Po' tmpdepfile='$(DEPDIR)/lzxd.TPo' @AMDEPBACKSLASH@
661
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
662
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lzxd.obj `if test -f 'mspack/lzxd.c'; then $(CYGPATH_W) 'mspack/lzxd.c'; else $(CYGPATH_W) '$(srcdir)/mspack/lzxd.c'; fi`
663
-
664
-lzxd.lo: mspack/lzxd.c
665
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lzxd.lo -MD -MP -MF "$(DEPDIR)/lzxd.Tpo" -c -o lzxd.lo `test -f 'mspack/lzxd.c' || echo '$(srcdir)/'`mspack/lzxd.c; \
666
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/lzxd.Tpo" "$(DEPDIR)/lzxd.Plo"; else rm -f "$(DEPDIR)/lzxd.Tpo"; exit 1; fi
667
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/lzxd.c' object='lzxd.lo' libtool=yes @AMDEPBACKSLASH@
668
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/lzxd.Plo' tmpdepfile='$(DEPDIR)/lzxd.TPlo' @AMDEPBACKSLASH@
669
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
670
-@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lzxd.lo `test -f 'mspack/lzxd.c' || echo '$(srcdir)/'`mspack/lzxd.c
671
-
672
-mszipd.o: mspack/mszipd.c
673
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mszipd.o -MD -MP -MF "$(DEPDIR)/mszipd.Tpo" -c -o mszipd.o `test -f 'mspack/mszipd.c' || echo '$(srcdir)/'`mspack/mszipd.c; \
674
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mszipd.Tpo" "$(DEPDIR)/mszipd.Po"; else rm -f "$(DEPDIR)/mszipd.Tpo"; exit 1; fi
675
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/mszipd.c' object='mszipd.o' libtool=no @AMDEPBACKSLASH@
676
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/mszipd.Po' tmpdepfile='$(DEPDIR)/mszipd.TPo' @AMDEPBACKSLASH@
677
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
678
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mszipd.o `test -f 'mspack/mszipd.c' || echo '$(srcdir)/'`mspack/mszipd.c
679
-
680
-mszipd.obj: mspack/mszipd.c
681
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mszipd.obj -MD -MP -MF "$(DEPDIR)/mszipd.Tpo" -c -o mszipd.obj `if test -f 'mspack/mszipd.c'; then $(CYGPATH_W) 'mspack/mszipd.c'; else $(CYGPATH_W) '$(srcdir)/mspack/mszipd.c'; fi`; \
682
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mszipd.Tpo" "$(DEPDIR)/mszipd.Po"; else rm -f "$(DEPDIR)/mszipd.Tpo"; exit 1; fi
683
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/mszipd.c' object='mszipd.obj' libtool=no @AMDEPBACKSLASH@
684
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/mszipd.Po' tmpdepfile='$(DEPDIR)/mszipd.TPo' @AMDEPBACKSLASH@
685
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
686
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mszipd.obj `if test -f 'mspack/mszipd.c'; then $(CYGPATH_W) 'mspack/mszipd.c'; else $(CYGPATH_W) '$(srcdir)/mspack/mszipd.c'; fi`
687
-
688
-mszipd.lo: mspack/mszipd.c
689
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mszipd.lo -MD -MP -MF "$(DEPDIR)/mszipd.Tpo" -c -o mszipd.lo `test -f 'mspack/mszipd.c' || echo '$(srcdir)/'`mspack/mszipd.c; \
690
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mszipd.Tpo" "$(DEPDIR)/mszipd.Plo"; else rm -f "$(DEPDIR)/mszipd.Tpo"; exit 1; fi
691
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/mszipd.c' object='mszipd.lo' libtool=yes @AMDEPBACKSLASH@
692
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/mszipd.Plo' tmpdepfile='$(DEPDIR)/mszipd.TPlo' @AMDEPBACKSLASH@
693
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
694
-@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mszipd.lo `test -f 'mspack/mszipd.c' || echo '$(srcdir)/'`mspack/mszipd.c
695
-
696
-qtmd.o: mspack/qtmd.c
697
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qtmd.o -MD -MP -MF "$(DEPDIR)/qtmd.Tpo" -c -o qtmd.o `test -f 'mspack/qtmd.c' || echo '$(srcdir)/'`mspack/qtmd.c; \
698
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/qtmd.Tpo" "$(DEPDIR)/qtmd.Po"; else rm -f "$(DEPDIR)/qtmd.Tpo"; exit 1; fi
699
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/qtmd.c' object='qtmd.o' libtool=no @AMDEPBACKSLASH@
700
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/qtmd.Po' tmpdepfile='$(DEPDIR)/qtmd.TPo' @AMDEPBACKSLASH@
701
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
702
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qtmd.o `test -f 'mspack/qtmd.c' || echo '$(srcdir)/'`mspack/qtmd.c
703
-
704
-qtmd.obj: mspack/qtmd.c
705
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qtmd.obj -MD -MP -MF "$(DEPDIR)/qtmd.Tpo" -c -o qtmd.obj `if test -f 'mspack/qtmd.c'; then $(CYGPATH_W) 'mspack/qtmd.c'; else $(CYGPATH_W) '$(srcdir)/mspack/qtmd.c'; fi`; \
706
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/qtmd.Tpo" "$(DEPDIR)/qtmd.Po"; else rm -f "$(DEPDIR)/qtmd.Tpo"; exit 1; fi
707
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/qtmd.c' object='qtmd.obj' libtool=no @AMDEPBACKSLASH@
708
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/qtmd.Po' tmpdepfile='$(DEPDIR)/qtmd.TPo' @AMDEPBACKSLASH@
709
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
710
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qtmd.obj `if test -f 'mspack/qtmd.c'; then $(CYGPATH_W) 'mspack/qtmd.c'; else $(CYGPATH_W) '$(srcdir)/mspack/qtmd.c'; fi`
711
-
712
-qtmd.lo: mspack/qtmd.c
713
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qtmd.lo -MD -MP -MF "$(DEPDIR)/qtmd.Tpo" -c -o qtmd.lo `test -f 'mspack/qtmd.c' || echo '$(srcdir)/'`mspack/qtmd.c; \
714
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/qtmd.Tpo" "$(DEPDIR)/qtmd.Plo"; else rm -f "$(DEPDIR)/qtmd.Tpo"; exit 1; fi
715
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/qtmd.c' object='qtmd.lo' libtool=yes @AMDEPBACKSLASH@
716
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/qtmd.Plo' tmpdepfile='$(DEPDIR)/qtmd.TPlo' @AMDEPBACKSLASH@
717
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
718
-@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qtmd.lo `test -f 'mspack/qtmd.c' || echo '$(srcdir)/'`mspack/qtmd.c
719
-
720
-system.o: mspack/system.c
721
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT system.o -MD -MP -MF "$(DEPDIR)/system.Tpo" -c -o system.o `test -f 'mspack/system.c' || echo '$(srcdir)/'`mspack/system.c; \
722
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/system.Tpo" "$(DEPDIR)/system.Po"; else rm -f "$(DEPDIR)/system.Tpo"; exit 1; fi
723
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/system.c' object='system.o' libtool=no @AMDEPBACKSLASH@
724
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/system.Po' tmpdepfile='$(DEPDIR)/system.TPo' @AMDEPBACKSLASH@
725
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
726
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o system.o `test -f 'mspack/system.c' || echo '$(srcdir)/'`mspack/system.c
727
-
728
-system.obj: mspack/system.c
729
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT system.obj -MD -MP -MF "$(DEPDIR)/system.Tpo" -c -o system.obj `if test -f 'mspack/system.c'; then $(CYGPATH_W) 'mspack/system.c'; else $(CYGPATH_W) '$(srcdir)/mspack/system.c'; fi`; \
730
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/system.Tpo" "$(DEPDIR)/system.Po"; else rm -f "$(DEPDIR)/system.Tpo"; exit 1; fi
731
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/system.c' object='system.obj' libtool=no @AMDEPBACKSLASH@
732
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/system.Po' tmpdepfile='$(DEPDIR)/system.TPo' @AMDEPBACKSLASH@
733
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
734
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o system.obj `if test -f 'mspack/system.c'; then $(CYGPATH_W) 'mspack/system.c'; else $(CYGPATH_W) '$(srcdir)/mspack/system.c'; fi`
735
-
736
-system.lo: mspack/system.c
737
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT system.lo -MD -MP -MF "$(DEPDIR)/system.Tpo" -c -o system.lo `test -f 'mspack/system.c' || echo '$(srcdir)/'`mspack/system.c; \
738
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/system.Tpo" "$(DEPDIR)/system.Plo"; else rm -f "$(DEPDIR)/system.Tpo"; exit 1; fi
739
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mspack/system.c' object='system.lo' libtool=yes @AMDEPBACKSLASH@
740
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/system.Plo' tmpdepfile='$(DEPDIR)/system.TPlo' @AMDEPBACKSLASH@
741
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
742
-@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o system.lo `test -f 'mspack/system.c' || echo '$(srcdir)/'`mspack/system.c
743
-
744 624
 mostlyclean-libtool:
745 625
 	-rm -f *.lo
746 626
 
... ...
@@ -788,9 +641,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
788 788
 	  done | \
789 789
 	  $(AWK) '    { files[$$0] = 1; } \
790 790
 	       END { for (i in files) print i; }'`; \
791
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
792
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
793
-	     $$tags $$unique
791
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
792
+	  test -n "$$unique" || unique=$$empty_fix; \
793
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
794
+	    $$tags $$unique; \
795
+	fi
794 796
 ctags: CTAGS
795 797
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
796 798
 		$(TAGS_FILES) $(LISP)
... ...
@@ -17,6 +17,21 @@
17 17
  *
18 18
  * Change History:
19 19
  * $Log: mbox.c,v $
20
+ * Revision 1.88  2004/07/20 14:35:29  nigelhorne
21
+ * Some MYDOOM.I were getting through
22
+ *
23
+ * Revision 1.87  2004/07/19 17:54:40  kojm
24
+ * Use new patter matching algorithm. Cleanup.
25
+ *
26
+ * Revision 1.86  2004/07/06 09:32:45  nigelhorne
27
+ * Better handling of Gibe.3 boundary exploit
28
+ *
29
+ * Revision 1.85  2004/06/30 19:48:58  nigelhorne
30
+ * Some TR.Happy99.SKA were getting through
31
+ *
32
+ * Revision 1.84  2004/06/30 14:30:40  nigelhorne
33
+ * Fix compilation error on Solaris
34
+ *
20 35
  * Revision 1.83  2004/06/28 11:44:45  nigelhorne
21 36
  * Remove empty parts
22 37
  *
... ...
@@ -237,7 +252,7 @@
237 237
  * Compilable under SCO; removed duplicate code with message.c
238 238
  *
239 239
  */
240
-static	char	const	rcsid[] = "$Id: mbox.c,v 1.83 2004/06/28 11:44:45 nigelhorne Exp $";
240
+static	char	const	rcsid[] = "$Id: mbox.c,v 1.88 2004/07/20 14:35:29 nigelhorne Exp $";
241 241
 
242 242
 #if HAVE_CONFIG_H
243 243
 #include "clamav-config.h"
... ...
@@ -285,12 +300,12 @@ static	char	const	rcsid[] = "$Id: mbox.c,v 1.83 2004/06/28 11:44:45 nigelhorne E
285 285
 #if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1
286 286
 #define HAVE_BACKTRACE
287 287
 #endif
288
+#endif
288 289
 
289 290
 #ifdef HAVE_BACKTRACE
290 291
 #include <execinfo.h>
291 292
 #include <signal.h>
292 293
 #include <syslog.h>
293
-#endif
294 294
 
295 295
 static	void	sigsegv(int sig);
296 296
 static	void	print_trace(int use_syslog);
... ...
@@ -445,7 +460,7 @@ cl_mbox(const char *dir, int desc)
445 445
 	m = messageCreate();
446 446
 	if(m == NULL) {
447 447
 		fclose(fd);
448
-		return 0;
448
+		return -1;
449 449
 	}
450 450
 
451 451
 #ifdef	CL_THREAD_SAFE
... ...
@@ -469,7 +484,7 @@ cl_mbox(const char *dir, int desc)
469 469
 	pthread_mutex_unlock(&tables_mutex);
470 470
 #endif
471 471
 
472
-#ifdef	CL_DEBUG
472
+#ifdef HAVE_BACKTRACE
473 473
 	segv = signal(SIGSEGV, sigsegv);
474 474
 #endif
475 475
 
... ...
@@ -556,7 +571,7 @@ cl_mbox(const char *dir, int desc)
556 556
 
557 557
 	cli_dbgmsg("cli_mbox returning %d\n", retcode);
558 558
 
559
-#ifdef	CL_DEBUG
559
+#ifdef HAVE_BACKTRACE
560 560
 	signal(SIGSEGV, segv);
561 561
 #endif
562 562
 
... ...
@@ -650,7 +665,8 @@ parseEmailHeaders(message *m, const table_t *rfc821Table, bool destroy)
650 650
 				free(buffer);
651 651
 		} else {
652 652
 			/*cli_dbgmsg("Add line to body '%s'\n", buffer);*/
653
-			messageAddLine(ret, buffer, 0);
653
+			if(messageAddLine(ret, buffer, 0) < 0)
654
+				break;
654 655
 		}
655 656
 	}
656 657
 
... ...
@@ -775,6 +791,15 @@ parseEmailBody(message *messageIn, blob **blobsIn, int nBlobs, text *textIn, con
775 775
 			break;
776 776
 		case TEXT:
777 777
 			if(tableFind(subtypeTable, mimeSubtype) == PLAIN)
778
+				/*
779
+				 * Consider what to do if this fails
780
+				 * (i.e. aText == NULL):
781
+				 * We mustn't just return since that could
782
+				 * cause a virus to be missed that we
783
+				 * could be capable of scanning. Ignoring
784
+				 * the error is probably the safest, we may be
785
+				 * able to scan anyway and we lose nothing
786
+				 */
778 787
 				aText = textCopy(messageGetBody(mainMessage));
779 788
 			break;
780 789
 		case MULTIPART:
... ...
@@ -846,6 +871,10 @@ parseEmailBody(message *messageIn, blob **blobsIn, int nBlobs, text *textIn, con
846 846
 				messages = cli_realloc(messages, ((multiparts + 1) * sizeof(message *)));
847 847
 
848 848
 				aMessage = messages[multiparts] = messageCreate();
849
+				if(aMessage == NULL) {
850
+					multiparts--;
851
+					continue;
852
+				}
849 853
 
850 854
 				cli_dbgmsg("Now read in part %d\n", multiparts);
851 855
 
... ...
@@ -860,8 +889,17 @@ parseEmailBody(message *messageIn, blob **blobsIn, int nBlobs, text *textIn, con
860 860
 
861 861
 				if(t_line == NULL) {
862 862
 					cli_dbgmsg("Empty part\n");
863
-					messageDestroy(aMessage);
864
-					--multiparts;
863
+					/*
864
+					 * Remove this part unless there's
865
+					 * a uuencoded portion somewhere in
866
+					 * the complete message that we may
867
+					 * throw away by mistake if the MIME
868
+					 * encoding information is incorrect
869
+					 */
870
+					if(uuencodeBegin(mainMessage) == NULL) {
871
+						messageDestroy(aMessage);
872
+						--multiparts;
873
+					}
865 874
 					continue;
866 875
 				}
867 876
 
... ...
@@ -1714,24 +1752,34 @@ parseEmailBody(message *messageIn, blob **blobsIn, int nBlobs, text *textIn, con
1714 1714
 static int
1715 1715
 boundaryStart(const char *line, const char *boundary)
1716 1716
 {
1717
+	cli_dbgmsg("boundaryStart: line = '%s' boundary = '%s'\n", line, boundary);
1718
+	if(line == NULL)
1719
+		return 0;	/* empty line */
1720
+
1721
+	if(*line++ != '-')
1722
+		return 0;
1723
+
1717 1724
 	/*
1718
-	 * Gibe.B3 is broken it has:
1725
+	 * Gibe.B3 is broken, it has:
1719 1726
 	 *	boundary="---- =_NextPart_000_01C31177.9DC7C000"
1720 1727
 	 * but it's boundaries look like
1721 1728
 	 *	------ =_NextPart_000_01C31177.9DC7C000
1722
-	 * notice the extra '-'
1729
+	 * notice the one too few '-'.
1730
+	 * Presumably this is a deliberate exploitation of a bug in some mail
1731
+	 * clients.
1732
+	 *
1733
+	 * The trouble is that this creates a lot of false positives for
1734
+	 * boundary conditions, if we're too lax about matches. We do our level
1735
+	 * best to avoid these false positives. For example if we have
1736
+	 * boundary="1" we want to ensure that we don't break out of every line
1737
+	 * that has -1 in it instead of starting --1. This needs some more work.
1723 1738
 	 */
1724
-	/*cli_dbgmsg("boundaryStart: line = '%s' boundary = '%s'\n", line, boundary);*/
1725
-	if(line == NULL)
1726
-		return 0;	/* empty line */
1727 1739
 	if(strstr(line, boundary) != NULL) {
1728
-		cli_dbgmsg("found %s in %s\n", boundary, line);
1740
+		cli_dbgmsg("boundaryStart: found %s in %s\n", boundary, line);
1729 1741
 		return 1;
1730 1742
 	}
1731 1743
 	if(*line++ != '-')
1732 1744
 		return 0;
1733
-	if(*line++ != '-')
1734
-		return 0;
1735 1745
 	return strcasecmp(line, boundary) == 0;
1736 1746
 }
1737 1747
 
... ...
@@ -1745,6 +1793,7 @@ endOfMessage(const char *line, const char *boundary)
1745 1745
 {
1746 1746
 	size_t len;
1747 1747
 
1748
+	cli_dbgmsg("endOfMessage: line = '%s' boundary = '%s'\n", line, boundary);
1748 1749
 	if(line == NULL)
1749 1750
 		return 0;
1750 1751
 	if(*line++ != '-')
... ...
@@ -17,6 +17,15 @@
17 17
  *
18 18
  * Change History:
19 19
  * $Log: message.c,v $
20
+ * Revision 1.66  2004/07/20 15:17:44  nigelhorne
21
+ * Remove overlapping strcpy
22
+ *
23
+ * Revision 1.65  2004/07/20 14:35:29  nigelhorne
24
+ * Some MYDOOM.I were getting through
25
+ *
26
+ * Revision 1.64  2004/07/02 23:00:57  kojm
27
+ * new method of file type detection; HTML normalisation
28
+ *
20 29
  * Revision 1.63  2004/06/26 13:16:25  nigelhorne
21 30
  * Added newline to end of warning message
22 31
  *
... ...
@@ -186,7 +195,7 @@
186 186
  * uuencodebegin() no longer static
187 187
  *
188 188
  */
189
-static	char	const	rcsid[] = "$Id: message.c,v 1.63 2004/06/26 13:16:25 nigelhorne Exp $";
189
+static	char	const	rcsid[] = "$Id: message.c,v 1.66 2004/07/20 15:17:44 nigelhorne Exp $";
190 190
 
191 191
 #if HAVE_CONFIG_H
192 192
 #include "clamav-config.h"
... ...
@@ -235,8 +244,9 @@ static	char	const	rcsid[] = "$Id: message.c,v 1.63 2004/06/26 13:16:25 nigelhorn
235 235
 
236 236
 typedef enum { FALSE = 0, TRUE = 1 } bool;
237 237
 
238
-static	unsigned char	*decodeLine(const message *m, const char *line, unsigned char *buf, size_t buflen);
239
-static unsigned char *decode(const char *in, unsigned char *out, unsigned char (*decoder)(char), bool isFast);
238
+static	unsigned char	*decodeLine(message *m, const char *line, unsigned char *buf, size_t buflen);
239
+static unsigned char *decode(message *m, const char *in, unsigned char *out, unsigned char (*decoder)(char), bool isFast);
240
+static	void	squeeze(char *s);
240 241
 static	unsigned	char	hex(char c);
241 242
 static	unsigned	char	base64(char c);
242 243
 static	unsigned	char	uudecode(char c);
... ...
@@ -318,6 +328,8 @@ messageReset(message *m)
318 318
 	if(m->body_first)
319 319
 		textDestroy(m->body_first);
320 320
 
321
+	assert(m->base64chars == 0);
322
+
321 323
 	memset(m, '\0', sizeof(message));
322 324
 	m->mimeType = NOMIME;
323 325
 	m->encodingType = NOENCODING;
... ...
@@ -944,7 +956,7 @@ messageToBlob(message *m)
944 944
 		unsigned char *uptr, *data;
945 945
 		char *ptr;
946 946
 		int bytenumber;
947
-		blob *tmp = blobCreate();
947
+		blob *tmp;
948 948
 
949 949
 		/*
950 950
 		 * Table look up by Thomas Lamy <Thomas.Lamy@in-online.net>
... ...
@@ -962,6 +974,13 @@ messageToBlob(message *m)
962 962
 		/* 70-7f */	0x3d,0x3e,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
963 963
 		};
964 964
 
965
+		tmp = blobCreate();
966
+
967
+		if(tmp == NULL) {
968
+			blobDestroy(b);
969
+			return NULL;
970
+		}
971
+
965 972
 		/*
966 973
 		 * Decode BinHex4. First create a temporary blob which contains
967 974
 		 * the encoded message. Then decode that blob to the target
... ...
@@ -1074,6 +1093,11 @@ messageToBlob(message *m)
1074 1074
 		if(memchr(data, 0x90, newlen)) {
1075 1075
 			blob *u = blobCreate();	/* uncompressed data */
1076 1076
 
1077
+			if(u == NULL) {
1078
+				blobDestroy(b);
1079
+				blobDestroy(tmp);
1080
+				return NULL;
1081
+			}
1077 1082
 			/*
1078 1083
 			 * Includes compression
1079 1084
 			 */
... ...
@@ -1259,7 +1283,7 @@ messageToBlob(message *m)
1259 1259
 		 * the last byte and should be used as evidence
1260 1260
 		 * of the end of the data. Some mail clients
1261 1261
 		 * annoyingly then put plain text after the '='
1262
-		 * bytes. Sigh
1262
+		 * byte and viruses exploit this bug. Sigh
1263 1263
 		 */
1264 1264
 		/*if(messageGetEncoding(m) == BASE64)
1265 1265
 			if(strchr(line, '='))
... ...
@@ -1267,6 +1291,17 @@ messageToBlob(message *m)
1267 1267
 
1268 1268
 	} while((t_line = t_line->t_next) != NULL);
1269 1269
 
1270
+	/* Verify we have nothing left to flush out */
1271
+	if(m->base64chars) {
1272
+		unsigned char data[4];
1273
+		unsigned char *ptr;
1274
+
1275
+		ptr = decode(m, NULL, data, base64, FALSE);
1276
+		if(ptr)
1277
+			blobAddData(b, data, (size_t)(ptr - data));
1278
+		m->base64chars = 0;
1279
+	}
1280
+
1270 1281
 	return b;
1271 1282
 }
1272 1283
 
... ...
@@ -1275,7 +1310,7 @@ messageToBlob(message *m)
1275 1275
  * The caller must free the returned text
1276 1276
  */
1277 1277
 text *
1278
-messageToText(const message *m)
1278
+messageToText(message *m)
1279 1279
 {
1280 1280
 	text *first = NULL, *last = NULL;
1281 1281
 	const text *t_line;
... ...
@@ -1298,7 +1333,8 @@ messageToText(const message *m)
1298 1298
 			   ((last->t_text = strdup(t_line->t_text)) == NULL)) {
1299 1299
 				if(last)
1300 1300
 					free(last);
1301
-				textDestroy(first);
1301
+				if(first)
1302
+					textDestroy(first);
1302 1303
 				return NULL;
1303 1304
 			}
1304 1305
 		}
... ...
@@ -1322,7 +1358,14 @@ messageToText(const message *m)
1322 1322
 			unsigned char *uptr;
1323 1323
 			const char *line = t_line->t_text;
1324 1324
 
1325
-			if(messageGetEncoding(m) == UUENCODE)
1325
+			if(messageGetEncoding(m) == BASE64) {
1326
+				/*
1327
+				 * ignore blanks - breaks RFC which is
1328
+				 * probably the point!
1329
+				 */
1330
+				if(line == NULL)
1331
+					continue;
1332
+			} else if(messageGetEncoding(m) == UUENCODE)
1326 1333
 				if(strcasecmp(line, "end") == 0)
1327 1334
 					break;
1328 1335
 
... ...
@@ -1478,7 +1521,7 @@ encodingLine(const message *m)
1478 1478
  * len is sizeof(ptr)
1479 1479
  */
1480 1480
 static unsigned char *
1481
-decodeLine(const message *m, const char *line, unsigned char *buf, size_t buflen)
1481
+decodeLine(message *m, const char *line, unsigned char *buf, size_t buflen)
1482 1482
 {
1483 1483
 	size_t len;
1484 1484
 	bool softbreak;
... ...
@@ -1510,7 +1553,7 @@ decodeLine(const message *m, const char *line, unsigned char *buf, size_t buflen
1510 1510
 				*buf++ = '\n';
1511 1511
 				break;
1512 1512
 			}
1513
-			
1513
+
1514 1514
 			softbreak = FALSE;
1515 1515
 			while(*line) {
1516 1516
 				if(*line == '=') {
... ...
@@ -1559,11 +1602,17 @@ decodeLine(const message *m, const char *line, unsigned char *buf, size_t buflen
1559 1559
 			p2 = strchr(copy, '=');
1560 1560
 			if(p2)
1561 1561
 				*p2 = '\0';
1562
+			squeeze(copy);
1563
+
1562 1564
 			/*
1563 1565
 			 * Klez doesn't always put "=" on the last line
1564 1566
 			 */
1565
-			buf = decode(copy, buf, base64, (p2 == NULL) && ((strlen(copy) & 3) == 0));
1566
-			/*buf = decode(copy, buf, base64, FALSE);*/
1567
+			buf = decode(m, copy, buf, base64, (p2 == NULL) && ((strlen(copy) & 3) == 0));
1568
+			if(p2)
1569
+				/* flush the read ahead bytes */
1570
+				buf = decode(m, NULL, buf, base64, FALSE);
1571
+
1572
+			/*buf = decode(m, copy, buf, base64, FALSE);*/
1567 1573
 
1568 1574
 			free(copy);
1569 1575
 			break;
... ...
@@ -1589,7 +1638,7 @@ decodeLine(const message *m, const char *line, unsigned char *buf, size_t buflen
1589 1589
 				 */
1590 1590
 				cli_warnmsg("uudecode: buffer overflow stopped, attempting to ignore but decoding may fail\n");
1591 1591
 			else
1592
-				buf = decode(line, buf, uudecode, (len & 3) == 0);
1592
+				buf = decode(m, line, buf, uudecode, (len & 3) == 0);
1593 1593
 			break;
1594 1594
 	}
1595 1595
 
... ...
@@ -1598,10 +1647,185 @@ decodeLine(const message *m, const char *line, unsigned char *buf, size_t buflen
1598 1598
 }
1599 1599
 
1600 1600
 /*
1601
+ * Remove the spaces from the middle of a string. Spaces shouldn't appear
1602
+ * mid string in base64 files, but some broken mail clients ignore such
1603
+ * errors rather than discarding the mail, and virus writers exploit this bug
1604
+ */
1605
+static void
1606
+squeeze(char *s)
1607
+{
1608
+	while((s = strchr(s, ' ')) != NULL) {
1609
+		/*strcpy(s, &s[1]);*/	/* overlapping strcpy */
1610
+
1611
+		char *p1;
1612
+
1613
+		for(p1 = s; p1[0] != '\0'; p1++)
1614
+			p1[0] = p1[1];
1615
+	}
1616
+}
1617
+
1618
+/*
1601 1619
  * Returns one byte after the end of the decoded data in "out"
1620
+ *
1621
+ * Update m->base64chars with the last few bytes of data that we haven't
1622
+ * decoded. After the last line is found, decode will be called with in = NULL
1623
+ * to flush these out
1602 1624
  */
1625
+#if	1
1626
+static unsigned char *
1627
+decode(message *m, const char *in, unsigned char *out, unsigned char (*decoder)(char), bool isFast)
1628
+{
1629
+	unsigned char b1, b2, b3, b4;
1630
+	unsigned char cb1, cb2, cb3;	/* carried over from last line */
1631
+
1632
+	/*cli_dbgmsg("decode %s (len %d ifFast %d base64chars %d)\n", in,
1633
+		in ? strlen(in) : 0,
1634
+		isFast, m->base64chars);*/
1635
+
1636
+	cb1 = cb2 = cb3 = '\0';
1637
+
1638
+	switch(m->base64chars) {
1639
+		case 3:
1640
+			cb3 = m->base64_3;
1641
+			/* FALLTHROUGH */
1642
+		case 2:
1643
+			cb2 = m->base64_2;
1644
+			/* FALLTHROUGH */
1645
+		case 1:
1646
+			cb1 = m->base64_1;
1647
+			isFast = FALSE;
1648
+			break;
1649
+		default:
1650
+			assert(m->base64chars <= 3);
1651
+	}
1652
+
1653
+	if(isFast)
1654
+		/* Fast decoding if not last line */
1655
+		while(*in) {
1656
+			b1 = (*decoder)(*in++);
1657
+			b2 = (*decoder)(*in++);
1658
+			b3 = (*decoder)(*in++);
1659
+			/*
1660
+			 * Put this line here to help on some compilers which
1661
+			 * can make use of some architecure's ability to
1662
+			 * multiprocess when different variables can be
1663
+			 * updated at the same time - here b3 is used in
1664
+			 * one line, b1/b2 in the next and b4 in the next after
1665
+			 * that, b3 and b4 rely on in but b1/b2 don't
1666
+			 */
1667
+			*out++ = (b1 << 2) | ((b2 >> 4) & 0x3);
1668
+			b4 = (*decoder)(*in++);
1669
+			*out++ = (b2 << 4) | ((b3 >> 2) & 0xF);
1670
+			*out++ = (b3 << 6) | (b4 & 0x3F);
1671
+		}
1672
+	else {
1673
+		if(in == NULL) {	/* flush */
1674
+			int nbytes = m->base64chars;
1675
+
1676
+			if(nbytes == 0)
1677
+				return out;
1678
+
1679
+			m->base64chars--;
1680
+			b1 = cb1;
1681
+
1682
+			if(m->base64chars) {
1683
+				m->base64chars--;
1684
+				b2 = cb2;
1685
+
1686
+				if(m->base64chars) {
1687
+					m->base64chars--;
1688
+					b3 = cb3;
1689
+					assert(m->base64chars == 0);
1690
+				}
1691
+			}
1692
+
1693
+			switch(nbytes) {
1694
+				case 3:
1695
+					b4 = '\0';
1696
+					/* fall through */
1697
+				case 4:
1698
+					*out++ = (b1 << 2) | ((b2 >> 4) & 0x3);
1699
+					*out++ = (b2 << 4) | ((b3 >> 2) & 0xF);
1700
+					*out++ = (b3 << 6) | (b4 & 0x3F);
1701
+					break;
1702
+				case 2:
1703
+					*out++ = (b1 << 2) | ((b2 >> 4) & 0x3);
1704
+					*out++ = b2 << 4;
1705
+					break;
1706
+				case 1:
1707
+					*out++ = b1 << 2;
1708
+					break;
1709
+				default:
1710
+					assert(0);
1711
+			}
1712
+
1713
+		} else while(*in) {
1714
+		/* Slower decoding for last line */
1715
+			int nbytes;
1716
+
1717
+			if(m->base64chars) {
1718
+				m->base64chars--;
1719
+				b1 = cb1;
1720
+			} else
1721
+				b1 = (*decoder)(*in++);
1722
+
1723
+			if(*in == '\0') {
1724
+				b2 = '\0';
1725
+				nbytes = 1;
1726
+			} else {
1727
+				if(m->base64chars) {
1728
+					m->base64chars--;
1729
+					b2 = cb2;
1730
+				} else
1731
+					b2 = (*decoder)(*in++);
1732
+
1733
+				if(*in == '\0') {
1734
+					b3 = '\0';
1735
+					nbytes = 2;
1736
+				} else {
1737
+					if(m->base64chars) {
1738
+						m->base64chars--;
1739
+						b3 = cb3;
1740
+					} else
1741
+						b3 = (*decoder)(*in++);
1742
+
1743
+					if(*in == '\0') {
1744
+						b4 = '\0';
1745
+						nbytes = 3;
1746
+					} else {
1747
+						b4 = (*decoder)(*in++);
1748
+						nbytes = 4;
1749
+					}
1750
+				}
1751
+			}
1752
+
1753
+			switch(nbytes) {
1754
+				case 3:
1755
+					m->base64_3 = b3;
1756
+				case 2:
1757
+					m->base64_2 = b2;
1758
+				case 1:
1759
+					m->base64_1 = b1;
1760
+					break;
1761
+				case 4:
1762
+					*out++ = (b1 << 2) | ((b2 >> 4) & 0x3);
1763
+					*out++ = (b2 << 4) | ((b3 >> 2) & 0xF);
1764
+					*out++ = (b3 << 6) | (b4 & 0x3F);
1765
+					break;
1766
+				default:
1767
+					assert(0);
1768
+			}
1769
+			if(nbytes != 4) {
1770
+				m->base64chars = nbytes;
1771
+				break;
1772
+			}
1773
+		}
1774
+	}
1775
+	return out;
1776
+}
1777
+#else
1603 1778
 static unsigned char *
1604
-decode(const char *in, unsigned char *out, unsigned char (*decoder)(char), bool isFast)
1779
+decode(message *m, const char *in, unsigned char *out, unsigned char (*decoder)(char), bool isFast)
1605 1780
 {
1606 1781
 	unsigned char b1, b2, b3, b4;
1607 1782
 
... ...
@@ -1676,6 +1900,7 @@ decode(const char *in, unsigned char *out, unsigned char (*decoder)(char), bool
1676 1676
 		}
1677 1677
 	return out;
1678 1678
 }
1679
+#endif
1679 1680
 
1680 1681
 static unsigned char
1681 1682
 hex(char c)
... ...
@@ -16,6 +16,9 @@
16 16
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 17
  *
18 18
  * $Log: message.h,v $
19
+ * Revision 1.12  2004/07/20 14:35:29  nigelhorne
20
+ * Some MYDOOM.I were getting through
21
+ *
19 22
  * Revision 1.11  2004/05/06 18:01:25  nigelhorne
20 23
  * Force attachments marked as RFC822 messages to be scanned
21 24
  *
... ...
@@ -53,6 +56,9 @@ typedef struct message {
53 53
 	char	**mimeArguments;
54 54
 	char	*mimeDispositionType;	/* probably attachment */
55 55
 	text	*body_first, *body_last;
56
+
57
+	char	base64_1, base64_2, base64_3;
58
+	int	base64chars;
56 59
 	/*
57 60
 	 * Markers for the start of various non MIME messages that could
58 61
 	 * be included within this message
... ...
@@ -82,7 +88,7 @@ int	messageAddLineAtTop(message *m, const char *line);
82 82
 const	text	*messageGetBody(const message *m);
83 83
 void	messageClean(message *m);
84 84
 blob	*messageToBlob(message *m);
85
-text	*messageToText(const message *m);
85
+text	*messageToText(message *m);
86 86
 const	text	*uuencodeBegin(const message *m);
87 87
 const	text	*binhexBegin(const message *m);
88 88
 const	text	*bounceBegin(const message *m);
89 89
deleted file mode 100644
... ...
@@ -1,127 +0,0 @@
1
-/* This file is part of libmspack.
2
- * (C) 2003-2004 Stuart Caie.
3
- *
4
- * libmspack is free software; you can redistribute it and/or modify it under
5
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
6
- *
7
- * For further details, see the file COPYING.LIB distributed with libmspack
8
- */
9
-
10
-#ifndef MSPACK_CAB_H
11
-#define MSPACK_CAB_H 1
12
-
13
-#include <mszip.h>
14
-#include <qtm.h>
15
-#include <lzx.h>
16
-
17
-/* generic CAB definitions */
18
-
19
-/* structure offsets */
20
-#define cfhead_Signature         (0x00)
21
-#define cfhead_CabinetSize       (0x08)
22
-#define cfhead_FileOffset        (0x10)
23
-#define cfhead_MinorVersion      (0x18)
24
-#define cfhead_MajorVersion      (0x19)
25
-#define cfhead_NumFolders        (0x1A)
26
-#define cfhead_NumFiles          (0x1C)
27
-#define cfhead_Flags             (0x1E)
28
-#define cfhead_SetID             (0x20)
29
-#define cfhead_CabinetIndex      (0x22)
30
-#define cfhead_SIZEOF            (0x24)
31
-#define cfheadext_HeaderReserved (0x00)
32
-#define cfheadext_FolderReserved (0x02)
33
-#define cfheadext_DataReserved   (0x03)
34
-#define cfheadext_SIZEOF         (0x04)
35
-#define cffold_DataOffset        (0x00)
36
-#define cffold_NumBlocks         (0x04)
37
-#define cffold_CompType          (0x06)
38
-#define cffold_SIZEOF            (0x08)
39
-#define cffile_UncompressedSize  (0x00)
40
-#define cffile_FolderOffset      (0x04)
41
-#define cffile_FolderIndex       (0x08)
42
-#define cffile_Date              (0x0A)
43
-#define cffile_Time              (0x0C)
44
-#define cffile_Attribs           (0x0E)
45
-#define cffile_SIZEOF            (0x10)
46
-#define cfdata_CheckSum          (0x00)
47
-#define cfdata_CompressedSize    (0x04)
48
-#define cfdata_UncompressedSize  (0x06)
49
-#define cfdata_SIZEOF            (0x08)
50
-
51
-/* flags */
52
-#define cffoldCOMPTYPE_MASK            (0x000f)
53
-#define cffoldCOMPTYPE_NONE            (0x0000)
54
-#define cffoldCOMPTYPE_MSZIP           (0x0001)
55
-#define cffoldCOMPTYPE_QUANTUM         (0x0002)
56
-#define cffoldCOMPTYPE_LZX             (0x0003)
57
-#define cfheadPREV_CABINET             (0x0001)
58
-#define cfheadNEXT_CABINET             (0x0002)
59
-#define cfheadRESERVE_PRESENT          (0x0004)
60
-#define cffileCONTINUED_FROM_PREV      (0xFFFD)
61
-#define cffileCONTINUED_TO_NEXT        (0xFFFE)
62
-#define cffileCONTINUED_PREV_AND_NEXT  (0xFFFF)
63
-
64
-/* CAB data blocks are <= 32768 bytes in uncompressed form. Uncompressed
65
- * blocks have zero growth. MSZIP guarantees that it won't grow above
66
- * uncompressed size by more than 12 bytes. LZX guarantees it won't grow
67
- * more than 6144 bytes. Quantum has no documentation, but the largest
68
- * block seen in the wild is 337 bytes above uncompressed size.
69
- */
70
-#define CAB_BLOCKMAX (32768)
71
-#define CAB_INPUTMAX (CAB_BLOCKMAX+6144)
72
-
73
-/* CAB compression definitions */
74
-
75
-struct mscab_compressor_p {
76
-  struct mscab_compressor base;
77
-  struct mspack_system *system;
78
-  /* todo */
79
-};
80
-
81
-/* CAB decompression definitions */
82
-
83
-struct mscabd_decompress_state {
84
-  struct mscabd_folder_p *folder;    /* current folder we're extracting from */
85
-  struct mscabd_folder_data *data;   /* current folder split we're in        */
86
-  unsigned int offset;               /* uncompressed offset within folder    */
87
-  unsigned int block;                /* which block are we decompressing?    */
88
-  struct mspack_system sys;          /* special I/O code for decompressor    */
89
-  int comp_type;                     /* type of compression used by folder   */
90
-  int (*decompress)(void *, off_t);  /* decompressor code                    */
91
-  void *state;                       /* decompressor state                   */
92
-  struct mscabd_cabinet_p *incab;    /* cabinet where input data comes from  */
93
-  struct mspack_file *infh;          /* input file handle                    */
94
-  struct mspack_file *outfh;         /* output file handle                   */
95
-  unsigned char *i_ptr, *i_end;      /* input data consumed, end             */
96
-  unsigned char input[CAB_INPUTMAX]; /* one input block of data              */
97
-};
98
-
99
-struct mscab_decompressor_p {
100
-  struct mscab_decompressor base;
101
-  struct mscabd_decompress_state *d;
102
-  struct mspack_system *system;
103
-  int param[3]; /* !!! MATCH THIS TO NUM OF PARAMS IN MSPACK.H !!! */
104
-  int error;
105
-};
106
-
107
-struct mscabd_cabinet_p {
108
-  struct mscabd_cabinet base;
109
-  off_t blocks_off;                  /* offset to data blocks                */
110
-  int block_resv;                    /* reserved space in data blocks        */
111
-};
112
-
113
-/* there is one of these for every cabinet a folder spans */
114
-struct mscabd_folder_data {
115
-  struct mscabd_folder_data *next;
116
-  struct mscabd_cabinet_p *cab;      /* cabinet file of this folder span     */
117
-  off_t offset;                      /* cabinet offset of first datablock    */
118
-};
119
-
120
-struct mscabd_folder_p {
121
-  struct mscabd_folder base;
122
-  struct mscabd_folder_data data;    /* where are the data blocks?           */
123
-  struct mscabd_file *merge_prev;    /* do we need to merge backwards?       */
124
-  struct mscabd_file *merge_next;    /* do we need to merge forwards?        */
125
-};
126
-
127
-#endif
128 1
deleted file mode 100644
... ...
@@ -1,1519 +0,0 @@
1
-/* WARNING: This version also supports dopen for descriptor opening and
2
- *	    is not compatible with the original version. -- T. Kojm
3
- *
4
- * This file is part of libmspack.
5
- * (C) 2003-2004 Stuart Caie.
6
- *
7
- * libmspack is free software; you can redistribute it and/or modify it under
8
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
9
- *
10
- * For further details, see the file COPYING.LIB distributed with libmspack
11
- */
12
-
13
-/* Cabinet (.CAB) files are a form of file archive. Each cabinet contains
14
- * "folders", which are compressed spans of data. Each cabinet has
15
- * "files", whose metadata is in the cabinet header, but whose actual data
16
- * is stored compressed in one of the "folders". Cabinets can span more
17
- * than one physical file on disk, in which case they are a "cabinet set",
18
- * and usually the last folder of each cabinet extends into the next
19
- * cabinet.
20
- *
21
- * For a complete description of the format, get the official Microsoft
22
- * CAB SDK. It can be found at the following URL:
23
- *
24
- *   http://msdn.microsoft.com/library/en-us/dncabsdk/html/cabdl.asp
25
- *
26
- * It is a self-extracting ZIP file, which can be extracted with the unzip
27
- * command.
28
- */
29
-
30
-/* CAB decompression implementation */
31
-
32
-#if HAVE_CONFIG_H
33
-#include "clamav-config.h"
34
-#endif
35
-
36
-#include <mspack.h>
37
-#include <system.h>
38
-#include <cab.h>
39
-
40
-/* Notes on compliance with cabinet specification:
41
- *
42
- * One of the main changes between cabextract 0.6 and libmspack's cab
43
- * decompressor is the move from block-oriented decompression to
44
- * stream-oriented decompression.
45
- *
46
- * cabextract would read one data block from disk, decompress it with the
47
- * appropriate method, then write the decompressed data. The CAB
48
- * specification is specifically designed to work like this, as it ensures
49
- * compression matches do not span the maximum decompressed block size
50
- * limit of 32kb.
51
- *
52
- * However, the compression algorithms used are stream oriented, with
53
- * specific hacks added to them to enforce the "individual 32kb blocks"
54
- * rule in CABs. In other file formats, they do not have this limitation.
55
- *
56
- * In order to make more generalised decompressors, libmspack's CAB
57
- * decompressor has moved from being block-oriented to more stream
58
- * oriented. This also makes decompression slightly faster.
59
- *
60
- * However, this leads to incompliance with the CAB specification. The
61
- * CAB controller can no longer ensure each block of input given to the
62
- * decompressors is matched with their output. The "decompressed size" of
63
- * each individual block is thrown away.
64
- *
65
- * Each CAB block is supposed to be seen as individually compressed. This
66
- * means each consecutive data block can have completely different
67
- * "uncompressed" sizes, ranging from 1 to 32768 bytes. However, in
68
- * reality, all data blocks in a folder decompress to exactly 32768 bytes,
69
- * excepting the final block. 
70
- *
71
- * Given this situation, the decompression algorithms are designed to
72
- * realign their input bitstreams on 32768 output-byte boundaries, and
73
- * various other special cases have been made. libmspack will not
74
- * correctly decompress LZX or Quantum compressed folders where the blocks
75
- * do not follow this "32768 bytes until last block" pattern. It could be
76
- * implemented if needed, but hopefully this is not necessary -- it has
77
- * not been seen in over 3Gb of CAB archives.
78
- */
79
-
80
-/* prototypes */
81
-static struct mscabd_cabinet * cabd_open(
82
-  struct mscab_decompressor *base, char *filename);
83
-static struct mscabd_cabinet * cabd_dopen(
84
-  struct mscab_decompressor *base, int desc);
85
-static void cabd_close(
86
-  struct mscab_decompressor *base, struct mscabd_cabinet *origcab);
87
-static int cabd_read_headers(
88
-  struct mspack_system *sys, struct mspack_file *fh,
89
-  struct mscabd_cabinet_p *cab, off_t offset, int quiet);
90
-static char *cabd_read_string(
91
-  struct mspack_system *sys, struct mspack_file *fh,
92
-  struct mscabd_cabinet_p *cab, int *error);
93
-
94
-static struct mscabd_cabinet *cabd_search(
95
-  struct mscab_decompressor *base, char *filename);
96
-static struct mscabd_cabinet *cabd_dsearch(
97
-  struct mscab_decompressor *base, int desc);
98
-static int cabd_find(
99
-  struct mscab_decompressor_p *this, unsigned char *buf,
100
-  struct mspack_file *fh, char *filename, int desc, off_t flen,
101
-  unsigned int *firstlen, struct mscabd_cabinet_p **firstcab);
102
-
103
-static int cabd_prepend(
104
-  struct mscab_decompressor *base, struct mscabd_cabinet *cab,
105
-  struct mscabd_cabinet *prevcab);
106
-static int cabd_append(
107
-  struct mscab_decompressor *base, struct mscabd_cabinet *cab,
108
-  struct mscabd_cabinet *nextcab);
109
-static int cabd_merge(
110
-  struct mscab_decompressor *base, struct mscabd_cabinet *lcab,
111
-  struct mscabd_cabinet *rcab);
112
-
113
-static int cabd_extract(
114
-  struct mscab_decompressor *base, struct mscabd_file *file, char *filename);
115
-static int cabd_init_decomp(
116
-  struct mscab_decompressor_p *this, unsigned int ct);
117
-static void cabd_free_decomp(
118
-  struct mscab_decompressor_p *this);
119
-static int cabd_sys_read(
120
-  struct mspack_file *file, void *buffer, int bytes);
121
-static int cabd_sys_write(
122
-  struct mspack_file *file, void *buffer, int bytes);
123
-static int cabd_sys_read_block(
124
-  struct mspack_system *sys, struct mscabd_decompress_state *d, int *out,
125
-  int ignore_cksum);
126
-static unsigned int cabd_checksum(
127
-  unsigned char *data, unsigned int bytes, unsigned int cksum);
128
-static struct noned_state *noned_init(
129
-  struct mspack_system *sys, struct mspack_file *in, struct mspack_file *out,
130
-  int bufsize);
131
-
132
-static int noned_decompress(
133
-  struct noned_state *s, off_t bytes);
134
-static void noned_free(
135
-  struct noned_state *state);
136
-
137
-static int cabd_param(
138
-  struct mscab_decompressor *base, int param, int value);
139
-
140
-static int cabd_error(
141
-  struct mscab_decompressor *base);
142
-
143
-
144
-/***************************************
145
- * MSPACK_CREATE_CAB_DECOMPRESSOR
146
- ***************************************
147
- * constructor
148
- */
149
-struct mscab_decompressor *
150
-  mspack_create_cab_decompressor(struct mspack_system *sys)
151
-{
152
-  struct mscab_decompressor_p *this = NULL;
153
-
154
-  if (!sys) sys = mspack_default_system;
155
-  if (!mspack_valid_system(sys)) return NULL;
156
-
157
-  if ((this = sys->alloc(sys, sizeof(struct mscab_decompressor_p)))) {
158
-    this->base.open       = &cabd_open;
159
-    this->base.dopen      = &cabd_dopen;
160
-    this->base.close      = &cabd_close;
161
-    this->base.search     = &cabd_search;
162
-    this->base.dsearch    = &cabd_dsearch;
163
-    this->base.extract    = &cabd_extract;
164
-    this->base.prepend    = &cabd_prepend;
165
-    this->base.append     = &cabd_append;
166
-    this->base.set_param  = &cabd_param;
167
-    this->base.last_error = &cabd_error;
168
-    this->system          = sys;
169
-    this->d               = NULL;
170
-    this->error           = MSPACK_ERR_OK;
171
-
172
-    this->param[MSCABD_PARAM_SEARCHBUF] = 32768;
173
-    this->param[MSCABD_PARAM_FIXMSZIP]  = 0;
174
-    this->param[MSCABD_PARAM_DECOMPBUF] = 4096;
175
-  }
176
-  return (struct mscab_decompressor *) this;
177
-}
178
-
179
-/***************************************
180
- * MSPACK_DESTROY_CAB_DECOMPRESSOR
181
- ***************************************
182
- * destructor
183
- */
184
-void mspack_destroy_cab_decompressor(struct mscab_decompressor *base) {
185
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
186
-  if (this) {
187
-    struct mspack_system *sys = this->system;
188
-    cabd_free_decomp(this);
189
-    if (this->d) {
190
-      if (this->d->infh) sys->close(this->d->infh);
191
-      sys->free(this->d);
192
-    }
193
-    sys->free(this);
194
-  }
195
-}
196
-
197
-
198
-/***************************************
199
- * CABD_OPEN
200
- ***************************************
201
- * opens a file and tries to read it as a cabinet file
202
- */
203
-static struct mscabd_cabinet *cabd_open(struct mscab_decompressor *base,
204
-					char *filename)
205
-{
206
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
207
-  struct mscabd_cabinet_p *cab = NULL;
208
-  struct mspack_system *sys;
209
-  struct mspack_file *fh;
210
-  int error;
211
-
212
-  if (!base) return NULL;
213
-  sys = this->system;
214
-
215
-  if ((fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ))) {
216
-    if ((cab = sys->alloc(sys, sizeof(struct mscabd_cabinet_p)))) {
217
-      cab->base.filename = filename;
218
-      /* cab->base.desc = 0; */
219
-      error = cabd_read_headers(sys, fh, cab, (off_t) 0, 0);
220
-      if (error) {
221
-	cabd_close(base, (struct mscabd_cabinet *) cab);
222
-	cab = NULL;
223
-      }
224
-      this->error = error;
225
-    }
226
-    else {
227
-      this->error = MSPACK_ERR_NOMEMORY;
228
-    }
229
-    sys->close(fh);
230
-  }
231
-  else {
232
-    this->error = MSPACK_ERR_OPEN;
233
-  }
234
-  return (struct mscabd_cabinet *) cab;
235
-}
236
-
237
-static struct mscabd_cabinet *cabd_dopen(struct mscab_decompressor *base,
238
-					int desc)
239
-{
240
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
241
-  struct mscabd_cabinet_p *cab = NULL;
242
-  struct mspack_system *sys;
243
-  struct mspack_file *fh;
244
-  int error;
245
-
246
-  if (!base) return NULL;
247
-  sys = this->system;
248
-
249
-  if ((fh = sys->dopen(sys, desc, MSPACK_SYS_OPEN_READ))) {
250
-    if ((cab = sys->alloc(sys, sizeof(struct mscabd_cabinet_p)))) {
251
-      cab->base.filename = "descriptor";
252
-      cab->base.desc = desc;
253
-      error = cabd_read_headers(sys, fh, cab, (off_t) 0, 0);
254
-      if (error) {
255
-	cabd_close(base, (struct mscabd_cabinet *) cab);
256
-	cab = NULL;
257
-      }
258
-      this->error = error;
259
-    }
260
-    else {
261
-      this->error = MSPACK_ERR_NOMEMORY;
262
-    }
263
-    sys->close(fh);
264
-  }
265
-  else {
266
-    this->error = MSPACK_ERR_OPEN;
267
-  }
268
-  return (struct mscabd_cabinet *) cab;
269
-}
270
-
271
-/***************************************
272
- * CABD_CLOSE
273
- ***************************************
274
- * frees all memory associated with a given mscabd_cabinet.
275
- */
276
-static void cabd_close(struct mscab_decompressor *base,
277
-		       struct mscabd_cabinet *origcab)
278
-{
279
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
280
-  struct mscabd_folder_data *dat, *ndat;
281
-  struct mscabd_cabinet *cab, *ncab;
282
-  struct mscabd_folder *fol, *nfol;
283
-  struct mscabd_file *fi, *nfi;
284
-  struct mspack_system *sys;
285
-
286
-  if (!base) return;
287
-  sys = this->system;
288
-
289
-  this->error = MSPACK_ERR_OK;
290
-
291
-  while (origcab) {
292
-    /* free files */
293
-    for (fi = origcab->files; fi; fi = nfi) {
294
-      nfi = fi->next;
295
-      sys->free(fi->filename);
296
-      sys->free(fi);
297
-    }
298
-
299
-    /* free folders */
300
-    for (fol = origcab->folders; fol; fol = nfol) {
301
-      nfol = fol->next;
302
-
303
-      /* free folder decompression state if it has been decompressed */
304
-      if (this->d && (this->d->folder == (struct mscabd_folder_p *) fol)) {
305
-	if (this->d->infh) sys->close(this->d->infh);
306
-	cabd_free_decomp(this);
307
-	sys->free(this->d);
308
-	this->d = NULL;
309
-      }
310
-
311
-      /* free folder data segments */
312
-      for (dat = ((struct mscabd_folder_p *)fol)->data.next; dat; dat = ndat) {
313
-	ndat = dat->next;
314
-	sys->free(dat);
315
-      }
316
-      sys->free(fol);
317
-    }
318
-
319
-    /* free predecessor cabinets (and the original cabinet's strings) */
320
-    for (cab = origcab; cab; cab = ncab) {
321
-      ncab = cab->prevcab;
322
-      sys->free(cab->prevname);
323
-      sys->free(cab->nextname);
324
-      sys->free(cab->previnfo);
325
-      sys->free(cab->nextinfo);
326
-      if (cab != origcab) sys->free(cab);
327
-    }
328
-
329
-    /* free successor cabinets */
330
-    for (cab = origcab->nextcab; cab; cab = ncab) {
331
-      ncab = cab->nextcab;
332
-      sys->free(cab->prevname);
333
-      sys->free(cab->nextname);
334
-      sys->free(cab->previnfo);
335
-      sys->free(cab->nextinfo);
336
-      sys->free(cab);
337
-    }
338
-
339
-    /* free actual cabinet structure */
340
-    cab = origcab->next;
341
-    sys->free(origcab);
342
-
343
-    /* repeat full procedure again with the cab->next pointer (if set) */
344
-    origcab = cab;
345
-  }
346
-}
347
-
348
-/***************************************
349
- * CABD_READ_HEADERS
350
- ***************************************
351
- * reads the cabinet file header, folder list and file list.
352
- * fills out a pre-existing mscabd_cabinet structure, allocates memory
353
- * for folders and files as necessary
354
- */
355
-static int cabd_read_headers(struct mspack_system *sys,
356
-			     struct mspack_file *fh,
357
-			     struct mscabd_cabinet_p *cab,
358
-			     off_t offset, int quiet)
359
-{
360
-  int num_folders, num_files, folder_resv, i, x;
361
-  struct mscabd_folder_p *fol, *linkfol = NULL;
362
-  struct mscabd_file *file, *linkfile = NULL;
363
-  unsigned char buf[64];
364
-
365
-  /* initialise pointers */
366
-  cab->base.next     = NULL;
367
-  cab->base.files    = NULL;
368
-  cab->base.folders  = NULL;
369
-  cab->base.prevcab  = cab->base.nextcab  = NULL;
370
-  cab->base.prevname = cab->base.nextname = NULL;
371
-  cab->base.previnfo = cab->base.nextinfo = NULL;
372
-
373
-  cab->base.base_offset = offset;
374
-
375
-  /* seek to CFHEADER */
376
-  if (sys->seek(fh, offset, MSPACK_SYS_SEEK_START)) {
377
-    return MSPACK_ERR_SEEK;
378
-  }
379
-
380
-  /* read in the CFHEADER */
381
-  if (sys->read(fh, &buf[0], cfhead_SIZEOF) != cfhead_SIZEOF) {
382
-    return MSPACK_ERR_READ;
383
-  }
384
-
385
-  /* check for "MSCF" signature */
386
-  if (EndGetI32(&buf[cfhead_Signature]) != 0x4643534D) {
387
-    return MSPACK_ERR_SIGNATURE;
388
-  }
389
-
390
-  /* some basic header fields */
391
-  cab->base.length    = EndGetI32(&buf[cfhead_CabinetSize]);
392
-  cab->base.set_id    = EndGetI16(&buf[cfhead_SetID]);
393
-  cab->base.set_index = EndGetI16(&buf[cfhead_CabinetIndex]);
394
-
395
-  /* get the number of folders */
396
-  num_folders = EndGetI16(&buf[cfhead_NumFolders]);
397
-  if (num_folders == 0) {
398
-    if (!quiet) sys->message(fh, "no folders in cabinet.");
399
-    return MSPACK_ERR_DATAFORMAT;
400
-  }
401
-
402
-  /* get the number of files */
403
-  num_files = EndGetI16(&buf[cfhead_NumFiles]);
404
-  if (num_files == 0) {
405
-    if (!quiet) sys->message(fh, "no files in cabinet.");
406
-    return MSPACK_ERR_DATAFORMAT;
407
-  }
408
-
409
-  /* check cabinet version */
410
-  if ((buf[cfhead_MajorVersion] != 1) && (buf[cfhead_MinorVersion] != 3)) {
411
-    if (!quiet) sys->message(fh, "WARNING; cabinet version is not 1.3");
412
-  }
413
-
414
-  /* read the reserved-sizes part of header, if present */
415
-  cab->base.flags = EndGetI16(&buf[cfhead_Flags]);
416
-  if (cab->base.flags & cfheadRESERVE_PRESENT) {
417
-    if (sys->read(fh, &buf[0], cfheadext_SIZEOF) != cfheadext_SIZEOF) {
418
-      return MSPACK_ERR_READ;
419
-    }
420
-    cab->base.header_resv = EndGetI16(&buf[cfheadext_HeaderReserved]);
421
-    folder_resv           = buf[cfheadext_FolderReserved];
422
-    cab->block_resv       = buf[cfheadext_DataReserved];
423
-
424
-    if (cab->base.header_resv > 60000) {
425
-      if (!quiet) sys->message(fh, "WARNING; reserved header > 60000.");
426
-    }
427
-
428
-    /* skip the reserved header */
429
-    if (cab->base.header_resv) {
430
-      if (sys->seek(fh, (off_t) cab->base.header_resv, MSPACK_SYS_SEEK_CUR)) {
431
-	return MSPACK_ERR_SEEK;
432
-      }
433
-    }
434
-  }
435
-  else {
436
-    cab->base.header_resv = 0;
437
-    folder_resv           = 0; 
438
-    cab->block_resv       = 0;
439
-  }
440
-
441
-  /* read name and info of preceeding cabinet in set, if present */
442
-  if (cab->base.flags & cfheadPREV_CABINET) {
443
-    cab->base.prevname = cabd_read_string(sys, fh, cab, &x); if (x) return x;
444
-    cab->base.previnfo = cabd_read_string(sys, fh, cab, &x); if (x) return x;
445
-  }
446
-
447
-  /* read name and info of next cabinet in set, if present */
448
-  if (cab->base.flags & cfheadNEXT_CABINET) {
449
-    cab->base.nextname = cabd_read_string(sys, fh, cab, &x); if (x) return x;
450
-    cab->base.nextinfo = cabd_read_string(sys, fh, cab, &x); if (x) return x;
451
-  }
452
-
453
-  /* read folders */
454
-  for (i = 0; i < num_folders; i++) {
455
-    if (sys->read(fh, &buf[0], cffold_SIZEOF) != cffold_SIZEOF) {
456
-      return MSPACK_ERR_READ;
457
-    }
458
-    if (folder_resv) {
459
-      if (sys->seek(fh, (off_t) folder_resv, MSPACK_SYS_SEEK_CUR)) {
460
-	return MSPACK_ERR_SEEK;
461
-      }
462
-    }
463
-
464
-    if (!(fol = sys->alloc(sys, sizeof(struct mscabd_folder_p)))) {
465
-      return MSPACK_ERR_NOMEMORY;
466
-    }
467
-    fol->base.next       = NULL;
468
-    fol->base.comp_type  = EndGetI16(&buf[cffold_CompType]);
469
-    fol->base.num_blocks = EndGetI16(&buf[cffold_NumBlocks]);
470
-    fol->data.next       = NULL;
471
-    fol->data.cab        = (struct mscabd_cabinet_p *) cab;
472
-    fol->data.offset     = offset + (off_t)
473
-      ( (unsigned int) EndGetI32(&buf[cffold_DataOffset]) );
474
-    fol->merge_prev      = NULL;
475
-    fol->merge_next      = NULL;
476
-
477
-    /* link folder into list of folders */
478
-    if (!linkfol) cab->base.folders = (struct mscabd_folder *) fol;
479
-    else linkfol->base.next = (struct mscabd_folder *) fol;
480
-    linkfol = fol;
481
-  }
482
-
483
-  /* read files */
484
-  for (i = 0; i < num_files; i++) {
485
-    if (sys->read(fh, &buf[0], cffile_SIZEOF) != cffile_SIZEOF) {
486
-      return MSPACK_ERR_READ;
487
-    }
488
-
489
-    if (!(file = sys->alloc(sys, sizeof(struct mscabd_file)))) {
490
-      return MSPACK_ERR_NOMEMORY;
491
-    }
492
-
493
-    file->next     = NULL;
494
-    file->length   = EndGetI32(&buf[cffile_UncompressedSize]);
495
-    file->attribs  = EndGetI16(&buf[cffile_Attribs]);
496
-    file->offset   = EndGetI32(&buf[cffile_FolderOffset]);
497
-
498
-    /* set folder pointer */
499
-    x = EndGetI16(&buf[cffile_FolderIndex]);
500
-    if (x < cffileCONTINUED_FROM_PREV) {
501
-      /* normal folder index; count up to the correct folder. the folder
502
-       * pointer will be NULL if folder index is invalid */
503
-      struct mscabd_folder *ifol = cab->base.folders; 
504
-      while (x--) if (ifol) ifol = ifol->next;
505
-      file->folder = ifol;
506
-
507
-      if (!ifol) {
508
-	sys->free(file);
509
-	D(("invalid folder index"))
510
-	return MSPACK_ERR_DATAFORMAT;
511
-      }
512
-    }
513
-    else {
514
-      /* either CONTINUED_TO_NEXT, CONTINUED_FROM_PREV or
515
-       * CONTINUED_PREV_AND_NEXT */
516
-      if ((x == cffileCONTINUED_TO_NEXT) ||
517
-	  (x == cffileCONTINUED_PREV_AND_NEXT))
518
-      {
519
-	/* get last folder */
520
-	struct mscabd_folder *ifol = cab->base.folders;
521
-	while (ifol->next) ifol = ifol->next;
522
-	file->folder = ifol;
523
-
524
-	/* set "merge next" pointer */
525
-	fol = (struct mscabd_folder_p *) ifol;
526
-	if (!fol->merge_next) fol->merge_next = file;
527
-      }
528
-
529
-      if ((x == cffileCONTINUED_FROM_PREV) ||
530
-	  (x == cffileCONTINUED_PREV_AND_NEXT))
531
-      {
532
-	/* get first folder */
533
-	file->folder = cab->base.folders;
534
-
535
-	/* set "merge prev" pointer */
536
-	fol = (struct mscabd_folder_p *) file->folder;
537
-	if (!fol->merge_prev) fol->merge_prev = file;
538
-      }
539
-    }
540
-
541
-    /* get time */
542
-    x = EndGetI16(&buf[cffile_Time]);
543
-    file->time_h = x >> 11;
544
-    file->time_m = (x >> 5) & 0x3F;
545
-    file->time_s = (x << 1) & 0x3E;
546
-
547
-    /* get date */
548
-    x = EndGetI16(&buf[cffile_Date]);
549
-    file->date_d = x & 0x1F;
550
-    file->date_m = (x >> 5) & 0xF;
551
-    file->date_y = (x >> 9) + 1980;
552
-
553
-    /* get filename */
554
-    file->filename = cabd_read_string(sys, fh, cab, &x);
555
-    if (x) { 
556
-      sys->free(file);
557
-      return x;
558
-    }
559
-
560
-    /* link file entry into file list */
561
-    if (!linkfile) cab->base.files = file;
562
-    else linkfile->next = file;
563
-    linkfile = file;
564
-  }
565
-
566
-  return MSPACK_ERR_OK;
567
-}
568
-
569
-static char *cabd_read_string(struct mspack_system *sys,
570
-			      struct mspack_file *fh,
571
-			      struct mscabd_cabinet_p *cab, int *error)
572
-{
573
-  off_t base = sys->tell(fh);
574
-  char buf[256], *str;
575
-  unsigned int len, i, ok;
576
-
577
-  /* read up to 256 bytes */
578
-  len = sys->read(fh, &buf[0], 256);
579
-
580
-  /* search for a null terminator in the buffer */
581
-  for (i = 0, ok = 0; i < len; i++) if (!buf[i]) { ok = 1; break; }
582
-  if (!ok) {
583
-    *error = MSPACK_ERR_DATAFORMAT;
584
-    return NULL;
585
-  }
586
-
587
-  len = i + 1;
588
-
589
-  /* set the data stream to just after the string and return */
590
-  if (sys->seek(fh, base + (off_t)len, MSPACK_SYS_SEEK_START)) {
591
-    *error = MSPACK_ERR_SEEK;
592
-    return NULL;
593
-  }
594
-
595
-  if (!(str = sys->alloc(sys, len))) {
596
-    *error = MSPACK_ERR_NOMEMORY;
597
-    return NULL;
598
-  }
599
-
600
-  sys->copy(&buf[0], str, len);
601
-  *error = MSPACK_ERR_OK;
602
-  return str;
603
-}
604
-    
605
-/***************************************
606
- * CABD_SEARCH, CABD_FIND
607
- ***************************************
608
- * cabd_search opens a file, finds its extent, allocates a search buffer,
609
- * then reads through the whole file looking for possible cabinet headers.
610
- * if it finds any, it tries to read them as real cabinets. returns a linked
611
- * list of results
612
- *
613
- * cabd_find is the inner loop of cabd_search, to make it easier to
614
- * break out of the loop and be sure that all resources are freed
615
- */
616
-static struct mscabd_cabinet *cabd_search(struct mscab_decompressor *base,
617
-					  char *filename)
618
-{
619
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
620
-  struct mscabd_cabinet_p *cab = NULL;
621
-  struct mspack_system *sys;
622
-  unsigned char *search_buf;
623
-  struct mspack_file *fh;
624
-  unsigned int firstlen = 0;
625
-  off_t filelen;
626
-
627
-  if (!base) return NULL;
628
-  sys = this->system;
629
-
630
-  /* allocate a search buffer */
631
-  search_buf = sys->alloc(sys, (size_t) this->param[MSCABD_PARAM_SEARCHBUF]);
632
-  if (!search_buf) {
633
-    this->error = MSPACK_ERR_NOMEMORY;
634
-    return NULL;
635
-  }
636
-
637
-  /* open file and get its full file length */
638
-  if ((fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ))) {
639
-    if (!(this->error = mspack_sys_filelen(sys, fh, &filelen))) {
640
-      this->error = cabd_find(this, search_buf, fh, filename, 0,
641
-			      filelen, &firstlen, &cab);
642
-    }
643
-
644
-    /* truncated / extraneous data warning: */
645
-    if (firstlen && (firstlen != filelen) &&
646
-	(!cab || (cab->base.base_offset == 0)))
647
-    {
648
-      if (firstlen < filelen) {
649
-	sys->message(fh, "WARNING; possible %u extra bytes at end of file.",
650
-		     (unsigned int) (filelen - firstlen));
651
-      }
652
-      else {
653
-	sys->message(fh, "WARNING; file possibly truncated by %u bytes.",
654
-		     (unsigned int) (firstlen - filelen));
655
-      }
656
-    }
657
-    
658
-    sys->close(fh);
659
-  }
660
-  else {
661
-    this->error = MSPACK_ERR_OPEN;
662
-  }
663
-
664
-  /* free the search buffer */
665
-  sys->free(search_buf);
666
-
667
-  return (struct mscabd_cabinet *) cab;
668
-}
669
-
670
-static struct mscabd_cabinet *cabd_dsearch(struct mscab_decompressor *base,
671
-					  int desc)
672
-{
673
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
674
-  struct mscabd_cabinet_p *cab = NULL;
675
-  struct mspack_system *sys;
676
-  unsigned char *search_buf;
677
-  struct mspack_file *fh;
678
-  unsigned int firstlen = 0;
679
-  off_t filelen;
680
-  char *filename = "descriptor-";
681
-
682
-  if (!base) return NULL;
683
-  sys = this->system;
684
-
685
-  /* allocate a search buffer */
686
-  search_buf = sys->alloc(sys, (size_t) this->param[MSCABD_PARAM_SEARCHBUF]);
687
-  if (!search_buf) {
688
-    this->error = MSPACK_ERR_NOMEMORY;
689
-    return NULL;
690
-  }
691
-
692
-  /* open file and get its full file length */
693
-  if ((fh = sys->dopen(sys, desc, MSPACK_SYS_OPEN_READ))) {
694
-    if (!(this->error = mspack_sys_filelen(sys, fh, &filelen))) {
695
-      this->error = cabd_find(this, search_buf, fh, filename, desc,
696
-			      filelen, &firstlen, &cab);
697
-    }
698
-
699
-    /* truncated / extraneous data warning: */
700
-    if (firstlen && (firstlen != filelen) &&
701
-	(!cab || (cab->base.base_offset == 0)))
702
-    {
703
-      if (firstlen < filelen) {
704
-	sys->message(fh, "WARNING; possible %u extra bytes at end of file.",
705
-		     (unsigned int) (filelen - firstlen));
706
-      }
707
-      else {
708
-	sys->message(fh, "WARNING; file possibly truncated by %u bytes.",
709
-		     (unsigned int) (firstlen - filelen));
710
-      }
711
-    }
712
-    
713
-    /* sys->close(fh); */
714
-  }
715
-  else {
716
-    this->error = MSPACK_ERR_OPEN;
717
-  }
718
-
719
-  /* free the search buffer */
720
-  sys->free(search_buf);
721
-
722
-  return (struct mscabd_cabinet *) cab;
723
-}
724
-
725
-
726
-static int cabd_find(struct mscab_decompressor_p *this, unsigned char *buf,
727
-		     struct mspack_file *fh, char *filename, int desc, off_t flen,
728
-		     unsigned int *firstlen,
729
-		     struct mscabd_cabinet_p **firstcab)
730
-{
731
-  struct mscabd_cabinet_p *cab, *link = NULL;
732
-  off_t caboff, offset, foffset=0, cablen=0;
733
-  struct mspack_system *sys = this->system;
734
-  unsigned char *p, *pend, state = 0;
735
-  int false_cabs = 0, length;
736
-
737
-  /* search through the full file length */
738
-  for (offset = 0; offset < flen; offset += length) {
739
-    /* search length is either the full length of the search buffer, or the
740
-     * amount of data remaining to the end of the file, whichever is less. */
741
-    length = flen - offset;
742
-    if (length > this->param[MSCABD_PARAM_SEARCHBUF]) {
743
-      length = this->param[MSCABD_PARAM_SEARCHBUF];
744
-    }
745
-
746
-    /* fill the search buffer with data from disk */
747
-    if (sys->read(fh, &buf[0], length) != length) {
748
-      return MSPACK_ERR_READ;
749
-    }
750
-
751
-    /* FAQ avoidance strategy */
752
-    if ((offset == 0) && (EndGetI32(&buf[0]) == 0x28635349)) {
753
-      sys->message(fh, "WARNING; found InstallShield header. "
754
-		   "This is probably an InstallShield file. "
755
-		   "Use UNSHIELD (http://synce.sf.net) to unpack it.");
756
-    }
757
-
758
-    /* read through the entire buffer. */
759
-    for (p = &buf[0], pend = &buf[length]; p < pend; ) {
760
-      switch (state) {
761
-	/* starting state */
762
-      case 0:
763
-	/* we spend most of our time in this while loop, looking for
764
-	 * a leading 'M' of the 'MSCF' signature */
765
-	while (p < pend && *p != 0x4D) p++;
766
-	/* if we found tht 'M', advance state */
767
-	if (p++ < pend) state = 1;
768
-	break;
769
-
770
-      /* verify that the next 3 bytes are 'S', 'C' and 'F' */
771
-      case 1: state = (*p++ == 0x53) ? 2 : 0; break;
772
-      case 2: state = (*p++ == 0x43) ? 3 : 0; break;
773
-      case 3: state = (*p++ == 0x46) ? 4 : 0; break;
774
-
775
-      /* we don't care about bytes 4-7 (see default: for action) */
776
-
777
-      /* bytes 8-11 are the overall length of the cabinet */
778
-      case 8:  cablen  = *p++;       state++; break;
779
-      case 9:  cablen |= *p++ << 8;  state++; break;
780
-      case 10: cablen |= *p++ << 16; state++; break;
781
-      case 11: cablen |= *p++ << 24; state++; break;
782
-
783
-      /* we don't care about bytes 12-15 (see default: for action) */
784
-
785
-      /* bytes 16-19 are the offset within the cabinet of the filedata */
786
-      case 16: foffset  = *p++;       state++; break;
787
-      case 17: foffset |= *p++ << 8;  state++; break;
788
-      case 18: foffset |= *p++ << 16; state++; break;
789
-      case 19: foffset |= *p++ << 24;
790
-	/* now we have recieved 20 bytes of potential cab header. work out
791
-	 * the offset in the file of this potential cabinet */
792
-	caboff = offset + (p - &buf[0]) - 20;
793
-
794
-	/* should reading cabinet fail, restart search just after 'MSCF' */
795
-	offset = caboff + 4;
796
-
797
-	/* capture the "length of cabinet" field if there is a cabinet at
798
-	 * offset 0 in the file, regardless of whether the cabinet can be
799
-	 * read correctly or not */
800
-	if (caboff == 0) *firstlen = cablen;
801
-
802
-	/* check that the files offset is less than the alleged length of
803
-	 * the cabinet, and that the offset + the alleged length are
804
-	 * 'roughly' within the end of overall file length */
805
-	if ((foffset < cablen) &&
806
-	    ((caboff + foffset) < (flen + 32)) &&
807
-	    ((caboff + cablen)  < (flen + 32)) )
808
-	{
809
-	  /* likely cabinet found -- try reading it */
810
-	  if (!(cab = sys->alloc(sys, sizeof(struct mscabd_cabinet_p)))) {
811
-	    return MSPACK_ERR_NOMEMORY;
812
-	  }
813
-	  cab->base.filename = filename;
814
-	  cab->base.desc = desc;
815
-	  if (cabd_read_headers(sys, fh, cab, caboff, 1)) {
816
-	    /* destroy the failed cabinet */
817
-	    cabd_close((struct mscab_decompressor *) this,
818
-		       (struct mscabd_cabinet *) cab);
819
-	    false_cabs++;
820
-	  }
821
-	  else {
822
-	    /* cabinet read correctly! */
823
-
824
-	    /* cause the search to restart after this cab's data. */
825
-	    offset = caboff + cablen;
826
-	      
827
-	    /* link the cab into the list */
828
-	    if (!link) *firstcab = cab;
829
-	    else link->base.next = (struct mscabd_cabinet *) cab;
830
-	    link = cab;
831
-	  }
832
-	}
833
-
834
-	/* restart search */
835
-	if (offset >= flen) return MSPACK_ERR_OK;
836
-	if (sys->seek(fh, offset, MSPACK_SYS_SEEK_START))
837
-	  return MSPACK_ERR_SEEK;
838
-	length = 0;
839
-	p = pend;
840
-	state = 0;
841
-	break;
842
-
843
-      /* for bytes 4-7 and 12-15, just advance state/pointer */
844
-      default:
845
-	p++, state++;
846
-      } /* switch(state) */
847
-    } /* for (... p < pend ...) */
848
-  } /* for (... offset < length ...) */
849
-
850
-  if (false_cabs) {
851
-    D(("%d false cabinets found", false_cabs))
852
-  }
853
-
854
-  return MSPACK_ERR_OK;
855
-}
856
-					     
857
-/***************************************
858
- * CABD_MERGE, CABD_PREPEND, CABD_APPEND
859
- ***************************************
860
- * joins cabinets together, also merges split folders between these two
861
- * cabinets only. this includes freeing the duplicate folder and file(s)
862
- * and allocating a further mscabd_folder_data structure to append to the
863
- * merged folder's data parts list.
864
- */
865
-static int cabd_prepend(struct mscab_decompressor *base,
866
-			struct mscabd_cabinet *cab,
867
-			struct mscabd_cabinet *prevcab)
868
-{
869
-  return cabd_merge(base, prevcab, cab);
870
-}
871
-
872
-static int cabd_append(struct mscab_decompressor *base,
873
-			struct mscabd_cabinet *cab,
874
-			struct mscabd_cabinet *nextcab)
875
-{
876
-  return cabd_merge(base, cab, nextcab);
877
-}
878
-
879
-static int cabd_merge(struct mscab_decompressor *base,
880
-		      struct mscabd_cabinet *lcab,
881
-		      struct mscabd_cabinet *rcab)
882
-{
883
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
884
-  struct mscabd_folder_data *data, *ndata;
885
-  struct mscabd_folder_p *lfol, *rfol;
886
-  struct mscabd_file *fi, *rfi, *lfi;
887
-  struct mscabd_cabinet *cab;
888
-  struct mspack_system *sys;
889
-
890
-  if (!this) return MSPACK_ERR_ARGS;
891
-  sys = this->system;
892
-
893
-  /* basic args check */
894
-  if (!lcab || !rcab || (lcab == rcab)) {
895
-    D(("lcab NULL, rcab NULL or lcab = rcab"))
896
-    return this->error = MSPACK_ERR_ARGS;
897
-  }
898
-
899
-  /* check there's not already a cabinet attached */
900
-  if (lcab->nextcab || rcab->prevcab) {
901
-    D(("cabs already joined"))
902
-    return this->error = MSPACK_ERR_ARGS;
903
-  }
904
-
905
-  /* do not create circular cabinet chains */
906
-  for (cab = lcab->prevcab; cab; cab = cab->prevcab) {
907
-    if (cab == rcab) {D(("circular!")) return this->error = MSPACK_ERR_ARGS;}
908
-  }
909
-  for (cab = rcab->nextcab; cab; cab = cab->nextcab) {
910
-    if (cab == lcab) {D(("circular!")) return this->error = MSPACK_ERR_ARGS;}
911
-  }
912
-
913
-  /* warn about odd set IDs or indices */
914
-  if (lcab->set_id != rcab->set_id) {
915
-    sys->message(NULL, "WARNING; merged cabinets with differing Set IDs.");
916
-  }
917
-
918
-  if (lcab->set_index > rcab->set_index) {
919
-    sys->message(NULL, "WARNING; merged cabinets with odd order.");
920
-  }
921
-
922
-  /* merging the last folder in lcab with the first folder in rcab */
923
-  lfol = (struct mscabd_folder_p *) lcab->folders;
924
-  rfol = (struct mscabd_folder_p *) rcab->folders;
925
-  while (lfol->base.next) lfol = (struct mscabd_folder_p *) lfol->base.next;
926
-
927
-  /* do we need to merge folders? */
928
-  if (!lfol->merge_next && !rfol->merge_prev) {
929
-    /* no, at least one of the folders is not for merging */
930
-
931
-    /* attach cabs */
932
-    lcab->nextcab = rcab;
933
-    rcab->prevcab = lcab;
934
-
935
-    /* attach folders */
936
-    lfol->base.next = (struct mscabd_folder *) rfol;
937
-
938
-    /* attach files */
939
-    fi = lcab->files;
940
-    while (fi->next) fi = fi->next;
941
-    fi->next = rcab->files;
942
-  }
943
-  else {
944
-    /* folder merge required */
945
-
946
-    if (!lfol->merge_next) {
947
-      D(("rcab has merge files, lcab doesn't"))
948
-      return this->error = MSPACK_ERR_DATAFORMAT;
949
-    }
950
-
951
-    if (!rfol->merge_prev) {
952
-      D(("lcab has merge files, rcab doesn't"))
953
-      return this->error = MSPACK_ERR_DATAFORMAT;
954
-    }
955
-
956
-    /* check that both folders use the same compression method/settings */
957
-    if (lfol->base.comp_type != rfol->base.comp_type) {
958
-      D(("compression type mismatch"))
959
-      return this->error = MSPACK_ERR_DATAFORMAT;
960
-    }
961
-
962
-    /* for all files in lfol (which is the last folder in whichever cab),
963
-     * compare them to the files from rfol. they should be identical in
964
-     * number and order. to verify this, check the OFFSETS of each file. */
965
-    lfi = lfol->merge_next;
966
-    rfi = rfol->merge_prev;
967
-    while (lfi) {
968
-      if (!rfi || (lfi->offset !=  rfi->offset)) {
969
-	D(("folder merge mismatch"))
970
-	return this->error = MSPACK_ERR_DATAFORMAT;
971
-      }
972
-      lfi = lfi->next;
973
-      rfi = rfi->next;
974
-    }
975
-
976
-    /* allocate a new folder data structure */
977
-    if (!(data = sys->alloc(sys, sizeof(struct mscabd_folder_data)))) {
978
-      return this->error = MSPACK_ERR_NOMEMORY;
979
-    }
980
-
981
-    /* attach cabs */
982
-    lcab->nextcab = rcab;
983
-    rcab->prevcab = lcab;
984
-
985
-    /* append rfol's data to lfol */
986
-    ndata = &lfol->data;
987
-    while (ndata->next) ndata = ndata->next;
988
-    ndata->next = data;
989
-    *data = rfol->data;
990
-    rfol->data.next = NULL;
991
-
992
-    /* lfol becomes rfol.
993
-     * NOTE: special case, don't merge if rfol is merge prev and next,
994
-     * rfol->merge_next is going to be deleted, so keep lfol's version
995
-     * instead */
996
-    lfol->base.num_blocks += rfol->base.num_blocks - 1;
997
-    if ((rfol->merge_next == NULL) ||
998
-	(rfol->merge_next->folder != (struct mscabd_folder *) rfol))
999
-    {
1000
-      lfol->merge_next = rfol->merge_next;
1001
-    }
1002
-
1003
-    /* attach the rfol's folder (except the merge folder) */
1004
-    while (lfol->base.next) lfol = (struct mscabd_folder_p *) lfol->base.next;
1005
-    lfol->base.next = rfol->base.next;
1006
-
1007
-    /* free disused merge folder */
1008
-    sys->free(rfol);
1009
-
1010
-    /* attach rfol's files */
1011
-    fi = lcab->files;
1012
-    while (fi->next) fi = fi->next;
1013
-    fi->next = rcab->files;
1014
-
1015
-    /* delete all files from rfol's merge folder */
1016
-    lfi = NULL;
1017
-    for (fi = lcab->files; fi ; fi = rfi) {
1018
-      rfi = fi->next;
1019
-      /* if file's folder matches the merge folder, unlink and free it */
1020
-      if (fi->folder == (struct mscabd_folder *) rfol) {
1021
-	if (lfi) lfi->next = rfi; else lcab->files = rfi;
1022
-	sys->free(fi->filename);
1023
-	sys->free(fi);
1024
-      }
1025
-      else lfi = fi;
1026
-    }
1027
-  }
1028
-
1029
-  /* all done! fix files and folders pointers in all cabs so they all
1030
-   * point to the same list  */
1031
-  for (cab = lcab->prevcab; cab; cab = cab->prevcab) {
1032
-    cab->files   = lcab->files;
1033
-    cab->folders = lcab->folders;
1034
-  }
1035
-
1036
-  for (cab = lcab->nextcab; cab; cab = cab->nextcab) {
1037
-    cab->files   = lcab->files;
1038
-    cab->folders = lcab->folders;
1039
-  }
1040
-
1041
-  return this->error = MSPACK_ERR_OK;
1042
-}
1043
-
1044
-/***************************************
1045
- * CABD_EXTRACT
1046
- ***************************************
1047
- * extracts a file from a cabinet
1048
- */
1049
-static int cabd_extract(struct mscab_decompressor *base,
1050
-			 struct mscabd_file *file, char *filename)
1051
-{
1052
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
1053
-  struct mscabd_folder_p *fol;
1054
-  struct mspack_system *sys;
1055
-  struct mspack_file *fh;
1056
-
1057
-  if (!this) return MSPACK_ERR_ARGS;
1058
-  if (!file) return this->error = MSPACK_ERR_ARGS;
1059
-
1060
-  sys = this->system;
1061
-  fol = (struct mscabd_folder_p *) file->folder;
1062
-
1063
-  /* check if file can be extracted */
1064
-  if ((!fol) || (fol->merge_prev) ||
1065
-      (((file->offset + file->length) / CAB_BLOCKMAX) > fol->base.num_blocks))
1066
-  {
1067
-    sys->message(NULL, "ERROR; file \"%s\" cannot be extracted, "
1068
-		 "cabinet set is incomplete.", file->filename);
1069
-    return this->error = MSPACK_ERR_DATAFORMAT;
1070
-  }
1071
-
1072
-  /* allocate generic decompression state */
1073
-  if (!this->d) {
1074
-    this->d = sys->alloc(sys, sizeof(struct mscabd_decompress_state));
1075
-    if (!this->d) return this->error = MSPACK_ERR_NOMEMORY;
1076
-    this->d->folder     = NULL;
1077
-    this->d->data       = NULL;
1078
-    this->d->sys        = *sys;
1079
-    this->d->sys.read   = &cabd_sys_read;
1080
-    this->d->sys.write  = &cabd_sys_write;
1081
-    this->d->state      = NULL;
1082
-    this->d->infh       = NULL;
1083
-    this->d->incab      = NULL;
1084
-  }
1085
-
1086
-  /* do we need to change folder or reset the current folder? */
1087
-  if ((this->d->folder != fol) || (this->d->offset > file->offset)) {
1088
-    /* do we need to open a new cab file? */
1089
-
1090
-    if (!this->d->infh || (fol->data.cab != this->d->incab)) {
1091
-      if (this->d->infh) sys->close(this->d->infh);
1092
-      this->d->incab = fol->data.cab;
1093
-
1094
-      if(fol->data.cab->base.desc) {
1095
-        this->d->infh = sys->dopen(sys, fol->data.cab->base.desc,
1096
-				MSPACK_SYS_OPEN_READ);
1097
-      } else {
1098
-        this->d->infh = sys->open(sys, fol->data.cab->base.filename,
1099
-				MSPACK_SYS_OPEN_READ);
1100
-      }
1101
-      if (!this->d->infh) return this->error = MSPACK_ERR_OPEN;
1102
-    }
1103
-
1104
-    /* seek to start of data blocks */
1105
-    if (sys->seek(this->d->infh, fol->data.offset, MSPACK_SYS_SEEK_START)) {
1106
-      return this->error = MSPACK_ERR_SEEK;
1107
-    }
1108
-
1109
-    /* set up decompressor */
1110
-    if (cabd_init_decomp(this, (unsigned int) fol->base.comp_type)) {
1111
-      return this->error;
1112
-    }
1113
-
1114
-    /* initialise new folder state */
1115
-    this->d->folder = fol;
1116
-    this->d->data   = &fol->data;
1117
-    this->d->offset = 0;
1118
-    this->d->block  = 0;
1119
-    this->d->i_ptr = this->d->i_end = &this->d->input[0];
1120
-  }
1121
-
1122
-  /* open file for output */
1123
-  if (!(fh = sys->open(sys, filename, MSPACK_SYS_OPEN_WRITE))) {
1124
-    return this->error = MSPACK_ERR_OPEN;
1125
-  }
1126
-
1127
-  this->error = MSPACK_ERR_OK;
1128
-
1129
-  /* if file has more than 0 bytes */
1130
-  if (file->length) {
1131
-    off_t bytes;
1132
-    int error;
1133
-    /* get to correct offset.
1134
-     * - use NULL fh to say 'no writing' to cabd_sys_write()
1135
-     * - MSPACK_ERR_READ returncode indicates error in cabd_sys_read(),
1136
-     *   the real error will already be stored in this->error
1137
-     */
1138
-    this->d->outfh = NULL;
1139
-    if ((bytes = file->offset - this->d->offset)) {
1140
-      error = this->d->decompress(this->d->state, bytes);
1141
-      if (error != MSPACK_ERR_READ) this->error = error;
1142
-    }
1143
-
1144
-    /* if getting to the correct offset was error free, unpack file */
1145
-    if (!this->error) {
1146
-      this->d->outfh = fh;
1147
-      error = this->d->decompress(this->d->state, (off_t) file->length);
1148
-      if (error != MSPACK_ERR_READ) this->error = error;
1149
-    }
1150
-  }
1151
-
1152
-  /* close output file */
1153
-  sys->close(fh);
1154
-  this->d->outfh = NULL;
1155
-
1156
-  return this->error;
1157
-}
1158
-
1159
-/***************************************
1160
- * CABD_INIT_DECOMP, CABD_FREE_DECOMP
1161
- ***************************************
1162
- * cabd_init_decomp initialises decompression state, according to which
1163
- * decompression method was used. relies on this->d->folder being the same
1164
- * as when initialised.
1165
- *
1166
- * cabd_free_decomp frees decompression state, according to which method
1167
- * was used.
1168
- */
1169
-static int cabd_init_decomp(struct mscab_decompressor_p *this, unsigned int ct)
1170
-{
1171
-  struct mspack_file *fh = (struct mspack_file *) this;
1172
-
1173
-  if (!this || !this->d) {
1174
-    return this->error = MSPACK_ERR_ARGS;
1175
-  }
1176
-
1177
-  /* free any existing decompressor */
1178
-  cabd_free_decomp(this);
1179
-
1180
-  this->d->comp_type = ct;
1181
-
1182
-  switch (ct & cffoldCOMPTYPE_MASK) {
1183
-  case cffoldCOMPTYPE_NONE:
1184
-    this->d->decompress = (int (*)(void *, off_t)) &noned_decompress;
1185
-    this->d->state = noned_init(&this->d->sys, fh, fh,
1186
-				this->param[MSCABD_PARAM_DECOMPBUF]);
1187
-    break;
1188
-  case cffoldCOMPTYPE_MSZIP:
1189
-    this->d->decompress = (int (*)(void *, off_t)) &mszipd_decompress;
1190
-    this->d->state = mszipd_init(&this->d->sys, fh, fh,
1191
-				 this->param[MSCABD_PARAM_DECOMPBUF],
1192
-				 this->param[MSCABD_PARAM_FIXMSZIP]);
1193
-    break;
1194
-  case cffoldCOMPTYPE_QUANTUM:
1195
-    this->d->decompress = (int (*)(void *, off_t)) &qtmd_decompress;
1196
-    this->d->state = qtmd_init(&this->d->sys, fh, fh, (int) (ct >> 8) & 0x1f,
1197
-			       this->param[MSCABD_PARAM_DECOMPBUF]);
1198
-    break;
1199
-  case cffoldCOMPTYPE_LZX:
1200
-    this->d->decompress = (int (*)(void *, off_t)) &lzxd_decompress;
1201
-    this->d->state = lzxd_init(&this->d->sys, fh, fh, (int) (ct >> 8) & 0x1f, 0,
1202
-			       this->param[MSCABD_PARAM_DECOMPBUF], (off_t) 0);
1203
-    break;
1204
-  default:
1205
-    return this->error = MSPACK_ERR_DATAFORMAT;
1206
-  }
1207
-  return this->error = (this->d->state) ? MSPACK_ERR_OK : MSPACK_ERR_NOMEMORY;
1208
-}
1209
-
1210
-static void cabd_free_decomp(struct mscab_decompressor_p *this) {
1211
-  if (!this || !this->d || !this->d->folder || !this->d->state) return;
1212
-
1213
-  switch (this->d->comp_type & cffoldCOMPTYPE_MASK) {
1214
-  case cffoldCOMPTYPE_NONE:    noned_free(this->d->state);   break;
1215
-  case cffoldCOMPTYPE_MSZIP:   mszipd_free(this->d->state);  break;
1216
-  case cffoldCOMPTYPE_QUANTUM: qtmd_free(this->d->state);    break;
1217
-  case cffoldCOMPTYPE_LZX:     lzxd_free(this->d->state);    break;
1218
-  }
1219
-  this->d->decompress = NULL;
1220
-  this->d->state      = NULL;
1221
-}
1222
-
1223
-/***************************************
1224
- * CABD_SYS_READ, CABD_SYS_WRITE
1225
- ***************************************
1226
- * cabd_sys_read is the internal reader function which the decompressors
1227
- * use. will read data blocks (and merge split blocks) from the cabinet
1228
- * and serve the read bytes to the decompressors
1229
- *
1230
- * cabd_sys_write is the internal writer function which the decompressors
1231
- * use. it either writes data to disk (this->d->outfh) with the real
1232
- * sys->write() function, or does nothing with the data when
1233
- * this->d->outfh == NULL. advances this->d->offset
1234
- */
1235
-static int cabd_sys_read(struct mspack_file *file, void *buffer, int bytes) {
1236
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) file;
1237
-  unsigned char *buf = (unsigned char *) buffer;
1238
-  struct mspack_system *sys = this->system;
1239
-  int avail, todo, outlen, ignore_cksum;
1240
-
1241
-  ignore_cksum = this->param[MSCABD_PARAM_FIXMSZIP] &&
1242
-    ((this->d->comp_type & cffoldCOMPTYPE_MASK) == cffoldCOMPTYPE_MSZIP);
1243
-
1244
-  todo = bytes;
1245
-  while (todo > 0) {
1246
-    avail = this->d->i_end - this->d->i_ptr;
1247
-
1248
-    /* if out of input data, read a new block */
1249
-    if (avail) {
1250
-      /* copy as many input bytes available as possible */
1251
-      if (avail > todo) avail = todo;
1252
-      sys->copy(this->d->i_ptr, buf, (size_t) avail);
1253
-      this->d->i_ptr += avail;
1254
-      buf  += avail;
1255
-      todo -= avail;
1256
-    }
1257
-    else {
1258
-      /* out of data, read a new block */
1259
-
1260
-      /* check if we're out of input blocks, advance block counter */
1261
-      if (this->d->block++ >= this->d->folder->base.num_blocks) {
1262
-	this->error = MSPACK_ERR_DATAFORMAT;
1263
-	break;
1264
-      }
1265
-
1266
-      /* read a block */
1267
-      this->error = cabd_sys_read_block(sys, this->d, &outlen, ignore_cksum);
1268
-      if (this->error) return -1;
1269
-
1270
-      /* special Quantum hack -- trailer byte to allow the decompressor
1271
-       * to realign itself. CAB Quantum blocks, unlike LZX blocks, can have
1272
-       * anything from 0 to 4 trailing null bytes. */
1273
-      if ((this->d->comp_type & cffoldCOMPTYPE_MASK)==cffoldCOMPTYPE_QUANTUM) {
1274
-	*this->d->i_end++ = 0xFF;
1275
-      }
1276
-
1277
-      /* is this the last block? */
1278
-      if (this->d->block >= this->d->folder->base.num_blocks) {
1279
-	/* last block */
1280
-	if ((this->d->comp_type & cffoldCOMPTYPE_MASK) == cffoldCOMPTYPE_LZX) {
1281
-	  /* special LZX hack -- on the last block, inform LZX of the
1282
-	   * size of the output data stream. */
1283
-	  lzxd_set_output_length(this->d->state, (off_t)
1284
-				 ((this->d->block-1) * CAB_BLOCKMAX + outlen));
1285
-	}
1286
-      }
1287
-      else {
1288
-	/* not the last block */
1289
-	if (outlen != CAB_BLOCKMAX) {
1290
-	  this->system->message(this->d->infh,
1291
-				"WARNING; non-maximal data block");
1292
-	}
1293
-      }
1294
-    } /* if (avail) */
1295
-  } /* while (todo > 0) */
1296
-  return bytes - todo;
1297
-}
1298
-
1299
-static int cabd_sys_write(struct mspack_file *file, void *buffer, int bytes) {
1300
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) file;
1301
-  this->d->offset += bytes;
1302
-  if (this->d->outfh) {
1303
-    return this->system->write(this->d->outfh, buffer, bytes);
1304
-  }
1305
-  return bytes;
1306
-}
1307
-
1308
-/***************************************
1309
- * CABD_SYS_READ_BLOCK
1310
- ***************************************
1311
- * reads a whole data block from a cab file. the block may span more than
1312
- * one cab file, if it does then the fragments will be reassembled
1313
- */
1314
-static int cabd_sys_read_block(struct mspack_system *sys,
1315
-			       struct mscabd_decompress_state *d,
1316
-			       int *out, int ignore_cksum)
1317
-{
1318
-  unsigned char hdr[cfdata_SIZEOF];
1319
-  unsigned int cksum;
1320
-  int len;
1321
-
1322
-  /* reset the input block pointer and end of block pointer */
1323
-  d->i_ptr = d->i_end = &d->input[0];
1324
-
1325
-  do {
1326
-    /* read the block header */
1327
-    if (sys->read(d->infh, &hdr[0], cfdata_SIZEOF) != cfdata_SIZEOF) {
1328
-      return MSPACK_ERR_READ;
1329
-    }
1330
-
1331
-    /* skip any reserved block headers */
1332
-    if (d->data->cab->block_resv &&
1333
-	sys->seek(d->infh, (off_t) d->data->cab->block_resv,
1334
-		  MSPACK_SYS_SEEK_CUR))
1335
-    {
1336
-      return MSPACK_ERR_SEEK;
1337
-    }
1338
-
1339
-    /* blocks must not be over CAB_INPUTMAX in size */
1340
-    len = EndGetI16(&hdr[cfdata_CompressedSize]);
1341
-    if (((d->i_end - d->i_ptr) + len) > CAB_INPUTMAX) {
1342
-      D(("block size > CAB_INPUTMAX (%d + %d)", d->i_end - d->i_ptr, len))
1343
-      return MSPACK_ERR_DATAFORMAT;
1344
-    }
1345
-
1346
-     /* blocks must not expand to more than CAB_BLOCKMAX */
1347
-    if (EndGetI16(&hdr[cfdata_UncompressedSize]) > CAB_BLOCKMAX) {
1348
-      D(("block size > CAB_BLOCKMAX"))
1349
-      return MSPACK_ERR_DATAFORMAT;
1350
-    }
1351
-
1352
-    /* read the block data */
1353
-    if (sys->read(d->infh, d->i_end, len) != len) {
1354
-      return MSPACK_ERR_READ;
1355
-    }
1356
-
1357
-    /* perform checksum test on the block (if one is stored) */
1358
-    if ((cksum = EndGetI32(&hdr[cfdata_CheckSum]))) {
1359
-      unsigned int sum2 = cabd_checksum(d->i_end, (unsigned int) len, 0);
1360
-      if (cabd_checksum(&hdr[4], 4, sum2) != cksum) {
1361
-	if (!ignore_cksum) return MSPACK_ERR_CHECKSUM;
1362
-	sys->message(d->infh, "WARNING; bad block checksum found");
1363
-      }
1364
-    }
1365
-
1366
-    /* advance end of block pointer to include newly read data */
1367
-    d->i_end += len;
1368
-
1369
-    /* uncompressed size == 0 means this block was part of a split block
1370
-     * and it continues as the first block of the next cabinet in the set.
1371
-     * otherwise, this is the last part of the block, and no more block
1372
-     * reading needs to be done.
1373
-     */
1374
-    /* EXIT POINT OF LOOP -- uncompressed size != 0 */
1375
-    if ((*out = EndGetI16(&hdr[cfdata_UncompressedSize]))) {
1376
-      return MSPACK_ERR_OK;
1377
-    }
1378
-
1379
-    /* otherwise, advance to next cabinet */
1380
-
1381
-    /* close current file handle */
1382
-    sys->close(d->infh);
1383
-    d->infh = NULL;
1384
-
1385
-    /* advance to next member in the cabinet set */
1386
-    if (!(d->data = d->data->next)) {
1387
-      D(("ran out of splits in cabinet set"))
1388
-      return MSPACK_ERR_DATAFORMAT;
1389
-    }
1390
-
1391
-    /* open next cab file */
1392
-    d->incab = d->data->cab;
1393
-    if (!(d->infh = sys->open(sys, d->incab->base.filename,
1394
-			      MSPACK_SYS_OPEN_READ)))
1395
-    {
1396
-      return MSPACK_ERR_OPEN;
1397
-    }
1398
-
1399
-    /* seek to start of data blocks */
1400
-    if (sys->seek(d->infh, d->data->offset, MSPACK_SYS_SEEK_START)) {
1401
-      return MSPACK_ERR_SEEK;
1402
-    }
1403
-  } while (1);
1404
-
1405
-  /* not reached */
1406
-  return MSPACK_ERR_OK;
1407
-}
1408
-
1409
-static unsigned int cabd_checksum(unsigned char *data, unsigned int bytes,
1410
-				  unsigned int cksum)
1411
-{
1412
-  unsigned int len, ul = 0;
1413
-
1414
-  for (len = bytes >> 2; len--; data += 4) {
1415
-    cksum ^= ((data[0]) | (data[1]<<8) | (data[2]<<16) | (data[3]<<24));
1416
-  }
1417
-
1418
-  switch (bytes & 3) {
1419
-  case 3: ul |= *data++ << 16;
1420
-  case 2: ul |= *data++ <<  8;
1421
-  case 1: ul |= *data;
1422
-  }
1423
-  cksum ^= ul;
1424
-
1425
-  return cksum;
1426
-}
1427
-
1428
-/***************************************
1429
- * NONED_INIT, NONED_DECOMPRESS, NONED_FREE
1430
- ***************************************
1431
- * the "not compressed" method decompressor
1432
- */
1433
-struct noned_state {
1434
-  struct mspack_system *sys;
1435
-  struct mspack_file *i;
1436
-  struct mspack_file *o;
1437
-  unsigned char *buf;
1438
-  int bufsize;
1439
-};
1440
-
1441
-static struct noned_state *noned_init(struct mspack_system *sys,
1442
-				      struct mspack_file *in,
1443
-				      struct mspack_file *out,
1444
-				      int bufsize)
1445
-{
1446
-  struct noned_state *state = sys->alloc(sys, sizeof(struct noned_state));
1447
-  unsigned char *buf = sys->alloc(sys, (size_t) bufsize);
1448
-  if (state && buf) {
1449
-    state->sys     = sys;
1450
-    state->i       = in;
1451
-    state->o       = out;
1452
-    state->buf     = buf;
1453
-    state->bufsize = bufsize;
1454
-  }
1455
-  else {
1456
-    sys->free(buf);
1457
-    sys->free(state);
1458
-    state = NULL;
1459
-  }
1460
-  return state;
1461
-}
1462
-
1463
-static int noned_decompress(struct noned_state *s, off_t bytes) {
1464
-  int run;
1465
-  while (bytes > 0) {
1466
-    run = (bytes > s->bufsize) ? s->bufsize : (int) bytes;
1467
-    if (s->sys->read(s->i, &s->buf[0], run) != run) return MSPACK_ERR_READ;
1468
-    if (s->sys->write(s->o, &s->buf[0], run) != run) return MSPACK_ERR_WRITE;
1469
-    bytes -= run;
1470
-  }
1471
-  return MSPACK_ERR_OK;
1472
-}
1473
-
1474
-static void noned_free(struct noned_state *state) {
1475
-  struct mspack_system *sys;
1476
-  if (state) {
1477
-    sys = state->sys;
1478
-    sys->free(state->buf);
1479
-    sys->free(state);
1480
-  }
1481
-}
1482
-
1483
-
1484
-/***************************************
1485
- * CABD_PARAM
1486
- ***************************************
1487
- * allows a parameter to be set
1488
- */
1489
-static int cabd_param(struct mscab_decompressor *base, int param, int value) {
1490
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
1491
-  if (!this) return MSPACK_ERR_ARGS;
1492
-
1493
-  switch (param) {
1494
-  case MSCABD_PARAM_SEARCHBUF:
1495
-    if (value < 4) return MSPACK_ERR_ARGS;
1496
-    this->param[MSCABD_PARAM_SEARCHBUF] = value;
1497
-    break;
1498
-  case MSCABD_PARAM_FIXMSZIP:
1499
-    this->param[MSCABD_PARAM_FIXMSZIP] = value;
1500
-    break;
1501
-  case MSCABD_PARAM_DECOMPBUF:
1502
-    if (value < 4) return MSPACK_ERR_ARGS;
1503
-    this->param[MSCABD_PARAM_DECOMPBUF] = value;
1504
-    break;
1505
-  default:
1506
-    return MSPACK_ERR_ARGS;
1507
-  }
1508
-  return MSPACK_ERR_OK;
1509
-}
1510
-
1511
-/***************************************
1512
- * CABD_ERROR
1513
- ***************************************
1514
- * returns the last error that occurred
1515
- */
1516
-static int cabd_error(struct mscab_decompressor *base) {
1517
-  struct mscab_decompressor_p *this = (struct mscab_decompressor_p *) base;
1518
-  return (this) ? this->error : MSPACK_ERR_ARGS;
1519
-}
1520 1
deleted file mode 100644
... ...
@@ -1,167 +0,0 @@
1
-/* This file is part of libmspack.
2
- * (C) 2003-2004 Stuart Caie.
3
- *
4
- * The LZX method was created by Jonathan Forbes and Tomi Poutanen, adapted
5
- * by Microsoft Corporation.
6
- *
7
- * libmspack is free software; you can redistribute it and/or modify it under
8
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
9
- *
10
- * For further details, see the file COPYING.LIB distributed with libmspack
11
- */
12
-
13
-#ifndef MSPACK_LZX_H
14
-#define MSPACK_LZX_H 1
15
-
16
-/* LZX compression / decompression definitions */
17
-
18
-/* some constants defined by the LZX specification */
19
-#define LZX_MIN_MATCH                (2)
20
-#define LZX_MAX_MATCH                (257)
21
-#define LZX_NUM_CHARS                (256)
22
-#define LZX_BLOCKTYPE_INVALID        (0)   /* also blocktypes 4-7 invalid */
23
-#define LZX_BLOCKTYPE_VERBATIM       (1)
24
-#define LZX_BLOCKTYPE_ALIGNED        (2)
25
-#define LZX_BLOCKTYPE_UNCOMPRESSED   (3)
26
-#define LZX_PRETREE_NUM_ELEMENTS     (20)
27
-#define LZX_ALIGNED_NUM_ELEMENTS     (8)   /* aligned offset tree #elements */
28
-#define LZX_NUM_PRIMARY_LENGTHS      (7)   /* this one missing from spec! */
29
-#define LZX_NUM_SECONDARY_LENGTHS    (249) /* length tree #elements */
30
-
31
-/* LZX huffman defines: tweak tablebits as desired */
32
-#define LZX_PRETREE_MAXSYMBOLS  (LZX_PRETREE_NUM_ELEMENTS)
33
-#define LZX_PRETREE_TABLEBITS   (6)
34
-#define LZX_MAINTREE_MAXSYMBOLS (LZX_NUM_CHARS + 50*8)
35
-#define LZX_MAINTREE_TABLEBITS  (12)
36
-#define LZX_LENGTH_MAXSYMBOLS   (LZX_NUM_SECONDARY_LENGTHS+1)
37
-#define LZX_LENGTH_TABLEBITS    (12)
38
-#define LZX_ALIGNED_MAXSYMBOLS  (LZX_ALIGNED_NUM_ELEMENTS)
39
-#define LZX_ALIGNED_TABLEBITS   (7)
40
-#define LZX_LENTABLE_SAFETY (64)  /* table decoding overruns are allowed */
41
-
42
-#define LZX_FRAME_SIZE (32768) /* the size of a frame in LZX */
43
-
44
-struct lzxd_stream {
45
-  struct mspack_system *sys;      /* I/O routines                            */
46
-  struct mspack_file   *input;    /* input file handle                       */
47
-  struct mspack_file   *output;   /* output file handle                      */
48
-
49
-  off_t   offset;                 /* number of bytes actually output         */
50
-  off_t   length;                 /* overall decompressed length of stream   */
51
-
52
-  unsigned char *window;          /* decoding window                         */
53
-  unsigned int   window_size;     /* window size                             */
54
-  unsigned int   window_posn;     /* decompression offset within window      */
55
-  unsigned int   frame_posn;      /* current frame offset within in window   */
56
-  unsigned int   frame;           /* the number of 32kb frames processed     */
57
-  unsigned int   reset_interval;  /* which frame do we reset the compressor? */
58
-
59
-  unsigned int   R0, R1, R2;      /* for the LRU offset system               */
60
-  unsigned int   block_length;    /* uncompressed length of this LZX block   */
61
-  unsigned int   block_remaining; /* uncompressed bytes still left to decode */
62
-
63
-  signed int     intel_filesize;  /* magic header value used for transform   */
64
-  signed int     intel_curpos;    /* current offset in transform space       */
65
-
66
-  unsigned char  intel_started;   /* has intel E8 decoding started?          */
67
-  unsigned char  block_type;      /* type of the current block               */
68
-  unsigned char  header_read;     /* have we started decoding at all yet?    */
69
-  unsigned char  posn_slots;      /* how many posn slots in stream?          */
70
-  unsigned char  input_end;       /* have we reached the end of input?       */
71
-
72
-  int error;
73
-
74
-  /* I/O buffering */
75
-  unsigned char *inbuf, *i_ptr, *i_end, *o_ptr, *o_end;
76
-  unsigned int  bit_buffer, bits_left, inbuf_size;
77
-
78
-  /* huffman code lengths */
79
-  unsigned char PRETREE_len  [LZX_PRETREE_MAXSYMBOLS  + LZX_LENTABLE_SAFETY];
80
-  unsigned char MAINTREE_len [LZX_MAINTREE_MAXSYMBOLS + LZX_LENTABLE_SAFETY];
81
-  unsigned char LENGTH_len   [LZX_LENGTH_MAXSYMBOLS   + LZX_LENTABLE_SAFETY];
82
-  unsigned char ALIGNED_len  [LZX_ALIGNED_MAXSYMBOLS  + LZX_LENTABLE_SAFETY];
83
-
84
-  /* huffman decoding tables */
85
-  unsigned short PRETREE_table [(1 << LZX_PRETREE_TABLEBITS) +
86
-				(LZX_PRETREE_MAXSYMBOLS * 2)];
87
-  unsigned short MAINTREE_table[(1 << LZX_MAINTREE_TABLEBITS) +
88
-				(LZX_MAINTREE_MAXSYMBOLS * 2)];
89
-  unsigned short LENGTH_table  [(1 << LZX_LENGTH_TABLEBITS) +
90
-				(LZX_LENGTH_MAXSYMBOLS * 2)];
91
-  unsigned short ALIGNED_table [(1 << LZX_ALIGNED_TABLEBITS) +
92
-				(LZX_ALIGNED_MAXSYMBOLS * 2)];
93
-
94
-  /* this is used purely for doing the intel E8 transform */
95
-  unsigned char  e8_buf[LZX_FRAME_SIZE];
96
-};
97
-
98
-/* allocates LZX decompression state for decoding the given stream.
99
- *
100
- * - returns NULL if window_bits is outwith the range 15 to 21 (inclusive).
101
- *
102
- * - uses system->alloc() to allocate memory
103
- *
104
- * - returns NULL if not enough memory
105
- *
106
- * - window_bits is the size of the LZX window, from 32Kb (15) to 2Mb (21).
107
- *
108
- * - reset_interval is how often the bitstream is reset, measured in
109
- *   multiples of 32Kb bytes output. For CAB LZX streams, this is always 0
110
- *   (does not occur).
111
- *
112
- * - input_buffer_size is how many bytes to use as an input bitstream buffer
113
- *
114
- * - output_length is the length in bytes of the entirely decompressed
115
- *   output stream, if known in advance. It is used to correctly perform
116
- *   the Intel E8 transformation, which must stop 6 bytes before the very
117
- *   end of the decompressed stream. It is not otherwise used or adhered
118
- *   to. If the full decompressed length is known in advance, set it here.
119
- *   If it is NOT known, use the value 0, and call lzxd_set_output_length()
120
- *   once it is known. If never set, 4 of the final 6 bytes of the output
121
- *   stream may be incorrect.
122
- */
123
-extern struct lzxd_stream *lzxd_init(struct mspack_system *system,
124
-				     struct mspack_file *input,
125
-				     struct mspack_file *output,
126
-				     int window_bits,
127
-				     int reset_interval,
128
-				     int input_buffer_size,
129
-				     off_t output_length);
130
-
131
-/* see description of output_length in lzxd_init() */
132
-extern void lzxd_set_output_length(struct lzxd_stream *lzx,
133
-				   off_t output_length);
134
-
135
-/* decompresses, or decompresses more of, an LZX stream.
136
- *
137
- * - out_bytes of data will be decompressed and the function will return
138
- *   with an MSPACK_ERR_OK return code.
139
- *
140
- * - decompressing will stop as soon as out_bytes is reached. if the true
141
- *   amount of bytes decoded spills over that amount, they will be kept for
142
- *   a later invocation of lzxd_decompress().
143
- *
144
- * - the output bytes will be passed to the system->write() function given in
145
- *   lzxd_init(), using the output file handle given in lzxd_init(). More
146
- *   than one call may be made to system->write().
147
- *
148
- * - LZX will read input bytes as necessary using the system->read() function
149
- *   given in lzxd_init(), using the input file handle given in lzxd_init().
150
- *   This will continue until system->read() returns 0 bytes, or an error.
151
- *   input streams should convey an "end of input stream" by refusing to
152
- *   supply all the bytes that LZX asks for when they reach the end of the
153
- *   stream, rather than return an error code.
154
- *
155
- * - if an error code other than MSPACK_ERR_OK is returned, the stream should
156
- *   be considered unusable and lzxd_decompress() should not be called again
157
- *   on this stream.
158
- */
159
-extern int lzxd_decompress(struct lzxd_stream *lzx, off_t out_bytes);
160
-
161
-/* frees all state associated with an LZX data stream
162
- *
163
- * - calls system->free() using the system pointer given in lzxd_init()
164
- */
165
-void lzxd_free(struct lzxd_stream *lzx);
166
-
167
-#endif
168 1
deleted file mode 100644
... ...
@@ -1,902 +0,0 @@
1
-/* This file is part of libmspack.
2
- * (C) 2003-2004 Stuart Caie.
3
- *
4
- * The LZX method was created by Jonathan Forbes and Tomi Poutanen, adapted
5
- * by Microsoft Corporation.
6
- *
7
- * libmspack is free software; you can redistribute it and/or modify it under
8
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
9
- *
10
- * For further details, see the file COPYING.LIB distributed with libmspack
11
- */
12
-
13
-/* LZX decompression implementation */
14
-
15
-#if HAVE_CONFIG_H
16
-#include "clamav-config.h"
17
-#endif
18
-
19
-#include <mspack.h>
20
-#include <system.h>
21
-#include <lzx.h>
22
-
23
-/* Microsoft's LZX document and their implementation of the
24
- * com.ms.util.cab Java package do not concur.
25
- *
26
- * In the LZX document, there is a table showing the correlation between
27
- * window size and the number of position slots. It states that the 1MB
28
- * window = 40 slots and the 2MB window = 42 slots. In the implementation,
29
- * 1MB = 42 slots, 2MB = 50 slots. The actual calculation is 'find the
30
- * first slot whose position base is equal to or more than the required
31
- * window size'. This would explain why other tables in the document refer
32
- * to 50 slots rather than 42.
33
- *
34
- * The constant NUM_PRIMARY_LENGTHS used in the decompression pseudocode
35
- * is not defined in the specification.
36
- *
37
- * The LZX document does not state the uncompressed block has an
38
- * uncompressed length field. Where does this length field come from, so
39
- * we can know how large the block is? The implementation has it as the 24
40
- * bits following after the 3 blocktype bits, before the alignment
41
- * padding.
42
- *
43
- * The LZX document states that aligned offset blocks have their aligned
44
- * offset huffman tree AFTER the main and length trees. The implementation
45
- * suggests that the aligned offset tree is BEFORE the main and length
46
- * trees.
47
- *
48
- * The LZX document decoding algorithm states that, in an aligned offset
49
- * block, if an extra_bits value is 1, 2 or 3, then that number of bits
50
- * should be read and the result added to the match offset. This is
51
- * correct for 1 and 2, but not 3, where just a huffman symbol (using the
52
- * aligned tree) should be read.
53
- *
54
- * Regarding the E8 preprocessing, the LZX document states 'No translation
55
- * may be performed on the last 6 bytes of the input block'. This is
56
- * correct.  However, the pseudocode provided checks for the *E8 leader*
57
- * up to the last 6 bytes. If the leader appears between -10 and -7 bytes
58
- * from the end, this would cause the next four bytes to be modified, at
59
- * least one of which would be in the last 6 bytes, which is not allowed
60
- * according to the spec.
61
- *
62
- * The specification states that the huffman trees must always contain at
63
- * least one element. However, many CAB files contain blocks where the
64
- * length tree is completely empty (because there are no matches), and
65
- * this is expected to succeed.
66
- */
67
-
68
-
69
-/* LZX decompressor input macros
70
- *
71
- * STORE_BITS        stores bitstream state in lzxd_stream structure
72
- * RESTORE_BITS      restores bitstream state from lzxd_stream structure
73
- * READ_BITS(var,n)  takes N bits from the buffer and puts them in var
74
- * ENSURE_BITS(n)    ensures there are at least N bits in the bit buffer.
75
- * PEEK_BITS(n)      extracts without removing N bits from the bit buffer
76
- * REMOVE_BITS(n)    removes N bits from the bit buffer
77
- *
78
- * These bit access routines work by using the area beyond the MSB and the
79
- * LSB as a free source of zeroes when shifting. This avoids having to
80
- * mask any bits. So we have to know the bit width of the bit buffer
81
- * variable.
82
- *
83
- * The bit buffer datatype should be at least 32 bits wide: it must be
84
- * possible to ENSURE_BITS(16), so it must be possible to add 16 new bits
85
- * to the bit buffer when the bit buffer already has 1 to 15 bits left.
86
- */
87
-
88
-#if HAVE_LIMITS_H
89
-# include <limits.h>
90
-#endif
91
-#ifndef CHAR_BIT
92
-# define CHAR_BIT (8)
93
-#endif
94
-#define BITBUF_WIDTH (sizeof(bit_buffer) * CHAR_BIT)
95
-
96
-#define STORE_BITS do {                                                 \
97
-  lzx->i_ptr      = i_ptr;                                              \
98
-  lzx->i_end      = i_end;                                              \
99
-  lzx->bit_buffer = bit_buffer;                                         \
100
-  lzx->bits_left  = bits_left;                                          \
101
-} while (0)
102
-
103
-#define RESTORE_BITS do {                                               \
104
-  i_ptr      = lzx->i_ptr;                                              \
105
-  i_end      = lzx->i_end;                                              \
106
-  bit_buffer = lzx->bit_buffer;                                         \
107
-  bits_left  = lzx->bits_left;                                          \
108
-} while (0)
109
-
110
-#define ENSURE_BITS(nbits)                                              \
111
-  while (bits_left < (nbits)) {                                         \
112
-    if (i_ptr >= i_end) {                                               \
113
-      if (lzxd_read_input(lzx)) return lzx->error;                      \
114
-      i_ptr = lzx->i_ptr;                                               \
115
-      i_end = lzx->i_end;                                               \
116
-    }                                                                   \
117
-    bit_buffer |= ((i_ptr[1] << 8) | i_ptr[0])                          \
118
-                  << (BITBUF_WIDTH - 16 - bits_left);                   \
119
-    bits_left  += 16;                                                   \
120
-    i_ptr      += 2;                                                    \
121
-  }
122
-
123
-#define PEEK_BITS(nbits) (bit_buffer >> (BITBUF_WIDTH - (nbits)))
124
-
125
-#define REMOVE_BITS(nbits) ((bit_buffer <<= (nbits)), (bits_left -= (nbits)))
126
-
127
-#define READ_BITS(val, nbits) do {                                      \
128
-  ENSURE_BITS(nbits);                                                   \
129
-  (val) = PEEK_BITS(nbits);                                             \
130
-  REMOVE_BITS(nbits);                                                   \
131
-} while (0)
132
-
133
-static int lzxd_read_input(struct lzxd_stream *lzx) {
134
-  int read = lzx->sys->read(lzx->input, &lzx->inbuf[0], (int)lzx->inbuf_size);
135
-  if (read < 0) return lzx->error = MSPACK_ERR_READ;
136
-
137
-  /* huff decode's ENSURE_BYTES(16) might overrun the input stream, even
138
-   * if those bits aren't used, so fake 2 more bytes */
139
-  if (read == 0) {
140
-    if (lzx->input_end) {
141
-      D(("out of input bytes"))
142
-      return lzx->error = MSPACK_ERR_READ;
143
-    }
144
-    else {
145
-      read = 2;
146
-      lzx->inbuf[0] = lzx->inbuf[1] = 0;
147
-      lzx->input_end = 1;
148
-    }
149
-  }
150
-
151
-  lzx->i_ptr = &lzx->inbuf[0];
152
-  lzx->i_end = &lzx->inbuf[read];
153
-
154
-  return MSPACK_ERR_OK;
155
-}
156
-
157
-/* Huffman decoding macros */
158
-
159
-/* READ_HUFFSYM(tablename, var) decodes one huffman symbol from the
160
- * bitstream using the stated table and puts it in var.
161
- */
162
-#define READ_HUFFSYM(tbl, var) do {                                     \
163
-  /* huffman symbols can be up to 16 bits long */                       \
164
-  ENSURE_BITS(16);                                                      \
165
-  /* immediate table lookup of [tablebits] bits of the code */          \
166
-  sym = lzx->tbl##_table[PEEK_BITS(LZX_##tbl##_TABLEBITS)];             \
167
-  /* is the symbol is longer than [tablebits] bits? (i=node index) */   \
168
-  if (sym >= LZX_##tbl##_MAXSYMBOLS) {                                  \
169
-    /* decode remaining bits by tree traversal */                       \
170
-    i = 1 << (BITBUF_WIDTH - LZX_##tbl##_TABLEBITS);                    \
171
-    do {                                                                \
172
-      /* one less bit. error if we run out of bits before decode */     \
173
-      i >>= 1;                                                          \
174
-      if (i == 0) {                                                     \
175
-        D(("out of bits in huffman decode"))                            \
176
-        return lzx->error = MSPACK_ERR_DECRUNCH;                        \
177
-      }                                                                 \
178
-      /* double node index and add 0 (left branch) or 1 (right) */      \
179
-      sym <<= 1; sym |= (bit_buffer & i) ? 1 : 0;                       \
180
-      /* hop to next node index / decoded symbol */                     \
181
-      sym = lzx->tbl##_table[sym];                                      \
182
-      /* while we are still in node indicies, not decoded symbols */    \
183
-    } while (sym >= LZX_##tbl##_MAXSYMBOLS);                            \
184
-  }                                                                     \
185
-  /* result */                                                          \
186
-  (var) = sym;                                                          \
187
-  /* look up the code length of that symbol and discard those bits */   \
188
-  i = lzx->tbl##_len[sym];                                              \
189
-  REMOVE_BITS(i);                                                       \
190
-} while (0)
191
-
192
-/* BUILD_TABLE(tbl) builds a huffman lookup table from code lengths */
193
-#define BUILD_TABLE(tbl)                                                \
194
-  if (make_decode_table(LZX_##tbl##_MAXSYMBOLS, LZX_##tbl##_TABLEBITS,  \
195
-			&lzx->tbl##_len[0], &lzx->tbl##_table[0]))      \
196
-  {                                                                     \
197
-    D(("failed to build %s table", #tbl))                               \
198
-    return lzx->error = MSPACK_ERR_DECRUNCH;                            \
199
-  }
200
-
201
-/* make_decode_table(nsyms, nbits, length[], table[])
202
- *
203
- * This function was coded by David Tritscher. It builds a fast huffman
204
- * decoding table from a canonical huffman code lengths table.
205
- *
206
- * nsyms  = total number of symbols in this huffman tree.
207
- * nbits  = any symbols with a code length of nbits or less can be decoded
208
- *          in one lookup of the table.
209
- * length = A table to get code lengths from [0 to syms-1]
210
- * table  = The table to fill up with decoded symbols and pointers.
211
- *
212
- * Returns 0 for OK or 1 for error
213
- */
214
-
215
-static int make_decode_table(unsigned int nsyms, unsigned int nbits,
216
-			     unsigned char *length, unsigned short *table)
217
-{
218
-  register unsigned short sym;
219
-  register unsigned int leaf, fill;
220
-  register unsigned char bit_num;
221
-  unsigned int pos         = 0; /* the current position in the decode table */
222
-  unsigned int table_mask  = 1 << nbits;
223
-  unsigned int bit_mask    = table_mask >> 1; /* don't do 0 length codes */
224
-  unsigned int next_symbol = bit_mask; /* base of allocation for long codes */
225
-
226
-  /* fill entries for codes short enough for a direct mapping */
227
-  for (bit_num = 1; bit_num <= nbits; bit_num++) {
228
-    for (sym = 0; sym < nsyms; sym++) {
229
-      if (length[sym] != bit_num) continue;
230
-      leaf = pos;
231
-      if((pos += bit_mask) > table_mask) return 1; /* table overrun */
232
-      /* fill all possible lookups of this symbol with the symbol itself */
233
-      for (fill = bit_mask; fill-- > 0;) table[leaf++] = sym;
234
-    }
235
-    bit_mask >>= 1;
236
-  }
237
-
238
-  /* full table already? */
239
-  if (pos == table_mask) return 0;
240
-
241
-  /* clear the remainder of the table */
242
-  for (sym = pos; sym < table_mask; sym++) table[sym] = 0xFFFF;
243
-
244
-  /* allow codes to be up to nbits+16 long, instead of nbits */
245
-  pos <<= 16;
246
-  table_mask <<= 16;
247
-  bit_mask = 1 << 15;
248
-
249
-  for (bit_num = nbits+1; bit_num <= 16; bit_num++) {
250
-    for (sym = 0; sym < nsyms; sym++) {
251
-      if (length[sym] != bit_num) continue;
252
-
253
-      leaf = pos >> 16;
254
-      for (fill = 0; fill < bit_num - nbits; fill++) {
255
-	/* if this path hasn't been taken yet, 'allocate' two entries */
256
-	if (table[leaf] == 0xFFFF) {
257
-	  table[(next_symbol << 1)] = 0xFFFF;
258
-	  table[(next_symbol << 1) + 1] = 0xFFFF;
259
-	  table[leaf] = next_symbol++;
260
-	}
261
-	/* follow the path and select either left or right for next bit */
262
-	leaf = table[leaf] << 1;
263
-	if ((pos >> (15-fill)) & 1) leaf++;
264
-      }
265
-      table[leaf] = sym;
266
-
267
-      if ((pos += bit_mask) > table_mask) return 1; /* table overflow */
268
-    }
269
-    bit_mask >>= 1;
270
-  }
271
-
272
-  /* full table? */
273
-  if (pos == table_mask) return 0;
274
-
275
-  /* either erroneous table, or all elements are 0 - let's find out. */
276
-  for (sym = 0; sym < nsyms; sym++) if (length[sym]) return 1;
277
-  return 0;
278
-}
279
-
280
-
281
-/* READ_LENGTHS(tablename, first, last) reads in code lengths for symbols
282
- * first to last in the given table. The code lengths are stored in their
283
- * own special LZX way.
284
- */
285
-#define READ_LENGTHS(tbl, first, last) do {                            \
286
-  STORE_BITS;                                                          \
287
-  if (lzxd_read_lens(lzx, &lzx->tbl##_len[0], (first),                 \
288
-    (unsigned int)(last))) return lzx->error;                          \
289
-  RESTORE_BITS;                                                        \
290
-} while (0)
291
-
292
-static int lzxd_read_lens(struct lzxd_stream *lzx, unsigned char *lens,
293
-			  unsigned int first, unsigned int last)
294
-{
295
-  /* bit buffer and huffman symbol decode variables */
296
-  register unsigned int bit_buffer;
297
-  register int bits_left, i;
298
-  register unsigned short sym;
299
-  unsigned char *i_ptr, *i_end;
300
-
301
-  unsigned int x, y;
302
-  int z;
303
-
304
-  RESTORE_BITS;
305
-  
306
-  /* read lengths for pretree (20 symbols, lengths stored in fixed 4 bits) */
307
-  for (x = 0; x < 20; x++) {
308
-    READ_BITS(y, 4);
309
-    lzx->PRETREE_len[x] = y;
310
-  }
311
-  BUILD_TABLE(PRETREE);
312
-
313
-  for (x = first; x < last; ) {
314
-    READ_HUFFSYM(PRETREE, z);
315
-    if (z == 17) {
316
-      /* code = 17, run of ([read 4 bits]+4) zeros */
317
-      READ_BITS(y, 4); y += 4;
318
-      while (y--) lens[x++] = 0;
319
-    }
320
-    else if (z == 18) {
321
-      /* code = 18, run of ([read 5 bits]+20) zeros */
322
-      READ_BITS(y, 5); y += 20;
323
-      while (y--) lens[x++] = 0;
324
-    }
325
-    else if (z == 19) {
326
-      /* code = 19, run of ([read 1 bit]+4) [read huffman symbol] */
327
-      READ_BITS(y, 1); y += 4;
328
-      READ_HUFFSYM(PRETREE, z);
329
-      z = lens[x] - z; if (z < 0) z += 17;
330
-      while (y--) lens[x++] = z;
331
-    }
332
-    else {
333
-      /* code = 0 to 16, delta current length entry */
334
-      z = lens[x] - z; if (z < 0) z += 17;
335
-      lens[x++] = z;
336
-    }
337
-  }
338
-
339
-  STORE_BITS;
340
-
341
-  return MSPACK_ERR_OK;
342
-}
343
-
344
-/* LZX static data tables:
345
- *
346
- * LZX uses 'position slots' to represent match offsets.  For every match,
347
- * a small 'position slot' number and a small offset from that slot are
348
- * encoded instead of one large offset.
349
- *
350
- * position_base[] is an index to the position slot bases
351
- *
352
- * extra_bits[] states how many bits of offset-from-base data is needed.
353
- */
354
-static unsigned int  position_base[51];
355
-static unsigned char extra_bits[51];
356
-
357
-static void lzxd_static_init() {
358
-  int i, j;
359
-
360
-  for (i = 0, j = 0; i < 51; i += 2) {
361
-    extra_bits[i]   = j; /* 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7... */
362
-    if(i < 50)
363
-	extra_bits[i+1] = j;
364
-    if ((i != 0) && (j < 17)) j++; /* 0,0,1,2,3,4...15,16,17,17,17,17... */
365
-  }
366
-
367
-  for (i = 0, j = 0; i < 51; i++) {
368
-    position_base[i] = j; /* 0,1,2,3,4,6,8,12,16,24,32,... */
369
-    j += 1 << extra_bits[i]; /* 1,1,1,1,2,2,4,4,8,8,16,16,32,32,... */
370
-  }
371
-}
372
-
373
-static void lzxd_reset_state(struct lzxd_stream *lzx) {
374
-  int i;
375
-
376
-  lzx->R0              = 1;
377
-  lzx->R1              = 1;
378
-  lzx->R2              = 1;
379
-  lzx->header_read     = 0;
380
-  lzx->block_remaining = 0;
381
-  lzx->block_type      = LZX_BLOCKTYPE_INVALID;
382
-
383
-  /* initialise tables to 0 (because deltas will be applied to them) */
384
-  for (i = 0; i < LZX_MAINTREE_MAXSYMBOLS; i++) lzx->MAINTREE_len[i] = 0;
385
-  for (i = 0; i < LZX_LENGTH_MAXSYMBOLS; i++)   lzx->LENGTH_len[i]   = 0;
386
-}
387
-
388
-/*-------- main LZX code --------*/
389
-
390
-struct lzxd_stream *lzxd_init(struct mspack_system *system,
391
-			      struct mspack_file *input,
392
-			      struct mspack_file *output,
393
-			      int window_bits,
394
-			      int reset_interval,
395
-			      int input_buffer_size,
396
-			      off_t output_length)
397
-{
398
-  unsigned int window_size = 1 << window_bits;
399
-  struct lzxd_stream *lzx;
400
-
401
-  if (!system) return NULL;
402
-
403
-  /* LZX supports window sizes of 2^15 (32Kb) through 2^21 (2Mb) */
404
-  if (window_bits < 15 || window_bits > 21) return NULL;
405
-
406
-  input_buffer_size = (input_buffer_size + 1) & -2;
407
-  if (!input_buffer_size) return NULL;
408
-
409
-  /* initialise static data */
410
-  lzxd_static_init();
411
-
412
-  /* allocate decompression state */
413
-  if (!(lzx = system->alloc(system, sizeof(struct lzxd_stream)))) {
414
-    return NULL;
415
-  }
416
-
417
-  /* allocate decompression window and input buffer */
418
-  lzx->window = system->alloc(system, (size_t) window_size);
419
-  lzx->inbuf  = system->alloc(system, (size_t) input_buffer_size);
420
-  if (!lzx->window || !lzx->inbuf) {
421
-    system->free(lzx->window);
422
-    system->free(lzx->inbuf);
423
-    system->free(lzx);
424
-    return NULL;
425
-  }
426
-
427
-  /* initialise decompression state */
428
-  lzx->sys             = system;
429
-  lzx->input           = input;
430
-  lzx->output          = output;
431
-  lzx->offset          = 0;
432
-  lzx->length          = output_length;
433
-
434
-  lzx->inbuf_size      = input_buffer_size;
435
-  lzx->window_size     = 1 << window_bits;
436
-  lzx->window_posn     = 0;
437
-  lzx->frame_posn      = 0;
438
-  lzx->frame           = 0;
439
-  lzx->reset_interval  = reset_interval;
440
-  lzx->intel_filesize  = 0;
441
-  lzx->intel_curpos    = 0;
442
-
443
-  /* window bits:    15  16  17  18  19  20  21
444
-   * position slots: 30  32  34  36  38  42  50  */
445
-  lzx->posn_slots      = ((window_bits == 21) ? 50 :
446
-			  ((window_bits == 20) ? 42 : (window_bits << 1)));
447
-  lzx->intel_started   = 0;
448
-  lzx->input_end       = 0;
449
-
450
-  lzx->error = MSPACK_ERR_OK;
451
-
452
-  lzx->i_ptr = lzx->i_end = &lzx->inbuf[0];
453
-  lzx->o_ptr = lzx->o_end = &lzx->e8_buf[0];
454
-  lzx->bit_buffer = lzx->bits_left = 0;
455
-
456
-  lzxd_reset_state(lzx);
457
-  return lzx;
458
-}
459
-
460
-void lzxd_set_output_length(struct lzxd_stream *lzx, off_t out_bytes) {
461
-  if (lzx) lzx->length = out_bytes;
462
-}
463
-
464
-int lzxd_decompress(struct lzxd_stream *lzx, off_t out_bytes) {
465
-  /* bitstream reading and huffman variables */
466
-  register unsigned int bit_buffer;
467
-  register int bits_left, i=0;
468
-  register unsigned short sym;
469
-  unsigned char *i_ptr, *i_end;
470
-
471
-  int match_length, length_footer, extra, verbatim_bits, bytes_todo;
472
-  int this_run, main_element, aligned_bits, j;
473
-  unsigned char *window, *runsrc, *rundest, buf[12];
474
-  unsigned int frame_size=0, end_frame, match_offset, window_posn;
475
-  unsigned int R0, R1, R2;
476
-
477
-  /* easy answers */
478
-  if (!lzx || (out_bytes < 0)) return MSPACK_ERR_ARGS;
479
-  if (lzx->error) return lzx->error;
480
-
481
-  /* flush out any stored-up bytes before we begin */
482
-  i = lzx->o_end - lzx->o_ptr;
483
-  if ((off_t) i > out_bytes) i = (int) out_bytes;
484
-  if (i) {
485
-    if (lzx->sys->write(lzx->output, lzx->o_ptr, i) != i) {
486
-      return lzx->error = MSPACK_ERR_WRITE;
487
-    }
488
-    lzx->o_ptr  += i;
489
-    lzx->offset += i;
490
-    out_bytes   -= i;
491
-  }
492
-  if (out_bytes == 0) return MSPACK_ERR_OK;
493
-
494
-  /* restore local state */
495
-  RESTORE_BITS;
496
-  window = lzx->window;
497
-  window_posn = lzx->window_posn;
498
-  R0 = lzx->R0;
499
-  R1 = lzx->R1;
500
-  R2 = lzx->R2;
501
-
502
-  end_frame = (unsigned int)((lzx->offset + out_bytes) / LZX_FRAME_SIZE) + 1;
503
-
504
-  while (lzx->frame < end_frame) {
505
-    /* have we reached the reset interval? (if there is one?) */
506
-    if (lzx->reset_interval && ((lzx->frame % lzx->reset_interval) == 0)) {
507
-      if (lzx->block_remaining) {
508
-	D(("%d bytes remaining at reset interval", lzx->block_remaining))
509
-	return lzx->error = MSPACK_ERR_DECRUNCH;
510
-      }
511
-
512
-      /* re-read the intel header and reset the huffman lengths */
513
-      lzxd_reset_state(lzx);
514
-    }
515
-
516
-    /* read header if necessary */
517
-    if (!lzx->header_read) {
518
-      /* read 1 bit. if bit=0, intel filesize = 0.
519
-       * if bit=1, read intel filesize (32 bits) */
520
-      j = 0; READ_BITS(i, 1); if (i) { READ_BITS(i, 16); READ_BITS(j, 16); }
521
-      lzx->intel_filesize = (i << 16) | j;
522
-      lzx->header_read = 1;
523
-    } 
524
-
525
-    /* calculate size of frame: all frames are 32k except the final frame
526
-     * which is 32kb or less. this can only be calculated when lzx->length
527
-     * has been filled in. */
528
-    frame_size = LZX_FRAME_SIZE;
529
-    if (lzx->length && (lzx->length - lzx->offset) < (off_t)frame_size) {
530
-      frame_size = lzx->length - lzx->offset;
531
-    }
532
-
533
-    /* decode until one more frame is available */
534
-    bytes_todo = lzx->frame_posn + frame_size - window_posn;
535
-    while (bytes_todo > 0) {
536
-      /* initialise new block, if one is needed */
537
-      if (lzx->block_remaining == 0) {
538
-	/* realign if previous block was an odd-sized UNCOMPRESSED block */
539
-	if ((lzx->block_type == LZX_BLOCKTYPE_UNCOMPRESSED) &&
540
-	    (lzx->block_length & 1))
541
-	{
542
-	  if (i_ptr == i_end) {
543
-	    if (lzxd_read_input(lzx)) return lzx->error;
544
-	    i_ptr = lzx->i_ptr;
545
-	    i_end = lzx->i_end;
546
-	  }
547
-	  i_ptr++;
548
-	}
549
-
550
-	/* read block type (3 bits) and block length (24 bits) */
551
-	READ_BITS(lzx->block_type, 3);
552
-	READ_BITS(i, 16); READ_BITS(j, 8);
553
-	lzx->block_remaining = lzx->block_length = (i << 8) | j;
554
-	/*D(("new block t%d len %u", lzx->block_type, lzx->block_length))*/
555
-
556
-	/* read individual block headers */
557
-	switch (lzx->block_type) {
558
-	case LZX_BLOCKTYPE_ALIGNED:
559
-	  /* read lengths of and build aligned huffman decoding tree */
560
-	  for (i = 0; i < 8; i++) { READ_BITS(j, 3); lzx->ALIGNED_len[i] = j; }
561
-	  BUILD_TABLE(ALIGNED);
562
-	  /* no break -- rest of aligned header is same as verbatim */
563
-	case LZX_BLOCKTYPE_VERBATIM:
564
-	  /* read lengths of and build main huffman decoding tree */
565
-	  READ_LENGTHS(MAINTREE, 0, 256);
566
-	  READ_LENGTHS(MAINTREE, 256, LZX_NUM_CHARS + (lzx->posn_slots << 3));
567
-	  BUILD_TABLE(MAINTREE);
568
-	  /* if the literal 0xE8 is anywhere in the block... */
569
-	  if (lzx->MAINTREE_len[0xE8] != 0) lzx->intel_started = 1;
570
-	  /* read lengths of and build lengths huffman decoding tree */
571
-	  READ_LENGTHS(LENGTH, 0, LZX_NUM_SECONDARY_LENGTHS);
572
-	  BUILD_TABLE(LENGTH);
573
-	  break;
574
-
575
-	case LZX_BLOCKTYPE_UNCOMPRESSED:
576
-	  /* because we can't assume otherwise */
577
-	  lzx->intel_started = 1;
578
-
579
-	  /* read 1-16 (not 0-15) bits to align to bytes */
580
-	  ENSURE_BITS(16);
581
-	  if (bits_left > 16) i_ptr -= 2;
582
-	  bits_left = 0; bit_buffer = 0;
583
-
584
-	  /* read 12 bytes of stored R0 / R1 / R2 values */
585
-	  for (rundest = &buf[0], i = 0; i < 12; i++) {
586
-	    if (i_ptr == i_end) {
587
-	      if (lzxd_read_input(lzx)) return lzx->error;
588
-	      i_ptr = lzx->i_ptr;
589
-	      i_end = lzx->i_end;
590
-	    }
591
-	    *rundest++ = *i_ptr++;
592
-	  }
593
-	  R0 = buf[0] | (buf[1] << 8) | (buf[2]  << 16) | (buf[3]  << 24);
594
-	  R1 = buf[4] | (buf[5] << 8) | (buf[6]  << 16) | (buf[7]  << 24);
595
-	  R2 = buf[8] | (buf[9] << 8) | (buf[10] << 16) | (buf[11] << 24);
596
-	  break;
597
-
598
-	default:
599
-	  D(("bad block type"))
600
-	  return lzx->error = MSPACK_ERR_DECRUNCH;
601
-	}
602
-      }
603
-
604
-      /* decode more of the block:
605
-       * run = min(what's available, what's needed) */
606
-      this_run = lzx->block_remaining;
607
-      if (this_run > bytes_todo) this_run = bytes_todo;
608
-
609
-      /* assume we decode exactly this_run bytes, for now */
610
-      bytes_todo           -= this_run;
611
-      lzx->block_remaining -= this_run;
612
-
613
-      /* decode at least this_run bytes */
614
-      switch (lzx->block_type) {
615
-      case LZX_BLOCKTYPE_VERBATIM:
616
-	while (this_run > 0) {
617
-	  READ_HUFFSYM(MAINTREE, main_element);
618
-	  if (main_element < LZX_NUM_CHARS) {
619
-	    /* literal: 0 to LZX_NUM_CHARS-1 */
620
-	    window[window_posn++] = main_element;
621
-	    this_run--;
622
-	  }
623
-	  else {
624
-	    /* match: LZX_NUM_CHARS + ((slot<<3) | length_header (3 bits)) */
625
-	    main_element -= LZX_NUM_CHARS;
626
-
627
-	    /* get match length */
628
-	    match_length = main_element & LZX_NUM_PRIMARY_LENGTHS;
629
-	    if (match_length == LZX_NUM_PRIMARY_LENGTHS) {
630
-	      READ_HUFFSYM(LENGTH, length_footer);
631
-	      match_length += length_footer;
632
-	    }
633
-	    match_length += LZX_MIN_MATCH;
634
-	  
635
-	    /* get match offset */
636
-	    switch ((match_offset = (main_element >> 3))) {
637
-	    case 0: match_offset = R0;                                  break;
638
-	    case 1: match_offset = R1; R1=R0;        R0 = match_offset; break;
639
-	    case 2: match_offset = R2; R2=R0;        R0 = match_offset; break;
640
-	    case 3: match_offset = 1;  R2=R1; R1=R0; R0 = match_offset; break;
641
-	    default:
642
-	      extra = extra_bits[match_offset];
643
-	      READ_BITS(verbatim_bits, extra);
644
-	      match_offset = position_base[match_offset] - 2 + verbatim_bits;
645
-	      R2 = R1; R1 = R0; R0 = match_offset;
646
-	    }
647
-
648
-	    if ((window_posn + match_length) > lzx->window_size) {
649
-	      D(("match ran over window wrap"))
650
-	      return lzx->error = MSPACK_ERR_DECRUNCH;
651
-	    }
652
-	    
653
-	    /* copy match */
654
-	    rundest = &window[window_posn];
655
-	    i = match_length;
656
-	    /* does match offset wrap the window? */
657
-	    if (match_offset > window_posn) {
658
-	      /* j = length from match offset to end of window */
659
-	      j = match_offset - window_posn;
660
-	      if (j > (int) lzx->window_size) {
661
-		D(("match offset beyond window boundaries"))
662
-		return lzx->error = MSPACK_ERR_DECRUNCH;
663
-	      }
664
-	      runsrc = &window[lzx->window_size - j];
665
-	      if (j < i) {
666
-		/* if match goes over the window edge, do two copy runs */
667
-		i -= j; while (j-- > 0) *rundest++ = *runsrc++;
668
-		runsrc = window;
669
-	      }
670
-	      while (i-- > 0) *rundest++ = *runsrc++;
671
-	    }
672
-	    else {
673
-	      runsrc = rundest - match_offset;
674
-	      while (i-- > 0) *rundest++ = *runsrc++;
675
-	    }
676
-
677
-	    this_run    -= match_length;
678
-	    window_posn += match_length;
679
-	  }
680
-	} /* while (this_run > 0) */
681
-	break;
682
-
683
-      case LZX_BLOCKTYPE_ALIGNED:
684
-	while (this_run > 0) {
685
-	  READ_HUFFSYM(MAINTREE, main_element);
686
-	  if (main_element < LZX_NUM_CHARS) {
687
-	    /* literal: 0 to LZX_NUM_CHARS-1 */
688
-	    window[window_posn++] = main_element;
689
-	    this_run--;
690
-	  }
691
-	  else {
692
-	    /* match: LZX_NUM_CHARS + ((slot<<3) | length_header (3 bits)) */
693
-	    main_element -= LZX_NUM_CHARS;
694
-
695
-	    /* get match length */
696
-	    match_length = main_element & LZX_NUM_PRIMARY_LENGTHS;
697
-	    if (match_length == LZX_NUM_PRIMARY_LENGTHS) {
698
-	      READ_HUFFSYM(LENGTH, length_footer);
699
-	      match_length += length_footer;
700
-	    }
701
-	    match_length += LZX_MIN_MATCH;
702
-
703
-	    /* get match offset */
704
-	    switch ((match_offset = (main_element >> 3))) {
705
-	    case 0: match_offset = R0;                             break;
706
-	    case 1: match_offset = R1; R1 = R0; R0 = match_offset; break;
707
-	    case 2: match_offset = R2; R2 = R0; R0 = match_offset; break;
708
-	    default:
709
-	      extra = extra_bits[match_offset];
710
-	      match_offset = position_base[match_offset] - 2;
711
-	      if (extra > 3) {
712
-		/* verbatim and aligned bits */
713
-		extra -= 3;
714
-		READ_BITS(verbatim_bits, extra);
715
-		match_offset += (verbatim_bits << 3);
716
-		READ_HUFFSYM(ALIGNED, aligned_bits);
717
-		match_offset += aligned_bits;
718
-	      }
719
-	      else if (extra == 3) {
720
-		/* aligned bits only */
721
-		READ_HUFFSYM(ALIGNED, aligned_bits);
722
-		match_offset += aligned_bits;
723
-	      }
724
-	      else if (extra > 0) { /* extra==1, extra==2 */
725
-		/* verbatim bits only */
726
-		READ_BITS(verbatim_bits, extra);
727
-		match_offset += verbatim_bits;
728
-	      }
729
-	      else /* extra == 0 */ {
730
-		/* ??? not defined in LZX specification! */
731
-		match_offset = 1;
732
-	      }
733
-	      /* update repeated offset LRU queue */
734
-	      R2 = R1; R1 = R0; R0 = match_offset;
735
-	    }
736
-
737
-	    if ((window_posn + match_length) > lzx->window_size) {
738
-	      D(("match ran over window wrap"))
739
-	      return lzx->error = MSPACK_ERR_DECRUNCH;
740
-	    }
741
-
742
-	    /* copy match */
743
-	    rundest = &window[window_posn];
744
-	    i = match_length;
745
-	    /* does match offset wrap the window? */
746
-	    if (match_offset > window_posn) {
747
-	      /* j = length from match offset to end of window */
748
-	      j = match_offset - window_posn;
749
-	      if (j > (int) lzx->window_size) {
750
-		D(("match offset beyond window boundaries"))
751
-		return lzx->error = MSPACK_ERR_DECRUNCH;
752
-	      }
753
-	      runsrc = &window[lzx->window_size - j];
754
-	      if (j < i) {
755
-		/* if match goes over the window edge, do two copy runs */
756
-		i -= j; while (j-- > 0) *rundest++ = *runsrc++;
757
-		runsrc = window;
758
-	      }
759
-	      while (i-- > 0) *rundest++ = *runsrc++;
760
-	    }
761
-	    else {
762
-	      runsrc = rundest - match_offset;
763
-	      while (i-- > 0) *rundest++ = *runsrc++;
764
-	    }
765
-
766
-	    this_run    -= match_length;
767
-	    window_posn += match_length;
768
-	  }
769
-	} /* while (this_run > 0) */
770
-	break;
771
-
772
-      case LZX_BLOCKTYPE_UNCOMPRESSED:
773
-	/* as this_run is limited not to wrap a frame, this also means it
774
-	 * won't wrap the window (as the window is a multiple of 32k) */
775
-	rundest = &window[window_posn];
776
-	window_posn += this_run;
777
-	while (this_run > 0) {
778
-	  if ((i = i_end - i_ptr)) {
779
-	    if (i > this_run) i = this_run;
780
-	    lzx->sys->copy(i_ptr, rundest, (size_t) i);
781
-	    rundest  += i;
782
-	    i_ptr    += i;
783
-	    this_run -= i;
784
-	  }
785
-	  else {
786
-	    if (lzxd_read_input(lzx)) return lzx->error;
787
-	    i_ptr = lzx->i_ptr;
788
-	    i_end = lzx->i_end;
789
-	  }
790
-	}
791
-	break;
792
-
793
-      default:
794
-	return lzx->error = MSPACK_ERR_DECRUNCH; /* might as well */
795
-      }
796
-
797
-      /* did the final match overrun our desired this_run length? */
798
-      if (this_run < 0) {
799
-	if ((unsigned int)(-this_run) > lzx->block_remaining) {
800
-	  D(("overrun went past end of block by %d (%d remaining)",
801
-	     -this_run, lzx->block_remaining ))
802
-	  return lzx->error = MSPACK_ERR_DECRUNCH;
803
-	}
804
-	lzx->block_remaining -= -this_run;
805
-      }
806
-    } /* while (bytes_todo > 0) */
807
-
808
-    /* streams don't extend over frame boundaries */
809
-    if ((window_posn - lzx->frame_posn) != frame_size) {
810
-      D(("decode beyond output frame limits! %d != %d",
811
-	 window_posn - lzx->frame_posn, frame_size))
812
-      return lzx->error = MSPACK_ERR_DECRUNCH;
813
-    }
814
-
815
-    /* re-align input bitstream */
816
-    if (bits_left > 0) ENSURE_BITS(16);
817
-    if (bits_left & 15) REMOVE_BITS(bits_left & 15);
818
-
819
-    /* check that we've used all of the previous frame first */
820
-    if (lzx->o_ptr != lzx->o_end) {
821
-      D(("%d avail bytes, new %d frame", lzx->o_end-lzx->o_ptr, frame_size))
822
-      return lzx->error = MSPACK_ERR_DECRUNCH;
823
-    }
824
-
825
-    /* does this intel block _really_ need decoding? */
826
-    if (lzx->intel_started && lzx->intel_filesize &&
827
-	(lzx->frame <= 32768) && (frame_size > 10))
828
-    {
829
-      unsigned char *data    = &lzx->e8_buf[0];
830
-      unsigned char *dataend = &lzx->e8_buf[frame_size - 10];
831
-      signed int curpos      = lzx->intel_curpos;
832
-      signed int filesize    = lzx->intel_filesize;
833
-      signed int abs_off, rel_off;
834
-
835
-      /* copy e8 block to the e8 buffer and tweak if needed */
836
-      lzx->o_ptr = data;
837
-      lzx->sys->copy(&lzx->window[lzx->frame_posn], data, frame_size);
838
-
839
-      while (data < dataend) {
840
-	if (*data++ != 0xE8) { curpos++; continue; }
841
-	abs_off = data[0] | (data[1]<<8) | (data[2]<<16) | (data[3]<<24);
842
-	if ((abs_off >= -curpos) && (abs_off < filesize)) {
843
-	  rel_off = (abs_off >= 0) ? abs_off - curpos : abs_off + filesize;
844
-	  data[0] = (unsigned char) rel_off;
845
-	  data[1] = (unsigned char) (rel_off >> 8);
846
-	  data[2] = (unsigned char) (rel_off >> 16);
847
-	  data[3] = (unsigned char) (rel_off >> 24);
848
-	}
849
-	data += 4;
850
-	curpos += 5;
851
-      }
852
-      lzx->intel_curpos += frame_size;
853
-    }
854
-    else {
855
-      lzx->o_ptr = &lzx->window[lzx->frame_posn];
856
-      if (lzx->intel_filesize) lzx->intel_curpos += frame_size;
857
-    }
858
-    lzx->o_end = &lzx->o_ptr[frame_size];
859
-
860
-    /* write a frame */
861
-    i = (out_bytes < (off_t)frame_size) ? (unsigned int)out_bytes : frame_size;
862
-    if (lzx->sys->write(lzx->output, lzx->o_ptr, i) != i) {
863
-      return lzx->error = MSPACK_ERR_WRITE;
864
-    }
865
-    lzx->o_ptr  += i;
866
-    lzx->offset += i;
867
-    out_bytes   -= i;
868
-
869
-    /* advance frame start position */
870
-    lzx->frame_posn += frame_size;
871
-    lzx->frame++;
872
-
873
-    /* wrap window / frame position pointers */
874
-    if (window_posn == lzx->window_size)     window_posn = 0;
875
-    if (lzx->frame_posn == lzx->window_size) lzx->frame_posn = 0;
876
-
877
-  } /* while (lzx->frame < end_frame) */
878
-
879
-  if (out_bytes) {
880
-    D(("bytes left to output"))
881
-    return lzx->error = MSPACK_ERR_DECRUNCH;
882
-  }
883
-
884
-  /* store local state */
885
-  STORE_BITS;
886
-  lzx->window_posn = window_posn;
887
-  lzx->R0 = R0;
888
-  lzx->R1 = R1;
889
-  lzx->R2 = R2;
890
-
891
-  return MSPACK_ERR_OK;
892
-}
893
-
894
-void lzxd_free(struct lzxd_stream *lzx) {
895
-  struct mspack_system *sys;
896
-  if (lzx) {
897
-    sys = lzx->sys;
898
-    sys->free(lzx->inbuf);
899
-    sys->free(lzx->window);
900
-    sys->free(lzx);
901
-  }
902
-}
903 1
deleted file mode 100644
... ...
@@ -1,1494 +0,0 @@
1
-/* WARNING: This version also supports dopen for descriptor opening and
2
- *	    is not compatible with the original version. -- T. Kojm
3
- *
4
- * libmspack -- a library for working with Microsoft compression formats.
5
- * (C) 2003-2004 Stuart Caie <kyzer@4u.net>
6
- *
7
- * libmspack is free software; you can redistribute it and/or modify it under
8
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- * GNU Lesser General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public License
16
- * along with this program; if not, write to the Free Software
17
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18
- */
19
-
20
-/** \mainpage
21
- *
22
- * \section intro Introduction
23
- *
24
- * libmspack is a library which provides compressors and decompressors,
25
- * archivers and dearchivers for Microsoft compression formats.
26
- *
27
- * \section formats Formats supported
28
- *
29
- * The following file formats are supported:
30
- * - SZDD files, which use LZSS compression
31
- * - KWAJ files, which use LZSS, LZSS+Huffman or deflate compression
32
- * - .HLP (MS Help) files, which use LZSS compression
33
- * - .CAB (MS Cabinet) files, which use deflate, LZX or Quantum compression
34
- * - .CHM (HTML Help) files, which use LZX compression
35
- * - .LIT (MS EBook) files, which use LZX compression and DES encryption
36
- *
37
- * To determine the capabilities of the library, and the binary
38
- * compatibility version of any particular compressor or decompressor, use
39
- * the mspack_version() function. The UNIX library interface version is
40
- * defined as the highest-versioned library component.
41
- *
42
- * \section starting Getting started
43
- *
44
- * The macro MSPACK_SYS_SELFTEST() should be used to ensure the library can
45
- * be used. In particular, it checks if the caller is using 32-bit file I/O
46
- * when the library is compiled for 64-bit file I/O and vice versa.
47
- *
48
- * If compiled normally, the library includes basic file I/O and memory
49
- * management functionality using the standard C library. This can be
50
- * customised and replaced entirely by creating a mspack_system structure.
51
- *
52
- * A compressor or decompressor for the required format must be
53
- * instantiated before it can be used. Each construction function takes
54
- * one parameter, which is either a pointer to a custom mspack_system
55
- * structure, or NULL to use the default. The instantiation returned, if
56
- * not NULL, contains function pointers (methods) to work with the given
57
- * file format.
58
- * 
59
- * For compression:
60
- * - mspack_create_cab_compressor() creates a mscab_compressor
61
- * - mspack_create_chm_compressor() creates a mschm_compressor
62
- * - mspack_create_lit_compressor() creates a mslit_compressor
63
- * - mspack_create_hlp_compressor() creates a mshlp_compressor
64
- * - mspack_create_szdd_compressor() creates a msszdd_compressor
65
- * - mspack_create_kwaj_compressor() creates a mskwaj_compressor
66
- *
67
- * For decompression:
68
- * - mspack_create_cab_decompressor() creates a mscab_decompressor
69
- * - mspack_create_chm_decompressor() creates a mschm_decompressor
70
- * - mspack_create_lit_decompressor() creates a mslit_decompressor
71
- * - mspack_create_hlp_decompressor() creates a mshlp_decompressor
72
- * - mspack_create_szdd_decompressor() creates a msszdd_decompressor
73
- * - mspack_create_kwaj_decompressor() creates a mskwaj_decompressor
74
- *
75
- * Once finished working with a format, each kind of
76
- * compressor/decompressor has its own specific destructor:
77
- * - mspack_destroy_cab_compressor()
78
- * - mspack_destroy_cab_decompressor()
79
- * - mspack_destroy_chm_compressor()
80
- * - mspack_destroy_chm_decompressor()
81
- * - mspack_destroy_lit_compressor()
82
- * - mspack_destroy_lit_decompressor()
83
- * - mspack_destroy_hlp_compressor()
84
- * - mspack_destroy_hlp_decompressor()
85
- * - mspack_destroy_szdd_compressor()
86
- * - mspack_destroy_szdd_decompressor()
87
- * - mspack_destroy_kwaj_compressor()
88
- * - mspack_destroy_kwaj_decompressor()
89
- *
90
- * Destroying a compressor or decompressor does not destroy any objects,
91
- * structures or handles that have been created using that compressor or
92
- * decompressor. Ensure that everything created or opened is destroyed or
93
- * closed before compressor/decompressor is itself destroyed.
94
- *
95
- * \section errors Error codes
96
- *
97
- * All compressors and decompressors use the same set of error codes. Most
98
- * methods return an error code directly. For methods which do not
99
- * return error codes directly, the error code can be obtained with the
100
- * last_error() method.
101
- *
102
- * - #MSPACK_ERR_OK is used to indicate success. This error code is defined
103
- *   as zero, all other code are non-zero.
104
- * - #MSPACK_ERR_ARGS indicates that a method was called with inappropriate
105
- *   arguments.
106
- * - #MSPACK_ERR_OPEN indicates that mspack_system::open() failed.
107
- * - #MSPACK_ERR_READ indicates that mspack_system::read() failed.
108
- * - #MSPACK_ERR_WRITE indicates that mspack_system::write() failed.
109
- * - #MSPACK_ERR_SEEK indicates that mspack_system::seek() failed.
110
- * - #MSPACK_ERR_NOMEMORY indicates that mspack_system::alloc() failed.
111
- * - #MSPACK_ERR_SIGNATURE indicates that the file being read does not
112
- *   have the correct "signature". It is probably not a valid file for
113
- *   whatever format is being read.
114
- * - #MSPACK_ERR_DATAFORMAT indicates that the file being used or read
115
- *   is corrupt.
116
- * - #MSPACK_ERR_CHECKSUM indicates that a data checksum has failed.
117
- * - #MSPACK_ERR_CRUNCH indicates an error occured during compression.
118
- * - #MSPACK_ERR_DECRUNCH indicates an error occured during decompression.
119
- */
120
-
121
-#ifndef LIB_MSPACK_H
122
-#define LIB_MSPACK_H 1
123
-
124
-#ifdef __cplusplus
125
-extern "C" {
126
-#endif
127
-
128
-#include <sys/types.h>
129
-#include <unistd.h>
130
-
131
-/**
132
- * System self-test function, to ensure both library and calling program
133
- * can use one another.
134
- *
135
- * A result of MSPACK_ERR_OK means the library and caller are
136
- * compatible. Any other result indicates that the library and caller are
137
- * not compatible and should not be used. In particular, a value of
138
- * MSPACK_ERR_SEEK means the library and caller use different off_t
139
- * datatypes.
140
- *
141
- * It should be used like so:
142
- *
143
- * @code
144
- * int selftest_result;
145
- * MSPACK_SYS_SELFTEST(selftest_result);
146
- * if (selftest_result != MSPACK_ERR_OK) {
147
- *   fprintf(stderr, "incompatible with this build of libmspack\n");
148
- *   exit(0);
149
- * }
150
- * @endcode
151
- *
152
- * @param  result   an int variable to store the result of the self-test
153
- */
154
-#define MSPACK_SYS_SELFTEST(result)  do { \
155
-  (result) = mspack_sys_selftest_internal(sizeof(off_t)); \
156
-} while (0)
157
-
158
-/** Part of the MSPACK_SYS_SELFTEST() macro, must not be used directly. */
159
-extern int mspack_sys_selftest_internal(int);
160
-
161
-/**
162
- * Enquire about the binary compatibility version of a specific interface in
163
- * the library. Currently, the following interfaces are defined:
164
- *
165
- * - #MSPACK_VER_LIBRARY: the overall library
166
- * - #MSPACK_VER_SYSTEM: the mspack_system interface
167
- * - #MSPACK_VER_MSCABD: the mscab_decompressor interface
168
- * - #MSPACK_VER_MSCABC: the mscab_compressor interface
169
- * - #MSPACK_VER_MSCHMD: the mschm_decompressor interface
170
- * - #MSPACK_VER_MSCHMC: the mschm_compressor interface
171
- * - #MSPACK_VER_MSLITD: the mslit_decompressor interface
172
- * - #MSPACK_VER_MSLITC: the mslit_compressor interface
173
- * - #MSPACK_VER_MSHLPD: the mshlp_decompressor interface
174
- * - #MSPACK_VER_MSHLPC: the mshlp_compressor interface
175
- * - #MSPACK_VER_MSSZDDD: the msszdd_decompressor interface
176
- * - #MSPACK_VER_MSSZDDC: the msszdd_compressor interface
177
- * - #MSPACK_VER_MSKWAJD: the mskwaj_decompressor interface
178
- * - #MSPACK_VER_MSKWAJC: the mskwaj_compressor interface
179
- *
180
- * The result of the function should be interpreted as follows:
181
- * - -1: this interface is completely unknown to the library
182
- * - 0: this interface is known, but non-functioning
183
- * - 1: this interface has all basic functionality
184
- * - 2, 3, ...: this interface has additional functionality, clearly marked
185
- *   in the documentation as "version 2", "version 3" and so on.
186
- *
187
- * @param interface the interface to request current version of
188
- * @return the version of the requested interface
189
- */
190
-extern int mspack_version(int interface);
191
-
192
-/** Pass to mspack_version() to get the overall library version */
193
-#define MSPACK_VER_LIBRARY   (0)
194
-/** Pass to mspack_version() to get the mspack_system version */
195
-#define MSPACK_VER_SYSTEM    (1)
196
-/** Pass to mspack_version() to get the mscab_decompressor version */
197
-#define MSPACK_VER_MSCABD    (2)
198
-/** Pass to mspack_version() to get the mscab_compressor version */
199
-#define MSPACK_VER_MSCABC    (3)
200
-/** Pass to mspack_version() to get the mschm_decompressor version */
201
-#define MSPACK_VER_MSCHMD    (4)
202
-/** Pass to mspack_version() to get the mschm_compressor version */
203
-#define MSPACK_VER_MSCHMC    (5)
204
-/** Pass to mspack_version() to get the mslit_decompressor version */
205
-#define MSPACK_VER_MSLITD    (6)
206
-/** Pass to mspack_version() to get the mslit_compressor version */
207
-#define MSPACK_VER_MSLITC    (7)
208
-/** Pass to mspack_version() to get the mshlp_decompressor version */
209
-#define MSPACK_VER_MSHLPD    (8)
210
-/** Pass to mspack_version() to get the mshlp_compressor version */
211
-#define MSPACK_VER_MSHLPC    (9)
212
-/** Pass to mspack_version() to get the msszdd_decompressor version */
213
-#define MSPACK_VER_MSSZDDD   (10)
214
-/** Pass to mspack_version() to get the msszdd_compressor version */
215
-#define MSPACK_VER_MSSZDDC   (11)
216
-/** Pass to mspack_version() to get the mskwaj_decompressor version */
217
-#define MSPACK_VER_MSKWAJD   (12)
218
-/** Pass to mspack_version() to get the mskwaj_compressor version */
219
-#define MSPACK_VER_MSKWAJC   (13)
220
-
221
-/* --- file I/O abstraction ------------------------------------------------ */
222
-
223
-/**
224
- * A structure which abstracts file I/O and memory management.
225
- *
226
- * The library always uses the mspack_system structure for interaction
227
- * with the file system and to allocate, free and copy all memory. It also
228
- * uses it to send literal messages to the library user.
229
- *
230
- * When the library is compiled normally, passing NULL to a compressor or
231
- * decompressor constructor will result in a default mspack_system being
232
- * used, where all methods are implemented with the standard C library.
233
- * However, all constructors support being given a custom created
234
- * mspack_system structure, with the library user's own methods. This
235
- * allows for more abstract interaction, such as reading and writing files
236
- * directly to memory, or from a network socket or pipe.
237
- *
238
- * Implementors of an mspack_system structure should read all
239
- * documentation entries for every structure member, and write methods
240
- * which conform to those standards.
241
- */
242
-struct mspack_system {
243
-  /**
244
-   * Opens a file for reading, writing, appending or updating.
245
-   *
246
-   * @param this     a self-referential pointer to the mspack_system
247
-   *                 structure whose open() method is being called. If
248
-   *                 this pointer is required by close(), read(), write(),
249
-   *                 seek() or tell(), it should be stored in the result
250
-   *                 structure at this time.
251
-   * @param filename the file to be opened. It is passed directly from the
252
-   *                 library caller without being modified, so it is up to
253
-   *                 the caller what this parameter actually represents.
254
-   * @param mode     one of #MSPACK_SYS_OPEN_READ (open an existing file
255
-   *                 for reading), #MSPACK_SYS_OPEN_WRITE (open a new file
256
-   *                 for writing), #MSPACK_SYS_OPEN_UPDATE (open an existing
257
-   *                 file for reading/writing from the start of the file) or
258
-   *                 #MSPACK_SYS_OPEN_APPEND (open an existing file for
259
-   *                 reading/writing from the end of the file)
260
-   * @return a pointer to a mspack_file structure. This structure officially
261
-   *         contains no members, its true contents are up to the
262
-   *         mspack_system implementor. It should contain whatever is needed
263
-   *         for other mspack_system methods to operate.
264
-   * @see close(), read(), write(), seek(), tell(), message()
265
-   */
266
-  struct mspack_file * (*open)(struct mspack_system *this,
267
-			       char *filename,
268
-			       int mode);
269
-
270
-  struct mspack_file * (*dopen)(struct mspack_system *this,
271
-			       int desc,
272
-			       int mode);
273
-
274
-  /**
275
-   * Closes a previously opened file. If any memory was allocated for this
276
-   * particular file handle, it should be freed at this time.
277
-   * 
278
-   * @param file the file to close
279
-   * @see open()
280
-   */
281
-  void (*close)(struct mspack_file *file);
282
-
283
-  /**
284
-   * Reads a given number of bytes from an open file.
285
-   *
286
-   * @param file    the file to read from
287
-   * @param buffer  the location where the read bytes should be stored
288
-   * @param bytes   the number of bytes to read from the file.
289
-   * @return the number of bytes successfully read (this can be less than
290
-   *         the number requested), zero to mark the end of file, or less
291
-   *         than zero to indicate an error.
292
-   * @see open(), write()
293
-   */
294
-  int (*read)(struct mspack_file *file,
295
-	      void *buffer,
296
-	      int bytes);
297
-
298
-  /**
299
-   * Writes a given number of bytes to an open file.
300
-   *
301
-   * @param file    the file to write to
302
-   * @param buffer  the location where the written bytes should be read from
303
-   * @param bytes   the number of bytes to write to the file.
304
-   * @return the number of bytes successfully written, this can be less
305
-   *         than the number requested. Zero or less can indicate an error
306
-   *         where no bytes at all could be written. All cases where less
307
-   *         bytes were written than requested are considered by the library
308
-   *         to be an error.
309
-   * @see open(), read()
310
-   */
311
-  int (*write)(struct mspack_file *file,
312
-	       void *buffer,
313
-	       int bytes);
314
-
315
-  /**
316
-   * Seeks to a specific file offset within an open file.
317
-   *
318
-   * Sometimes the library needs to know the length of a file. It does
319
-   * this by seeking to the end of the file with seek(file, 0,
320
-   * MSPACK_SYS_SEEK_END), then calling tell(). Implementations may want
321
-   * to make a special case for this.
322
-   *
323
-   * Due to the potentially varying 32/64 bit datatype off_t on some
324
-   * architectures, the #MSPACK_SYS_SELFTEST macro MUST be used before
325
-   * using the library. If not, the error caused by the library passing an
326
-   * inappropriate stackframe to seek() is subtle and hard to trace.
327
-   *
328
-   * @param file   the file to be seeked
329
-   * @param offset an offset to seek, measured in bytes
330
-   * @param mode   one of #MSPACK_SYS_SEEK_START (the offset should be
331
-   *               measured from the start of the file), #MSPACK_SYS_SEEK_CUR
332
-   *               (the offset should be measured from the current file offset)
333
-   *               or #MSPACK_SYS_SEEK_END (the offset should be measured from
334
-   *               the end of the file)
335
-   * @return zero for success, non-zero for an error
336
-   * @see open(), tell()
337
-   */
338
-  int (*seek)(struct mspack_file *file,
339
-	      off_t offset,
340
-	      int mode);
341
-
342
-  /**
343
-   * Returns the current file position (in bytes) of the given file.
344
-   *
345
-   * @param file the file whose file position is wanted
346
-   * @return the current file position of the file
347
-   * @see open(), seek()
348
-   */
349
-  off_t (*tell)(struct mspack_file *file);
350
-  
351
-  /**
352
-   * Used to send messages from the library to the user.
353
-   *
354
-   * Occasionally, the library generates warnings or other messages in
355
-   * plain english to inform the human user. These are informational only
356
-   * and can be ignored if not wanted.
357
-   *
358
-   * @param file   may be a file handle returned from open() if this message
359
-   *               pertains to a specific open file, or NULL if not related to
360
-   *               a specific file.
361
-   * @param format a printf() style format string. It does NOT include a
362
-   *               trailing newline.
363
-   * @see open()
364
-   */
365
-  void (*message)(struct mspack_file *file,
366
-		  char *format,
367
-		  ...);
368
-
369
-  /**
370
-   * Allocates memory.
371
-   *
372
-   * @param this     a self-referential pointer to the mspack_system
373
-   *                 structure whose alloc() method is being called.
374
-   * @param bytes    the number of bytes to allocate
375
-   * @result a pointer to the requested number of bytes, or NULL if
376
-   *         not enough memory is available
377
-   * @see free()
378
-   */
379
-  void * (*alloc)(struct mspack_system *this,
380
-		  size_t bytes);
381
-  
382
-  /**
383
-   * Frees memory.
384
-   * 
385
-   * @param ptr the memory to be freed.
386
-   * @see alloc()
387
-   */
388
-  void (*free)(void *ptr);
389
-
390
-  /**
391
-   * Copies from one region of memory to another.
392
-   * 
393
-   * The regions of memory are guaranteed not to overlap, are usually less
394
-   * than 256 bytes, and may not be aligned. Please note that the source
395
-   * parameter comes before the destination parameter, unlike the standard
396
-   * C function memcpy().
397
-   *
398
-   * @param src   the region of memory to copy from
399
-   * @param dest  the region of memory to copy to
400
-   * @param bytes the size of the memory region, in bytes
401
-   */
402
-  void (*copy)(void *src,
403
-	       void *dest,
404
-	       size_t bytes);
405
-
406
-  /**
407
-   * A null pointer to mark the end of mspack_system. It must equal NULL.
408
-   *
409
-   * Should the mspack_system structure extend in the future, this NULL
410
-   * will be seen, rather than have an invalid method pointer called.
411
-   */
412
-  void *null_ptr;
413
-};
414
-
415
-/** mspack_system::open() mode: open existing file for reading. */
416
-#define MSPACK_SYS_OPEN_READ   (0)
417
-/** mspack_system::open() mode: open new file for writing */
418
-#define MSPACK_SYS_OPEN_WRITE  (1)
419
-/** mspack_system::open() mode: open existing file for writing */
420
-#define MSPACK_SYS_OPEN_UPDATE (2)
421
-/** mspack_system::open() mode: open existing file for writing */
422
-#define MSPACK_SYS_OPEN_APPEND (3)
423
-
424
-/** mspack_system::seek() mode: seek relative to start of file */
425
-#define MSPACK_SYS_SEEK_START  (0)
426
-/** mspack_system::seek() mode: seek relative to current offset */
427
-#define MSPACK_SYS_SEEK_CUR    (1)
428
-/** mspack_system::seek() mode: seek relative to end of file */
429
-#define MSPACK_SYS_SEEK_END    (2)
430
-
431
-/** 
432
- * A structure which represents an open file handle. The contents of this
433
- * structure are determined by the implementation of the
434
- * mspack_system::open() method.
435
- */
436
-struct mspack_file {
437
-  int dummy;
438
-};
439
-
440
-/* --- error codes --------------------------------------------------------- */
441
-
442
-/** Error code: no error */
443
-#define MSPACK_ERR_OK          (0)
444
-/** Error code: bad arguments to method */
445
-#define MSPACK_ERR_ARGS        (1)
446
-/** Error code: error opening file */
447
-#define MSPACK_ERR_OPEN        (2)
448
-/** Error code: error reading file */
449
-#define MSPACK_ERR_READ        (3)
450
-/** Error code: error writing file */
451
-#define MSPACK_ERR_WRITE       (4)
452
-/** Error code: seek error */
453
-#define MSPACK_ERR_SEEK        (5)
454
-/** Error code: out of memory */
455
-#define MSPACK_ERR_NOMEMORY    (6)
456
-/** Error code: bad "magic id" in file */
457
-#define MSPACK_ERR_SIGNATURE   (7)
458
-/** Error code: bad or corrupt file format */
459
-#define MSPACK_ERR_DATAFORMAT  (8)
460
-/** Error code: bad checksum or CRC */
461
-#define MSPACK_ERR_CHECKSUM    (9)
462
-/** Error code: error during compression */
463
-#define MSPACK_ERR_CRUNCH      (10)
464
-/** Error code: error during decompression */
465
-#define MSPACK_ERR_DECRUNCH    (11)
466
-
467
-/* --- functions available in library -------------------------------------- */
468
-
469
-/** Creates a new CAB compressor.
470
- * @param sys a custom mspack_system structure, or NULL to use the default
471
- * @return a #mscab_compressor or NULL
472
- */
473
-extern struct mscab_compressor *
474
-  mspack_create_cab_compressor(struct mspack_system *sys);
475
-
476
-/** Creates a new CAB decompressor.
477
- * @param sys a custom mspack_system structure, or NULL to use the default
478
- * @return a #mscab_decompressor or NULL
479
- */
480
-extern struct mscab_decompressor *
481
-  mspack_create_cab_decompressor(struct mspack_system *sys);
482
-
483
-/** Destroys an existing CAB compressor.
484
- * @param this the #mscab_compressor to destroy
485
- */
486
-extern void mspack_destroy_cab_compressor(struct mscab_compressor *this);
487
-
488
-/** Destroys an existing CAB decompressor.
489
- * @param this the #mscab_decompressor to destroy
490
- */
491
-extern void mspack_destroy_cab_decompressor(struct mscab_decompressor *this);
492
-
493
-
494
-/** Creates a new CHM compressor.
495
- * @param sys a custom mspack_system structure, or NULL to use the default
496
- * @return a #mschm_compressor or NULL
497
- */
498
-extern struct mschm_compressor *
499
-  mspack_create_chm_compressor(struct mspack_system *sys);
500
-
501
-/** Creates a new CHM decompressor.
502
- * @param sys a custom mspack_system structure, or NULL to use the default
503
- * @return a #mschm_decompressor or NULL
504
- */
505
-extern struct mschm_decompressor *
506
-  mspack_create_chm_decompressor(struct mspack_system *sys);
507
-
508
-/** Destroys an existing CHM compressor.
509
- * @param this the #mschm_compressor to destroy
510
- */
511
-extern void mspack_destroy_chm_compressor(struct mschm_compressor *this);
512
-
513
-/** Destroys an existing CHM decompressor.
514
- * @param this the #mschm_decompressor to destroy
515
- */
516
-extern void mspack_destroy_chm_decompressor(struct mschm_decompressor *this);
517
-
518
-
519
-/** Creates a new LIT compressor.
520
- * @param sys a custom mspack_system structure, or NULL to use the default
521
- * @return a #mslit_compressor or NULL
522
- */
523
-extern struct mslit_compressor *
524
-  mspack_create_lit_compressor(struct mspack_system *sys);
525
-
526
-/** Creates a new LIT decompressor.
527
- * @param sys a custom mspack_system structure, or NULL to use the default
528
- * @return a #mslit_decompressor or NULL
529
- */
530
-extern struct mslit_decompressor *
531
-  mspack_create_lit_decompressor(struct mspack_system *sys);
532
-
533
-/** Destroys an existing LIT compressor.
534
- * @param this the #mslit_compressor to destroy
535
- */
536
-extern void mspack_destroy_lit_compressor(struct mslit_compressor *this);
537
-
538
-/** Destroys an existing LIT decompressor.
539
- * @param this the #mslit_decompressor to destroy
540
- */
541
-extern void mspack_destroy_lit_decompressor(struct mslit_decompressor *this);
542
-
543
-
544
-/** Creates a new HLP compressor.
545
- * @param sys a custom mspack_system structure, or NULL to use the default
546
- * @return a #mshlp_compressor or NULL
547
- */
548
-extern struct mshlp_compressor *
549
-  mspack_create_hlp_compressor(struct mspack_system *sys);
550
-
551
-/** Creates a new HLP decompressor.
552
- * @param sys a custom mspack_system structure, or NULL to use the default
553
- * @return a #mshlp_decompressor or NULL
554
- */
555
-extern struct mshlp_decompressor *
556
-  mspack_create_hlp_decompressor(struct mspack_system *sys);
557
-
558
-/** Destroys an existing hlp compressor.
559
- * @param this the #mshlp_compressor to destroy
560
- */
561
-extern void mspack_destroy_hlp_compressor(struct mshlp_compressor *this);
562
-
563
-/** Destroys an existing hlp decompressor.
564
- * @param this the #mshlp_decompressor to destroy
565
- */
566
-extern void mspack_destroy_hlp_decompressor(struct mshlp_decompressor *this);
567
-
568
-
569
-/** Creates a new SZDD compressor.
570
- * @param sys a custom mspack_system structure, or NULL to use the default
571
- * @return a #msszdd_compressor or NULL
572
- */
573
-extern struct msszdd_compressor *
574
-  mspack_create_szdd_compressor(struct mspack_system *sys);
575
-
576
-/** Creates a new SZDD decompressor.
577
- * @param sys a custom mspack_system structure, or NULL to use the default
578
- * @return a #msszdd_decompressor or NULL
579
- */
580
-extern struct msszdd_decompressor *
581
-  mspack_create_szdd_decompressor(struct mspack_system *sys);
582
-
583
-/** Destroys an existing SZDD compressor.
584
- * @param this the #msszdd_compressor to destroy
585
- */
586
-extern void mspack_destroy_szdd_compressor(struct msszdd_compressor *this);
587
-
588
-/** Destroys an existing SZDD decompressor.
589
- * @param this the #msszdd_decompressor to destroy
590
- */
591
-extern void mspack_destroy_szdd_decompressor(struct msszdd_decompressor *this);
592
-
593
-
594
-/** Creates a new KWAJ compressor.
595
- * @param sys a custom mspack_system structure, or NULL to use the default
596
- * @return a #mskwaj_compressor or NULL
597
- */
598
-extern struct mskwaj_compressor *
599
-  mspack_create_kwaj_compressor(struct mspack_system *sys);
600
-
601
-/** Creates a new KWAJ decompressor.
602
- * @param sys a custom mspack_system structure, or NULL to use the default
603
- * @return a #mskwaj_decompressor or NULL
604
- */
605
-extern struct mskwaj_decompressor *
606
-  mspack_create_kwaj_decompressor(struct mspack_system *sys);
607
-
608
-/** Destroys an existing KWAJ compressor.
609
- * @param this the #mskwaj_compressor to destroy
610
- */
611
-extern void mspack_destroy_kwaj_compressor(struct mskwaj_compressor *this);
612
-
613
-/** Destroys an existing KWAJ decompressor.
614
- * @param this the #mskwaj_decompressor to destroy
615
- */
616
-extern void mspack_destroy_kwaj_decompressor(struct mskwaj_decompressor *this);
617
-
618
-
619
-/* --- support for .CAB (MS Cabinet) file format --------------------------- */
620
-
621
-/**
622
- * A structure which represents a single cabinet file.
623
- *
624
- * All fields are READ ONLY.
625
- *
626
- * If this cabinet is part of a merged cabinet set, the #files and #folders
627
- * fields are common to all cabinets in the set, and will be identical.
628
- *
629
- * @see mscab_decompressor::open(), mscab_decompressor::close(),
630
- *      mscab_decompressor::search()
631
- */
632
-struct mscabd_cabinet {
633
-  /**
634
-   * The next cabinet in a chained list, if this cabinet was opened with
635
-   * mscab_decompressor::search(). May be NULL to mark the end of the
636
-   * list.
637
-   */
638
-  struct mscabd_cabinet *next;
639
-
640
-  /**
641
-   * The filename of the cabinet. More correctly, the filename of the
642
-   * physical file that the cabinet resides in. This is given by the
643
-   * library user and may be in any format.
644
-   */
645
-  char *filename;
646
-
647
-  int desc;
648
-
649
-  
650
-  /** The file offset of cabinet within the physical file it resides in. */
651
-  off_t base_offset;
652
-
653
-  /** The length of the cabinet file in bytes. */
654
-  unsigned int length;
655
-
656
-  /** The previous cabinet in a cabinet set, or NULL. */
657
-  struct mscabd_cabinet *prevcab;
658
-
659
-  /** The next cabinet in a cabinet set, or NULL. */
660
-  struct mscabd_cabinet *nextcab;
661
-
662
-  /** The filename of the previous cabinet in a cabinet set, or NULL. */
663
-  char *prevname;
664
-
665
-  /** The filename of the next cabinet in a cabinet set, or NULL. */
666
-  char *nextname;
667
-
668
-  /** The name of the disk containing the previous cabinet in a cabinet
669
-   * set, or NULL.
670
-   */
671
-  char *previnfo;
672
-
673
-  /** The name of the disk containing the next cabinet in a cabinet set,
674
-   * or NULL.
675
-   */
676
-  char *nextinfo;
677
-
678
-  /** A list of all files in the cabinet or cabinet set. */
679
-  struct mscabd_file *files;
680
-
681
-  /** A list of all folders in the cabinet or cabinet set. */
682
-  struct mscabd_folder *folders;
683
-
684
-  /** 
685
-   * The set ID of the cabinet. All cabinets in the same set should have
686
-   * the same set ID.
687
-   */
688
-  unsigned short set_id;
689
-
690
-  /**
691
-   * The index number of the cabinet within the set. Numbering should
692
-   * start from 0 for the first cabinet in the set, and increment by 1 for
693
-   * each following cabinet.
694
-   */
695
-  unsigned short set_index;
696
-
697
-  /**
698
-   * The number of bytes reserved in the header area of the cabinet.
699
-   *
700
-   * If this is non-zero and flags has MSCAB_HDR_RESV set, this data can
701
-   * be read by the calling application. It is of the given length,
702
-   * located at offset (base_offset + MSCAB_HDR_RESV_OFFSET) in the
703
-   * cabinet file.
704
-   *
705
-   * @see flags
706
-   */
707
-  unsigned short header_resv;
708
-
709
-  /**
710
-   * Header flags.
711
-   *
712
-   * - MSCAB_HDR_PREVCAB indicates the cabinet is part of a cabinet set, and
713
-   *                     has a predecessor cabinet.
714
-   * - MSCAB_HDR_NEXTCAB indicates the cabinet is part of a cabinet set, and
715
-   *                     has a successor cabinet.
716
-   * - MSCAB_HDR_RESV indicates the cabinet has reserved header space.
717
-   *
718
-   * @see prevname, previnfo, nextname, nextinfo, header_resv
719
-   */
720
-  int flags;
721
-};
722
-
723
-/** Offset from start of cabinet to the reserved header data (if present). */
724
-#define MSCAB_HDR_RESV_OFFSET (0x28)
725
-
726
-/** Cabinet header flag: cabinet has a predecessor */
727
-#define MSCAB_HDR_PREVCAB (0x01)
728
-/** Cabinet header flag: cabinet has a successor */
729
-#define MSCAB_HDR_NEXTCAB (0x02)
730
-/** Cabinet header flag: cabinet has reserved header space */
731
-#define MSCAB_HDR_RESV    (0x04)
732
-
733
-/**
734
- * A structure which represents a single folder in a cabinet or cabinet set.
735
- *
736
- * All fields are READ ONLY.
737
- *
738
- * A folder is a single compressed stream of data. When uncompressed, it
739
- * holds the data of one or more files. A folder may be split across more
740
- * than one cabinet.
741
- */
742
-struct mscabd_folder {
743
-  /**
744
-   * A pointer to the next folder in this cabinet or cabinet set, or NULL
745
-   * if this is the final folder.
746
-   */
747
-  struct mscabd_folder *next;
748
-
749
-  /** 
750
-   * The compression format used by this folder.
751
-   *
752
-   * The macro MSCABD_COMP_METHOD() should be used on this field to get
753
-   * the algorithm used. The macro MSCABD_COMP_LEVEL() should be used to get
754
-   * the "compression level".
755
-   *
756
-   * @see MSCABD_COMP_METHOD(), MSCABD_COMP_LEVEL()
757
-   */
758
-  int comp_type;
759
-
760
-  /**
761
-   * The total number of data blocks used by this folder. This includes
762
-   * data blocks present in other files, if this folder spans more than
763
-   * one cabinet.
764
-   */
765
-  unsigned int num_blocks;
766
-};
767
-
768
-/**
769
- * Returns the compression method used by a folder.
770
- *
771
- * @param comp_type a mscabd_folder::comp_type value
772
- * @return one of #MSCAB_COMP_NONE, #MSCAB_COMP_MSZIP, #MSCAB_COMP_QUANTUM
773
- *         or #MSCAB_COMP_LZX
774
- */
775
-#define MSCABD_COMP_METHOD(comp_type) ((comp_type) & 0x0F)
776
-/**
777
- * Returns the compression level used by a folder.
778
- *
779
- * @param comp_type a mscabd_folder::comp_type value
780
- * @return the compression level. This is only defined by LZX and Quantum
781
- *         compression
782
- */
783
-#define MSCABD_COMP_LEVEL(comp_type) (((comp_type) >> 8) & 0x1F)
784
-
785
-/** Compression mode: no compression. */
786
-#define MSCAB_COMP_NONE       (0)
787
-/** Compression mode: MSZIP (deflate) compression. */
788
-#define MSCAB_COMP_MSZIP      (1)
789
-/** Compression mode: Quantum compression */
790
-#define MSCAB_COMP_QUANTUM    (2)
791
-/** Compression mode: LZX compression */
792
-#define MSCAB_COMP_LZX        (3)
793
-
794
-/**
795
- * A structure which represents a single file in a cabinet or cabinet set.
796
- *
797
- * All fields are READ ONLY.
798
- */
799
-struct mscabd_file {
800
-  /**
801
-   * The next file in the cabinet or cabinet set, or NULL if this is the
802
-   * final file.
803
-   */
804
-  struct mscabd_file *next;
805
-
806
-  /**
807
-   * The filename of the file.
808
-   *
809
-   * A null terminated string of up to 255 bytes in length, it may be in
810
-   * either ISO-8859-1 or UTF8 format, depending on the file attributes.
811
-   *
812
-   * @see attribs
813
-   */
814
-  char *filename;
815
-
816
-  /** The uncompressed length of the file, in bytes. */
817
-  unsigned int length;
818
-
819
-  /**
820
-   * File attributes.
821
-   *
822
-   * The following attributes are defined:
823
-   * - #MSCAB_ATTRIB_RDONLY indicates the file is write protected.
824
-   * - #MSCAB_ATTRIB_HIDDEN indicates the file is hidden.
825
-   * - #MSCAB_ATTRIB_SYSTEM indicates the file is a operating system file.
826
-   * - #MSCAB_ATTRIB_ARCH indicates the file is "archived".
827
-   * - #MSCAB_ATTRIB_EXEC indicates the file is an executable program.
828
-   * - #MSCAB_ATTRIB_UTF_NAME indicates the filename is in UTF8 format rather
829
-   *   than ISO-8859-1.
830
-   */
831
-  int attribs;
832
-
833
-  /** File's last modified time, hour field. */
834
-  char time_h;
835
-  /** File's last modified time, minute field. */
836
-  char time_m;
837
-  /** File's last modified time, second field. */
838
-  char time_s;
839
-
840
-  /** File's last modified date, day field. */
841
-  char date_d;
842
-  /** File's last modified date, month field. */
843
-  char date_m;
844
-  /** File's last modified date, year field. */
845
-  int date_y;
846
-
847
-  /** A pointer to the folder that contains this file. */
848
-  struct mscabd_folder *folder;
849
-
850
-  /** The uncompressed offset of this file in its folder. */
851
-  unsigned int offset;
852
-};
853
-
854
-/** mscabd_file::attribs attribute: file is read-only. */
855
-#define MSCAB_ATTRIB_RDONLY   (0x01)
856
-/** mscabd_file::attribs attribute: file is hidden. */
857
-#define MSCAB_ATTRIB_HIDDEN   (0x02)
858
-/** mscabd_file::attribs attribute: file is an operating system file. */
859
-#define MSCAB_ATTRIB_SYSTEM   (0x04)
860
-/** mscabd_file::attribs attribute: file is "archived". */
861
-#define MSCAB_ATTRIB_ARCH     (0x20)
862
-/** mscabd_file::attribs attribute: file is an executable program. */
863
-#define MSCAB_ATTRIB_EXEC     (0x40)
864
-/** mscabd_file::attribs attribute: filename is UTF8, not ISO-8859-1. */
865
-#define MSCAB_ATTRIB_UTF_NAME (0x80)
866
-
867
-/** mscab_decompressor::set_param() parameter: search buffer size. */
868
-#define MSCABD_PARAM_SEARCHBUF (0)
869
-/** mscab_decompressor::set_param() parameter: repair MS-ZIP streams? */
870
-#define MSCABD_PARAM_FIXMSZIP  (1)
871
-/** mscab_decompressor::set_param() parameter: size of decompression buffer */
872
-#define MSCABD_PARAM_DECOMPBUF (2)
873
-
874
-/** TODO */
875
-struct mscab_compressor {
876
-  int dummy; 
877
-};
878
-
879
-/**
880
- * A decompressor for .CAB (Microsoft Cabinet) files
881
- *
882
- * All fields are READ ONLY.
883
- *
884
- * @see mspack_create_cab_decompressor(), mspack_destroy_cab_decompressor()
885
- */
886
-struct mscab_decompressor {
887
-  /**
888
-   * Opens a cabinet file and reads its contents.
889
-   *
890
-   * If the file opened is a valid cabinet file, all headers will be read
891
-   * and a mscabd_cabinet structure will be returned, with a full list of
892
-   * folders and files.
893
-   *
894
-   * In the case of an error occuring, NULL is returned and the error code
895
-   * is available from last_error().
896
-   *
897
-   * The filename pointer should be considered "in use" until close() is
898
-   * called on the cabinet.
899
-   *
900
-   * @param  this     a self-referential pointer to the mscab_decompressor
901
-   *                  instance being called
902
-   * @param  filename the filename of the cabinet file. This is passed
903
-   *                  directly to mspack_system::open().
904
-   * @return a pointer to a mscabd_cabinet structure, or NULL on failure
905
-   * @see close(), search(), last_error()
906
-   */
907
-  struct mscabd_cabinet * (*open) (struct mscab_decompressor *this,
908
-				   char *filename);
909
-
910
-  struct mscabd_cabinet * (*dopen) (struct mscab_decompressor *this,
911
-				   int desc);
912
-  /**
913
-   * Closes a previously opened cabinet or cabinet set.
914
-   *
915
-   * This closes a cabinet, all cabinets associated with it via the
916
-   * mscabd_cabinet::next, mscabd_cabinet::prevcab and
917
-   * mscabd_cabinet::nextcab pointers, and all folders and files. All
918
-   * memory used by these entities is freed.
919
-   *
920
-   * The cabinet pointer is now invalid and cannot be used again. All
921
-   * mscabd_folder and mscabd_file pointers from that cabinet or cabinet
922
-   * set are also now invalid, and cannot be used again.
923
-   *
924
-   * If the cabinet pointer given was created using search(), it MUST be
925
-   * the cabinet pointer returned by search() and not one of the later
926
-   * cabinet pointers further along the mscabd_cabinet::next chain.
927
-
928
-   * If extra cabinets have been added using append() or prepend(), these
929
-   * will all be freed, even if the cabinet pointer given is not the first
930
-   * cabinet in the set. Do NOT close() more than one cabinet in the set.
931
-   *
932
-   * The mscabd_cabinet::filename is not freed by the library, as it is
933
-   * not allocated by the library. The caller should free this itself if
934
-   * necessary, before it is lost forever.
935
-   *
936
-   * @param  this     a self-referential pointer to the mscab_decompressor
937
-   *                  instance being called
938
-   * @param  cab      the cabinet to close
939
-   * @see open(), search(), append(), prepend()
940
-   */
941
-  void (*close)(struct mscab_decompressor *this,
942
-		struct mscabd_cabinet *cab);
943
-
944
-  /**
945
-   * Searches a regular file for embedded cabinets.
946
-   *
947
-   * This opens a normal file with the given filename and will search the
948
-   * entire file for embedded cabinet files
949
-   *
950
-   * If any cabinets are found, the equivalent of open() is called on each
951
-   * potential cabinet file at the offset it was found. All successfully
952
-   * open()ed cabinets are kept in a list.
953
-   *
954
-   * The first cabinet found will be returned directly as the result of
955
-   * this method. Any further cabinets found will be chained in a list
956
-   * using the mscabd_cabinet::next field.
957
-   *
958
-   * In the case of an error occuring anywhere other than the simulated
959
-   * open(), NULL is returned and the error code is available from
960
-   * last_error().
961
-   *
962
-   * If no error occurs, but no cabinets can be found in the file, NULL is
963
-   * returned and last_error() returns MSPACK_ERR_OK.
964
-   *
965
-   * The filename pointer should be considered in use until close() is
966
-   * called on the cabinet.
967
-   *
968
-   * close() should only be called on the result of search(), not on any
969
-   * subsequent cabinets in the mscabd_cabinet::next chain.
970
-   *
971
-   * @param  this     a self-referential pointer to the mscab_decompressor
972
-   *                  instance being called
973
-   * @param  filename the filename of the file to search for cabinets. This
974
-   *                  is passed directly to mspack_system::open().
975
-   * @return a pointer to a mscabd_cabinet structure, or NULL
976
-   * @see close(), open(), last_error()
977
-   */
978
-  struct mscabd_cabinet * (*search) (struct mscab_decompressor *this,
979
-				     char *filename);
980
-
981
-  struct mscabd_cabinet * (*dsearch) (struct mscab_decompressor *this,
982
-				     int desc);
983
-
984
-  /**
985
-   * Appends one mscabd_cabinet to another, forming or extending a cabinet
986
-   * set.
987
-   *
988
-   * This will attempt to append one cabinet to another such that
989
-   * <tt>(cab->nextcab == nextcab) && (nextcab->prevcab == cab)</tt> and
990
-   * any folders split between the two cabinets are merged.
991
-   *
992
-   * The cabinets MUST be part of a cabinet set -- a cabinet set is a
993
-   * cabinet that spans more than one physical cabinet file on disk -- and
994
-   * must be appropriately matched.
995
-   *
996
-   * It can be determined if a cabinet has further parts to load by
997
-   * examining the mscabd_cabinet::flags field:
998
-   *
999
-   * - if <tt>(flags & MSCAB_HDR_PREVCAB)</tt> is non-zero, there is a
1000
-   *   predecessor cabinet to open() and prepend(). Its MS-DOS
1001
-   *   case-insensitive filename is mscabd_cabinet::prevname
1002
-   * - if <tt>(flags & MSCAB_HDR_NEXTCAB)</tt> is non-zero, there is a
1003
-   *   successor cabinet to open() and append(). Its MS-DOS case-insensitive
1004
-   *   filename is mscabd_cabinet::nextname
1005
-   *
1006
-   * If the cabinets do not match, an error code will be returned. Neither
1007
-   * cabinet has been altered, and both should be closed seperately.
1008
-   *
1009
-   * Files and folders in a cabinet set are a single entity. All cabinets
1010
-   * in a set use the same file list, which is updated as cabinets in the
1011
-   * set are added. All pointers to mscabd_folder and mscabd_file
1012
-   * structures in either cabinet must be discarded and re-obtained after
1013
-   * merging.
1014
-   *
1015
-   * @param  this     a self-referential pointer to the mscab_decompressor
1016
-   *                  instance being called
1017
-   * @param  cab      the cabinet which will be appended to,
1018
-   *                  predecessor of nextcab
1019
-   * @param  nextcab  the cabinet which will be appended,
1020
-   *                  successor of cab
1021
-   * @return an error code, or MSPACK_ERR_OK if successful
1022
-   * @see prepend(), open(), close()
1023
-   */
1024
-  int (*append) (struct mscab_decompressor *this,
1025
-		 struct mscabd_cabinet *cab,
1026
-		 struct mscabd_cabinet *nextcab);
1027
-
1028
-  /**
1029
-   * Prepends one mscabd_cabinet to another, forming or extending a
1030
-   * cabinet set.
1031
-   *
1032
-   * This will attempt to prepend one cabinet to another, such that
1033
-   * <tt>(cab->prevcab == prevcab) && (prevcab->nextcab == cab)</tt>. In
1034
-   * all other respects, it is identical to append(). See append() for the
1035
-   * full documentation.
1036
-   *
1037
-   * @param  this     a self-referential pointer to the mscab_decompressor
1038
-   *                  instance being called
1039
-   * @param  cab      the cabinet which will be prepended to,
1040
-   *                  successor of prevcab
1041
-   * @param  prevcab  the cabinet which will be prepended,
1042
-   *                  predecessor of cab
1043
-   * @return an error code, or MSPACK_ERR_OK if successful
1044
-   * @see append(), open(), close()
1045
-   */
1046
-  int (*prepend) (struct mscab_decompressor *this,
1047
-		  struct mscabd_cabinet *cab,
1048
-		  struct mscabd_cabinet *prevcab);
1049
-
1050
-  /**
1051
-   * Extracts a file from a cabinet or cabinet set.
1052
-   *
1053
-   * This extracts a compressed file in a cabinet and writes it to the given
1054
-   * filename.
1055
-   *
1056
-   * The MS-DOS filename of the file, mscabd_file::filename, is NOT USED
1057
-   * by extract(). The caller must examine this MS-DOS filename, copy and
1058
-   * change it as necessary, create directories as necessary, and provide
1059
-   * the correct filename as a parameter, which will be passed unchanged
1060
-   * to the decompressor's mspack_system::open()
1061
-   *
1062
-   * If the file belongs to a split folder in a multi-part cabinet set,
1063
-   * and not enough parts of the cabinet set have been loaded and appended
1064
-   * or prepended, an error will be returned immediately.
1065
-   *
1066
-   * @param  this     a self-referential pointer to the mscab_decompressor
1067
-   *                  instance being called
1068
-   * @param  file     the file to be decompressed
1069
-   * @param  filename the filename of the file being written to
1070
-   * @return an error code, or MSPACK_ERR_OK if successful
1071
-   */
1072
-  int (*extract)(struct mscab_decompressor *this,
1073
-		 struct mscabd_file *file,
1074
-		 char *filename);
1075
-
1076
-  /**
1077
-   * Sets a CAB decompression engine parameter.
1078
-   *
1079
-   * The following parameters are defined:
1080
-   * - #MSCABD_PARAM_SEARCHBUF: How many bytes should be allocated as a
1081
-   *   buffer when using search()? The minimum value is 4.  The default
1082
-   *   value is 32768.
1083
-   * - #MSCABD_PARAM_FIXMSZIP: If non-zero, extract() will ignore bad
1084
-   *   checksums and recover from decompression errors in MS-ZIP
1085
-   *   compressed folders. The default value is 0 (don't recover).
1086
-   * - #MSCABD_PARAM_DECOMPBUF: How many bytes should be used as an input
1087
-   *   bit buffer by decompressors? The minimum value is 4. The default
1088
-   *   value is 4096.
1089
-   *
1090
-   * @param  this     a self-referential pointer to the mscab_decompressor
1091
-   *                  instance being called
1092
-   * @param  param    the parameter to set
1093
-   * @param  value    the value to set the parameter to
1094
-   * @return MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if there
1095
-   *         is a problem with either parameter or value.
1096
-   * @see search(), extract()
1097
-   */
1098
-  int (*set_param)(struct mscab_decompressor *this,
1099
-		   int param,
1100
-		   int value);
1101
-
1102
-  /**
1103
-   * Returns the error code set by the most recently called method.
1104
-   *
1105
-   * This is useful for open() and search(), which do not return an error
1106
-   * code directly.
1107
-   *
1108
-   * @param  this     a self-referential pointer to the mscab_decompressor
1109
-   *                  instance being called
1110
-   * @return the most recent error code
1111
-   * @see open(), search()
1112
-   */
1113
-  int (*last_error)(struct mscab_decompressor *);
1114
-};
1115
-
1116
-/* --- support for .CHM (HTMLHelp) file format ----------------------------- */
1117
-
1118
-/**
1119
- * A structure which represents a section of a CHM helpfile.
1120
- *
1121
- * All fields are READ ONLY.
1122
- *
1123
- * Not used directly, but used as a generic base type for
1124
- * mschmd_sec_uncompressed and mschmd_sec_mscompressed.
1125
- */
1126
-struct mschmd_section {
1127
-  /** A pointer to the CHM helpfile that contains this section. */
1128
-  struct mschmd_header *chm;
1129
-
1130
-  /**
1131
-   * The section ID. Either 0 for the uncompressed section
1132
-   * mschmd_sec_uncompressed, or 1 for the LZX compressed section
1133
-   * mschmd_sec_mscompressed. No other section IDs are known.
1134
-   */
1135
-  unsigned int id;
1136
-};
1137
-
1138
-/**
1139
- * A structure which represents the uncompressed section of a CHM helpfile.
1140
- * 
1141
- * All fields are READ ONLY.
1142
- */
1143
-struct mschmd_sec_uncompressed {
1144
-  /** Generic section data. */
1145
-  struct mschmd_section base;
1146
-
1147
-  /** The file offset of where this section begins in the CHM helpfile. */
1148
-  off_t offset;
1149
-};
1150
-
1151
-/**
1152
- * A structure which represents the compressed section of a CHM helpfile. 
1153
- * 
1154
- * All fields are READ ONLY.
1155
- */
1156
-struct mschmd_sec_mscompressed {
1157
-  /** Generic section data. */
1158
-  struct mschmd_section base;
1159
-
1160
-  /** A pointer to the meta-file which represents all LZX compressed data. */
1161
-  struct mschmd_file *content;
1162
-
1163
-  /** A pointer to the file which contains the LZX control data. */
1164
-  struct mschmd_file *control;
1165
-
1166
-  /** A pointer to the file which contains the LZX reset table. */
1167
-  struct mschmd_file *rtable;
1168
-};
1169
-
1170
-/**
1171
- * A structure which represents a CHM helpfile.
1172
- * 
1173
- * All fields are READ ONLY.
1174
- */
1175
-struct mschmd_header {
1176
-  /** The version of the CHM file format used in this file. */
1177
-  unsigned int version;
1178
-
1179
-  /**
1180
-   * The "timestamp" of the CHM helpfile. 
1181
-   *
1182
-   * It is the lower 32 bits of a 64-bit value representing the number of
1183
-   * centiseconds since 1601-01-01 00:00:00 UTC, plus 42. It is not useful
1184
-   * as a timestamp, but it is useful as a semi-unique ID.
1185
-   */
1186
-  unsigned int timestamp;
1187
-
1188
-      
1189
-  /**
1190
-   * The default Language and Country ID (LCID) of the user who ran the
1191
-   * HTMLHelp Compiler. This is not the language of the CHM file itself.
1192
-   */
1193
-  unsigned int language;
1194
-
1195
-  /**
1196
-   * The filename of the CHM helpfile. This is given by the library user
1197
-   * and may be in any format.
1198
-   */
1199
-  char *filename;
1200
-
1201
-  /** The length of the CHM helpfile, in bytes. */
1202
-  off_t length;
1203
-
1204
-  /** A list of all non-system files in the CHM helpfile. */
1205
-  struct mschmd_file *files;
1206
-
1207
-  /**
1208
-   * A list of all system files in the CHM helpfile.
1209
-   *
1210
-   * System files are files which begin with "::". They are meta-files
1211
-   * generated by the CHM creation process.
1212
-   */
1213
-  struct mschmd_file *sysfiles;
1214
-
1215
-  /** The section 0 (uncompressed) data in this CHM helpfile. */
1216
-  struct mschmd_sec_uncompressed sec0;
1217
-
1218
-  /** The section 1 (MSCompressed) data in this CHM helpfile. */
1219
-  struct mschmd_sec_mscompressed sec1;
1220
-
1221
-  /** The file offset of the first PMGL/PMGI directory chunk. */
1222
-  off_t dir_offset;
1223
-
1224
-  /** The number of PMGL/PMGI directory chunks in this CHM helpfile. */
1225
-  unsigned int num_chunks;
1226
-
1227
-  /** The size of each PMGL/PMGI chunk, in bytes. */
1228
-  unsigned int chunk_size;
1229
-
1230
-  /** The "density" of the quick-reference section in PMGL/PMGI chunks. */
1231
-  unsigned int density;
1232
-
1233
-  /** The depth of the index tree.
1234
-   *
1235
-   * - if 1, there are no PMGI chunks, only PMGL chunks.
1236
-   * - if 2, there is 1 PMGI chunk. All chunk indices point to PMGL chunks.
1237
-   * - if 3, the root PMGI chunk points to secondary PMGI chunks, which in
1238
-   *         turn point to PMGL chunks.
1239
-   * - and so on...
1240
-   */
1241
-  unsigned int depth;
1242
-
1243
-  /**
1244
-   * The number of the root PGMI chunk.
1245
-   *
1246
-   * If there is no index in the CHM helpfile, this will be 0xFFFFFFFF.
1247
-   */
1248
-  unsigned int index_root;
1249
-};
1250
-
1251
-/**
1252
- * A structure which represents a file stored in a CHM helpfile.
1253
- * 
1254
- * All fields are READ ONLY.
1255
- */
1256
-struct mschmd_file {
1257
-  /**
1258
-   * A pointer to the next file in the list, or NULL if this is the final
1259
-   * file.
1260
-   */
1261
-  struct mschmd_file *next;
1262
-
1263
-  /**
1264
-   * A pointer to the section that this file is located in. Indirectly,
1265
-   * it also points to the CHM helpfile the file is located in.
1266
-   */
1267
-  struct mschmd_section *section;
1268
-
1269
-  /** The offset within the section data that this file is located at. */
1270
-  off_t offset;
1271
-
1272
-  /** The length of this file, in bytes */
1273
-  off_t length;
1274
-
1275
-  /** The filename of this file -- a null terminated string in UTF8. */
1276
-  char *filename;
1277
-};
1278
-
1279
-/** TODO */
1280
-struct mschm_compressor {
1281
-  int dummy;
1282
-};
1283
-
1284
-/**
1285
- * A decompressor for .CHM (Microsoft HTMLHelp) files
1286
- *
1287
- * All fields are READ ONLY.
1288
- *
1289
- * @see mspack_create_chm_decompressor(), mspack_destroy_chm_decompressor()
1290
- */
1291
-struct mschm_decompressor {
1292
-  /**
1293
-   * Opens a CHM helpfile and reads its contents.
1294
-   *
1295
-   * If the file opened is a valid CHM helpfile, all headers will be read
1296
-   * and a mschmd_header structure will be returned, with a full list of
1297
-   * files.
1298
-   *
1299
-   * In the case of an error occuring, NULL is returned and the error code
1300
-   * is available from last_error().
1301
-   *
1302
-   * The filename pointer should be considered "in use" until close() is
1303
-   * called on the CHM helpfile.
1304
-   *
1305
-   * @param  this     a self-referential pointer to the mschm_decompressor
1306
-   *                  instance being called
1307
-   * @param  filename the filename of the CHM helpfile. This is passed
1308
-   *                  directly to mspack_system::open().
1309
-   * @return a pointer to a mschmd_header structure, or NULL on failure
1310
-   * @see close()
1311
-   */
1312
-  struct mschmd_header *(*open)(struct mschm_decompressor *this,
1313
-				char *filename);
1314
-
1315
-  /**
1316
-   * Closes a previously opened CHM helpfile.
1317
-   *
1318
-   * This closes a CHM helpfile, frees the mschmd_header and all
1319
-   * mschmd_file structures associated with it (if any). This works on
1320
-   * both helpfiles opened with open() and helpfiles opened with
1321
-   * fast_open().
1322
-   *
1323
-   * The CHM header pointer is now invalid and cannot be used again. All
1324
-   * mschmd_file pointers referencing that CHM are also now invalid, and
1325
-   * cannot be used again.
1326
-   *
1327
-   * @param  this     a self-referential pointer to the mschm_decompressor
1328
-   *                  instance being called
1329
-   * @param  chm      the CHM helpfile to close
1330
-   * @see open(), fast_open()
1331
-   */
1332
-  void (*close)(struct mschm_decompressor *this,
1333
-		struct mschmd_header *chm);
1334
-
1335
-  /**
1336
-   * Extracts a file from a CHM helpfile.
1337
-   *
1338
-   * This extracts a file from a CHM helpfile and writes it to the given
1339
-   * filename. The filename of the file, mscabd_file::filename, is not
1340
-   * used by extract(), but can be used by the caller as a guide for
1341
-   * constructing an appropriate filename.
1342
-   *
1343
-   * This method works both with files found in the mschmd_header::files
1344
-   * and mschmd_header::sysfiles list and mschmd_file structures generated
1345
-   * on the fly by fast_find().
1346
-   *
1347
-   * @param  this     a self-referential pointer to the mscab_decompressor
1348
-   *                  instance being called
1349
-   * @param  file     the file to be decompressed
1350
-   * @param  filename the filename of the file being written to
1351
-   * @return an error code, or MSPACK_ERR_OK if successful
1352
-   */
1353
-  int (*extract)(struct mschm_decompressor *this,
1354
-		 struct mschmd_file *file,
1355
-		 char *filename);
1356
-
1357
-  /**
1358
-   * Returns the error code set by the most recently called method.
1359
-   *
1360
-   * This is useful for open() and fast_open(), which do not return an
1361
-   * error code directly.
1362
-   *
1363
-   * @param  this     a self-referential pointer to the mschm_decompressor
1364
-   *                  instance being called
1365
-   * @return the most recent error code
1366
-   * @see open(), search()
1367
-   */
1368
-  int (*last_error)(struct mschm_decompressor *this);
1369
-
1370
-  /**
1371
-   * Opens a CHM helpfile quickly.
1372
-   *
1373
-   * If the file opened is a valid CHM helpfile, only essential headers
1374
-   * will be read. A mschmd_header structure will be still be returned, as
1375
-   * with open(), but the mschmd_header::files field will be NULL. No
1376
-   * files details will be automatically read.  The fast_find() method
1377
-   * must be used to obtain file details.
1378
-   *
1379
-   * In the case of an error occuring, NULL is returned and the error code
1380
-   * is available from last_error().
1381
-   *
1382
-   * The filename pointer should be considered "in use" until close() is
1383
-   * called on the CHM helpfile.
1384
-   *
1385
-   * @param  this     a self-referential pointer to the mschm_decompressor
1386
-   *                  instance being called
1387
-   * @param  filename the filename of the CHM helpfile. This is passed
1388
-   *                  directly to mspack_system::open().
1389
-   * @return a pointer to a mschmd_header structure, or NULL on failure
1390
-   * @see open(), close(), fast_find(), extract()
1391
-   */
1392
-  struct mschmd_header *(*fast_open)(struct mschm_decompressor *this,
1393
-				     char *filename);
1394
-
1395
-  /**
1396
-   * Finds file details quickly.
1397
-   *
1398
-   * Instead of reading all CHM helpfile headers and building a list of
1399
-   * files, fast_open() and fast_find() are intended for finding file
1400
-   * details only when they are needed. The CHM file format includes an
1401
-   * on-disk file index to allow this.
1402
-   *
1403
-   * Given a case-sensitive filename, fast_find() will search the on-disk
1404
-   * index for that file.
1405
-   *
1406
-   * If the file was found, the caller-provided mschmd_file structure will
1407
-   * be filled out like so:
1408
-   * - section: the correct value for the found file
1409
-   * - offset: the correct value for the found file
1410
-   * - length: the correct value for the found file
1411
-   * - all other structure elements: NULL or 0
1412
-   *
1413
-   * If the file was not found, MSPACK_ERR_OK will still be returned as the
1414
-   * result, but the caller-provided structure will be filled out like so:
1415
-   * - section: NULL
1416
-   * - offset: 0
1417
-   * - length: 0
1418
-   * - all other structure elements: NULL or 0
1419
-   *
1420
-   * This method is intended to be used in conjunction with CHM helpfiles
1421
-   * opened with fast_open(), but it also works with helpfiles opened
1422
-   * using the regular open().
1423
-   *
1424
-   * @param  this     a self-referential pointer to the mschm_decompressor
1425
-   *                  instance being called
1426
-   * @param  chm      the CHM helpfile to search for the file
1427
-   * @param  filename the filename of the file to search for
1428
-   * @param  f_ptr    a pointer to a caller-provded mschmd_file structure
1429
-   * @param  f_size   <tt>sizeof(struct mschmd_file)</tt>
1430
-   * @return MSPACK_ERR_OK, or an error code
1431
-   * @see open(), close(), fast_find(), extract()
1432
-   */
1433
-  int (*fast_find)(struct mschm_decompressor *this,
1434
-		   struct mschmd_header *chm,
1435
-		   char *filename,
1436
-		   struct mschmd_file *f_ptr,
1437
-		   int f_size);
1438
-};
1439
-
1440
-/* --- support for .LIT (EBook) file format -------------------------------- */
1441
-
1442
-/** TODO */
1443
-struct mslit_compressor {
1444
-  int dummy; 
1445
-};
1446
-
1447
-/** TODO */
1448
-struct mslit_decompressor {
1449
-  int dummy; 
1450
-};
1451
-
1452
-
1453
-/* --- support for .HLP (MS Help) file format ------------------------------ */
1454
-
1455
-/** TODO */
1456
-struct mshlp_compressor {
1457
-  int dummy; 
1458
-};
1459
-
1460
-/** TODO */
1461
-struct mshlp_decompressor {
1462
-  int dummy; 
1463
-};
1464
-
1465
-
1466
-/* --- support for SZDD file format ---------------------------------------- */
1467
-
1468
-/** TODO */
1469
-struct msszdd_compressor {
1470
-  int dummy; 
1471
-};
1472
-
1473
-/** TODO */
1474
-struct msszdd_decompressor {
1475
-  int dummy; 
1476
-};
1477
-
1478
-/* --- support for KWAJ file format ---------------------------------------- */
1479
-
1480
-/** TODO */
1481
-struct mskwaj_compressor {
1482
-  int dummy; 
1483
-};
1484
-
1485
-/** TODO */
1486
-struct mskwaj_decompressor {
1487
-  int dummy; 
1488
-};
1489
-
1490
-#ifdef __cplusplus
1491
-};
1492
-#endif
1493
-
1494
-#endif
1495 1
deleted file mode 100644
... ...
@@ -1,114 +0,0 @@
1
-/* This file is part of libmspack.
2
- * (C) 2003-2004 Stuart Caie.
3
- *
4
- * The deflate method was created by Phil Katz. MSZIP is equivalent to the
5
- * deflate method.
6
- *
7
- * libmspack is free software; you can redistribute it and/or modify it under
8
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
9
- *
10
- * For further details, see the file COPYING.LIB distributed with libmspack
11
- */
12
-
13
-#ifndef MSPACK_MSZIP_H
14
-#define MSPACK_MSZIP_H 1
15
-
16
-/* MSZIP (deflate) compression / (inflate) decompression definitions */
17
-
18
-#define MSZIP_FRAME_SIZE          (32768) /* size of LZ history window */
19
-#define MSZIP_MAX_HUFFBITS        (16)    /* maximum huffman code length */
20
-#define MSZIP_LITERAL_MAXSYMBOLS  (288)   /* literal/length huffman tree */
21
-#define MSZIP_LITERAL_TABLEBITS   (9)
22
-#define MSZIP_DISTANCE_MAXSYMBOLS (32)    /* distance huffman tree */
23
-#define MSZIP_DISTANCE_TABLEBITS  (6)
24
-
25
-/* if there are less direct lookup entries than symbols, the longer
26
- * code pointers will be <= maxsymbols. This must not happen, or we
27
- * will decode entries badly */
28
-#if (1 << MSZIP_LITERAL_TABLEBITS) < (MSZIP_LITERAL_MAXSYMBOLS * 2)
29
-# define MSZIP_LITERAL_TABLESIZE (MSZIP_LITERAL_MAXSYMBOLS * 4)
30
-#else
31
-# define MSZIP_LITERAL_TABLESIZE ((1 << MSZIP_LITERAL_TABLEBITS) + \
32
-				  (MSZIP_LITERAL_MAXSYMBOLS * 2))
33
-#endif
34
-
35
-#if (1 << MSZIP_DISTANCE_TABLEBITS) < (MSZIP_DISTANCE_MAXSYMBOLS * 2)
36
-# define MSZIP_DISTANCE_TABLESIZE (MSZIP_DISTANCE_MAXSYMBOLS * 4)
37
-#else
38
-# define MSZIP_DISTANCE_TABLESIZE ((1 << MSZIP_DISTANCE_TABLEBITS) + \
39
-				  (MSZIP_DISTANCE_MAXSYMBOLS * 2))
40
-#endif
41
-
42
-struct mszipd_stream {
43
-  struct mspack_system *sys;            /* I/O routines          */
44
-  struct mspack_file   *input;          /* input file handle     */
45
-  struct mspack_file   *output;         /* output file handle    */
46
-  unsigned int window_posn;             /* offset within window  */
47
-
48
-  /* inflate() will call this whenever the window should be emptied. */
49
-  int (*flush_window)(struct mszipd_stream *, unsigned int);
50
-
51
-  int error, repair_mode, bytes_output;
52
-
53
-  /* I/O buffering */
54
-  unsigned char *inbuf, *i_ptr, *i_end, *o_ptr, *o_end;
55
-  unsigned int bit_buffer, bits_left, inbuf_size;
56
-
57
-
58
-  /* huffman code lengths */
59
-  unsigned char  LITERAL_len[MSZIP_LITERAL_MAXSYMBOLS];
60
-  unsigned char  DISTANCE_len[MSZIP_DISTANCE_MAXSYMBOLS];
61
-
62
-  /* huffman decoding tables */
63
-  unsigned short LITERAL_table [MSZIP_LITERAL_TABLESIZE];
64
-  unsigned short DISTANCE_table[MSZIP_DISTANCE_TABLESIZE];
65
-
66
-  /* 32kb history window */
67
-  unsigned char window[MSZIP_FRAME_SIZE];
68
-};
69
-
70
-/* allocates MS-ZIP decompression stream for decoding the given stream.
71
- *
72
- * - uses system->alloc() to allocate memory
73
- *
74
- * - returns NULL if not enough memory
75
- *
76
- * - input_buffer_size is how many bytes to use as an input bitstream buffer
77
- *
78
- * - if repair_mode is non-zero, errors in decompression will be skipped
79
- *   and 'holes' left will be filled with zero bytes. This allows at least
80
- *   a partial recovery of erroneous data.
81
- */
82
-extern struct mszipd_stream *mszipd_init(struct mspack_system *system,
83
-					struct mspack_file *input,
84
-					struct mspack_file *output,
85
-					int input_buffer_size,
86
-					int repair_mode);
87
-
88
-/* decompresses, or decompresses more of, an MS-ZIP stream.
89
- *
90
- * - out_bytes of data will be decompressed and the function will return
91
- *   with an MSPACK_ERR_OK return code.
92
- *
93
- * - decompressing will stop as soon as out_bytes is reached. if the true
94
- *   amount of bytes decoded spills over that amount, they will be kept for
95
- *   a later invocation of mszipd_decompress().
96
- *
97
- * - the output bytes will be passed to the system->write() function given in
98
- *   mszipd_init(), using the output file handle given in mszipd_init(). More
99
- *   than one call may be made to system->write()
100
- *
101
- * - MS-ZIP will read input bytes as necessary using the system->read()
102
- *   function given in mszipd_init(), using the input file handle given in
103
- *   mszipd_init(). This will continue until system->read() returns 0 bytes,
104
- *   or an error.
105
- */
106
-extern int mszipd_decompress(struct mszipd_stream *zip, off_t out_bytes);
107
-
108
-/* frees all stream associated with an MS-ZIP data stream
109
- *
110
- * - calls system->free() using the system pointer given in mszipd_init()
111
- */
112
-void mszipd_free(struct mszipd_stream *zip);
113
-
114
-#endif
115 1
deleted file mode 100644
... ...
@@ -1,652 +0,0 @@
1
-/* This file is part of libmspack.
2
- * (C) 2003-2004 Stuart Caie.
3
- *
4
- * The deflate method was created by Phil Katz. MSZIP is equivalent to the
5
- * deflate method.
6
- *
7
- * libmspack is free software; you can redistribute it and/or modify it under
8
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
9
- *
10
- * For further details, see the file COPYING.LIB distributed with libmspack
11
- */
12
-
13
-/* MS-ZIP decompression implementation. */
14
-
15
-#if HAVE_CONFIG_H
16
-#include "clamav-config.h"
17
-#endif
18
-
19
-#include <mspack.h>
20
-#include <system.h>
21
-#include <mszip.h>
22
-
23
-/* match lengths for literal codes 257.. 285 */
24
-static const unsigned short lit_lengths[29] = {
25
-  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27,
26
-  31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258
27
-};
28
-
29
-/* match offsets for distance codes 0 .. 29 */
30
-static const unsigned short dist_offsets[30] = {
31
-  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385,
32
-  513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577
33
-};
34
-
35
-/* extra bits required for literal codes 257.. 285 */
36
-static const unsigned char lit_extrabits[29] = {
37
-  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2,
38
-  2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0
39
-};
40
-
41
-/* extra bits required for distance codes 0 .. 29 */
42
-static const unsigned char dist_extrabits[30] = {
43
-  0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6,
44
-  6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13
45
-};
46
-
47
-/* the order of the bit length Huffman code lengths */
48
-static const unsigned char bitlen_order[19] = {
49
-  16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15
50
-};
51
-
52
-/* ANDing with bit_mask[n] masks the lower n bits */
53
-static const unsigned short bit_mask[17] = {
54
- 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
55
- 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
56
-};
57
-
58
-#define STORE_BITS do {                                                 \
59
-  zip->i_ptr      = i_ptr;                                              \
60
-  zip->i_end      = i_end;                                              \
61
-  zip->bit_buffer = bit_buffer;                                         \
62
-  zip->bits_left  = bits_left;                                          \
63
-} while (0)
64
-
65
-#define RESTORE_BITS do {                                               \
66
-  i_ptr      = zip->i_ptr;                                              \
67
-  i_end      = zip->i_end;                                              \
68
-  bit_buffer = zip->bit_buffer;                                         \
69
-  bits_left  = zip->bits_left;                                          \
70
-} while (0)
71
-
72
-#define ENSURE_BITS(nbits) do {                                         \
73
-  while (bits_left < (nbits)) {                                         \
74
-    if (i_ptr >= i_end) {                                               \
75
-      if (zipd_read_input(zip)) return zip->error;                      \
76
-      i_ptr = zip->i_ptr;                                               \
77
-      i_end = zip->i_end;                                               \
78
-    }                                                                   \
79
-    bit_buffer |= *i_ptr++ << bits_left; bits_left  += 8;               \
80
-  }                                                                     \
81
-} while (0)
82
-
83
-#define PEEK_BITS(nbits)   (bit_buffer & ((1<<(nbits))-1))
84
-#define PEEK_BITS_T(nbits) (bit_buffer & bit_mask[(nbits)])
85
-
86
-#define REMOVE_BITS(nbits) ((bit_buffer >>= (nbits)), (bits_left -= (nbits)))
87
-
88
-#define READ_BITS(val, nbits) do {                                      \
89
-  ENSURE_BITS(nbits); (val) = PEEK_BITS(nbits); REMOVE_BITS(nbits);     \
90
-} while (0)
91
-
92
-#define READ_BITS_T(val, nbits) do {                                    \
93
-  ENSURE_BITS(nbits); (val) = PEEK_BITS_T(nbits); REMOVE_BITS(nbits);   \
94
-} while (0)
95
-
96
-static int zipd_read_input(struct mszipd_stream *zip) {
97
-  int read = zip->sys->read(zip->input, &zip->inbuf[0], (int)zip->inbuf_size);
98
-  if (read < 0) return zip->error = MSPACK_ERR_READ;
99
-  zip->i_ptr = &zip->inbuf[0];
100
-  zip->i_end = &zip->inbuf[read];
101
-
102
-  return MSPACK_ERR_OK;
103
-}
104
-
105
-/* inflate() error codes */
106
-#define INF_ERR_BLOCKTYPE   (-1)  /* unknown block type                      */
107
-#define INF_ERR_COMPLEMENT  (-2)  /* block size complement mismatch          */
108
-#define INF_ERR_FLUSH       (-3)  /* error from flush_window() callback      */
109
-#define INF_ERR_BITBUF      (-4)  /* too many bits in bit buffer             */
110
-#define INF_ERR_SYMLENS     (-5)  /* too many symbols in blocktype 2 header  */
111
-#define INF_ERR_BITLENTBL   (-6)  /* failed to build bitlens huffman table   */
112
-#define INF_ERR_LITERALTBL  (-7)  /* failed to build literals huffman table  */
113
-#define INF_ERR_DISTANCETBL (-8)  /* failed to build distance huffman table  */
114
-#define INF_ERR_BITOVERRUN  (-9)  /* bitlen RLE code goes over table size    */
115
-#define INF_ERR_BADBITLEN   (-10) /* invalid bit-length code                 */
116
-#define INF_ERR_LITCODE     (-11) /* out-of-range literal code               */
117
-#define INF_ERR_DISTCODE    (-12) /* out-of-range distance code              */
118
-#define INF_ERR_DISTANCE    (-13) /* somehow, distance is beyond 32k         */
119
-#define INF_ERR_HUFFSYM     (-14) /* out of bits decoding huffman symbol     */
120
-
121
-/* make_decode_table(nsyms, nbits, length[], table[])
122
- *
123
- * This function was coded by David Tritscher. It builds a fast huffman
124
- * decoding table out of just a canonical huffman code lengths table.
125
- *
126
- * NOTE: this is NOT identical to the make_decode_table() in lzxd.c. This
127
- * one reverses the quick-lookup bit pattern. Bits are read MSB to LSB in LZX,
128
- * but LSB to MSB in MSZIP.
129
- *
130
- * nsyms  = total number of symbols in this huffman tree.
131
- * nbits  = any symbols with a code length of nbits or less can be decoded
132
- *          in one lookup of the table.
133
- * length = A table to get code lengths from [0 to nsyms-1]
134
- * table  = The table to fill up with decoded symbols and pointers.
135
- *
136
- * Returns 0 for OK or 1 for error
137
- */
138
-static int make_decode_table(unsigned int nsyms, unsigned int nbits,
139
-			     unsigned char *length, unsigned short *table)
140
-{
141
-  register unsigned int leaf, reverse, fill;
142
-  register unsigned short sym, next_sym;
143
-  register unsigned char bit_num;
144
-  unsigned int pos         = 0; /* the current position in the decode table */
145
-  unsigned int table_mask  = 1 << nbits;
146
-  unsigned int bit_mask    = table_mask >> 1; /* don't do 0 length codes */
147
-
148
-  /* fill entries for codes short enough for a direct mapping */
149
-  for (bit_num = 1; bit_num <= nbits; bit_num++) {
150
-    for (sym = 0; sym < nsyms; sym++) {
151
-      if (length[sym] != bit_num) continue;
152
-
153
-      /* reverse the significant bits */
154
-      fill = length[sym]; reverse = pos >> (nbits - fill); leaf = 0;
155
-      do {leaf <<= 1; leaf |= reverse & 1; reverse >>= 1;} while (--fill);
156
-
157
-      if((pos += bit_mask) > table_mask) return 1; /* table overrun */
158
-
159
-      /* fill all possible lookups of this symbol with the symbol itself */
160
-      fill = bit_mask; next_sym = 1 << bit_num;
161
-      do { table[leaf] = sym; leaf += next_sym; } while (--fill);
162
-    }
163
-    bit_mask >>= 1;
164
-  }
165
-
166
-  /* exit with success if table is now complete */
167
-  if (pos == table_mask) return 0;
168
-
169
-  /* mark all remaining table entries as unused */
170
-  for (sym = pos; sym < table_mask; sym++) {
171
-    reverse = sym; leaf = 0; fill = nbits;
172
-    do { leaf <<= 1; leaf |= reverse & 1; reverse >>= 1; } while (--fill);
173
-    table[leaf] = 0xFFFF;
174
-  }
175
-
176
-  /* where should the longer codes be allocated from? */
177
-  next_sym = ((table_mask >> 1) < nsyms) ? nsyms : (table_mask >> 1);
178
-
179
-  /* give ourselves room for codes to grow by up to 16 more bits.
180
-   * codes now start at bit nbits+16 and end at (nbits+16-codelength) */
181
-  pos <<= 16;
182
-  table_mask <<= 16;
183
-  bit_mask = 1 << 15;
184
-
185
-  for (bit_num = nbits+1; bit_num <= MSZIP_MAX_HUFFBITS; bit_num++) {
186
-    for (sym = 0; sym < nsyms; sym++) {
187
-      if (length[sym] != bit_num) continue;
188
-
189
-      /* leaf = the first nbits of the code, reversed */
190
-      reverse = pos >> 16; leaf = 0; fill = nbits;
191
-      do {leaf <<= 1; leaf |= reverse & 1; reverse >>= 1;} while (--fill);
192
-
193
-      for (fill = 0; fill < (bit_num - nbits); fill++) {
194
-	/* if this path hasn't been taken yet, 'allocate' two entries */
195
-	if (table[leaf] == 0xFFFF) {
196
-	  table[(next_sym << 1)     ] = 0xFFFF;
197
-	  table[(next_sym << 1) + 1 ] = 0xFFFF;
198
-	  table[leaf] = next_sym++;
199
-	}
200
-	/* follow the path and select either left or right for next bit */
201
-	leaf = (table[leaf] << 1) | ((pos >> (15 - fill)) & 1);
202
-      }
203
-      table[leaf] = sym;
204
-
205
-      if ((pos += bit_mask) > table_mask) return 1; /* table overflow */
206
-    }
207
-    bit_mask >>= 1;
208
-  }
209
-
210
-  /* full table? */
211
-  return (pos != table_mask) ? 1 : 0;
212
-}
213
-
214
-/* READ_HUFFSYM(tablename, var) decodes one huffman symbol from the
215
- * bitstream using the stated table and puts it in var.
216
- */
217
-#define READ_HUFFSYM(tbl, var) do {                                     \
218
-  /* huffman symbols can be up to 16 bits long */                       \
219
-  ENSURE_BITS(MSZIP_MAX_HUFFBITS);                                      \
220
-  /* immediate table lookup of [tablebits] bits of the code */          \
221
-  sym = zip->tbl##_table[PEEK_BITS(MSZIP_##tbl##_TABLEBITS)];		\
222
-  /* is the symbol is longer than [tablebits] bits? (i=node index) */   \
223
-  if (sym >= MSZIP_##tbl##_MAXSYMBOLS) {                                \
224
-    /* decode remaining bits by tree traversal */                       \
225
-    i = MSZIP_##tbl##_TABLEBITS - 1;					\
226
-    do {                                                                \
227
-      /* check next bit. error if we run out of bits before decode */	\
228
-      if (i++ > MSZIP_MAX_HUFFBITS) {					\
229
-        D(("out of bits in huffman decode"))                            \
230
-        return INF_ERR_HUFFSYM;                                         \
231
-      }                                                                 \
232
-      /* double node index and add 0 (left branch) or 1 (right) */	\
233
-      sym = zip->tbl##_table[(sym << 1) | ((bit_buffer >> i) & 1)];	\
234
-      /* while we are still in node indicies, not decoded symbols */    \
235
-    } while (sym >= MSZIP_##tbl##_MAXSYMBOLS);                          \
236
-  }                                                                     \
237
-  /* result */                                                          \
238
-  (var) = sym;                                                          \
239
-  /* look up the code length of that symbol and discard those bits */   \
240
-  i = zip->tbl##_len[sym];                                              \
241
-  REMOVE_BITS(i);                                                       \
242
-} while (0)
243
-
244
-static int zip_read_lens(struct mszipd_stream *zip) {
245
-  /* for the bit buffer and huffman decoding */
246
-  register unsigned int bit_buffer;
247
-  register int bits_left;
248
-  unsigned char *i_ptr, *i_end;
249
-
250
-  /* bitlen Huffman codes -- immediate lookup, 7 bit max code length */
251
-  unsigned short bl_table[(1 << 7)];
252
-  unsigned char bl_len[19];
253
-
254
-  unsigned char lens[MSZIP_LITERAL_MAXSYMBOLS + MSZIP_DISTANCE_MAXSYMBOLS];
255
-  unsigned int lit_codes, dist_codes, code, last_code=0, bitlen_codes, i, run;
256
-
257
-  RESTORE_BITS;
258
-
259
-  /* read the number of codes */
260
-  READ_BITS(lit_codes,    5); lit_codes    += 257;
261
-  READ_BITS(dist_codes,   5); dist_codes   += 1;
262
-  READ_BITS(bitlen_codes, 4); bitlen_codes += 4;
263
-  if (lit_codes  > MSZIP_LITERAL_MAXSYMBOLS)  return INF_ERR_SYMLENS;
264
-  if (dist_codes > MSZIP_DISTANCE_MAXSYMBOLS) return INF_ERR_SYMLENS;
265
-
266
-  /* read in the bit lengths in their unusual order */
267
-  for (i = 0; i < bitlen_codes; i++) READ_BITS(bl_len[bitlen_order[i]], 3);
268
-  while (i < 19) bl_len[bitlen_order[i++]] = 0;
269
-
270
-  /* create decoding table with an immediate lookup */
271
-  if (make_decode_table(19, 7, &bl_len[0], &bl_table[0])) {
272
-    return INF_ERR_BITLENTBL;
273
-  }
274
-
275
-  /* read literal / distance code lengths */
276
-  for (i = 0; i < (lit_codes + dist_codes); i++) {
277
-    /* single-level huffman lookup */
278
-    ENSURE_BITS(7);
279
-    code = bl_table[PEEK_BITS(7)];
280
-    REMOVE_BITS(bl_len[code]);
281
-
282
-    if (code < 16) lens[i] = last_code = code;
283
-    else {
284
-      switch (code) {
285
-      case 16: READ_BITS(run, 2); run += 3;  code = last_code; break;
286
-      case 17: READ_BITS(run, 3); run += 3;  code = 0;         break;
287
-      case 18: READ_BITS(run, 7); run += 11; code = 0;         break;
288
-      default: D(("bad code!: %u", code)) return INF_ERR_BADBITLEN;
289
-      }
290
-      if ((i + run) > (lit_codes + dist_codes)) return INF_ERR_BITOVERRUN;
291
-      while (run--) lens[i++] = code;
292
-      i--;
293
-    }
294
-  }
295
-
296
-  /* copy LITERAL code lengths and clear any remaining */
297
-  i = lit_codes;
298
-  zip->sys->copy(&lens[0], &zip->LITERAL_len[0], i);
299
-  while (i < MSZIP_LITERAL_MAXSYMBOLS) zip->LITERAL_len[i++] = 0;
300
-
301
-  i = dist_codes;
302
-  zip->sys->copy(&lens[lit_codes], &zip->DISTANCE_len[0], i);
303
-  while (i < MSZIP_DISTANCE_MAXSYMBOLS) zip->DISTANCE_len[i++] = 0;
304
-
305
-  STORE_BITS;
306
-  return 0;
307
-}
308
-
309
-/* a clean implementation of RFC 1951 / inflate */
310
-static int inflate(struct mszipd_stream *zip) {
311
-  unsigned int last_block, block_type, distance, length, this_run, i;
312
-
313
-  /* for the bit buffer and huffman decoding */
314
-  register unsigned int bit_buffer;
315
-  register int bits_left;
316
-  register unsigned short sym;
317
-  unsigned char *i_ptr, *i_end;
318
-
319
-  RESTORE_BITS;
320
-
321
-  do {
322
-    /* read in last block bit */
323
-    READ_BITS(last_block, 1);
324
-
325
-    /* read in block type */
326
-    READ_BITS(block_type, 2);
327
-    D(("block_type=%u last_block=%u", block_type, last_block))
328
-
329
-    if (block_type == 0) {
330
-      /* uncompressed block */
331
-      unsigned char lens_buf[4];
332
-
333
-      /* go to byte boundary */
334
-      i = bits_left & 7; REMOVE_BITS(i);
335
-
336
-      /* read 4 bytes of data, emptying the bit-buffer if necessary */
337
-      for (i = 0; (bits_left >= 8); i++) {
338
-	if (i == 4) return INF_ERR_BITBUF;
339
-	lens_buf[i] = PEEK_BITS(8);
340
-	REMOVE_BITS(8);
341
-      }
342
-      if (bits_left != 0) return INF_ERR_BITBUF;
343
-      while (i < 4) {
344
-	if (i_ptr >= i_end) {
345
-	  if (zipd_read_input(zip)) return zip->error;
346
-	  i_ptr = zip->i_ptr;
347
-	  i_end = zip->i_end;
348
-	}
349
-	lens_buf[i++] = *i_ptr++;
350
-      }
351
-
352
-      /* get the length and its complement */
353
-      length = lens_buf[0] | (lens_buf[1] << 8);
354
-      i      = lens_buf[2] | (lens_buf[3] << 8);
355
-      if (length != (~i & 0xFFFF)) return INF_ERR_COMPLEMENT;
356
-
357
-      /* read and copy the uncompressed data into the window */
358
-      while (length > 0) {
359
-	if (i_ptr >= i_end) {
360
-	  if (zipd_read_input(zip)) return zip->error;
361
-	  i_ptr = zip->i_ptr;
362
-	  i_end = zip->i_end;
363
-	}
364
-
365
-	this_run = length;
366
-	if (this_run > (unsigned int)(i_end - i_ptr)) this_run = i_end - i_ptr;
367
-	if (this_run > (MSZIP_FRAME_SIZE - zip->window_posn))
368
-	  this_run = MSZIP_FRAME_SIZE - zip->window_posn;
369
-
370
-	zip->sys->copy(i_ptr, &zip->window[zip->window_posn], this_run);
371
-	zip->window_posn += this_run;
372
-	i_ptr    += this_run;
373
-	length   -= this_run;
374
-
375
-	if (zip->window_posn == MSZIP_FRAME_SIZE) {
376
-	  if (zip->flush_window(zip, MSZIP_FRAME_SIZE)) return INF_ERR_FLUSH;
377
-	  zip->window_posn = 0;
378
-	}
379
-      }
380
-    }
381
-    else if ((block_type == 1) || (block_type == 2)) {
382
-      /* Huffman-compressed LZ77 block */
383
-      unsigned int window_posn, match_posn, code;
384
-
385
-      if (block_type == 1) {
386
-	/* block with fixed Huffman codes */
387
-	i = 0;
388
-	while (i < 144) zip->LITERAL_len[i++] = 8;
389
-	while (i < 256) zip->LITERAL_len[i++] = 9;
390
-	while (i < 280) zip->LITERAL_len[i++] = 7;
391
-	while (i < 288) zip->LITERAL_len[i++] = 8;
392
-	for (i = 0; i < 32; i++) zip->DISTANCE_len[i] = 5;
393
-      }
394
-      else {
395
-	/* block with dynamic Huffman codes */
396
-	STORE_BITS;
397
-	if ((i = zip_read_lens(zip))) return i;
398
-	RESTORE_BITS;
399
-      }
400
-
401
-      /* now huffman lengths are read for either kind of block, 
402
-       * create huffman decoding tables */
403
-      if (make_decode_table(MSZIP_LITERAL_MAXSYMBOLS, MSZIP_LITERAL_TABLEBITS,
404
-			    &zip->LITERAL_len[0], &zip->LITERAL_table[0]))
405
-      {
406
-	return INF_ERR_LITERALTBL;
407
-      }
408
-
409
-      if (make_decode_table(MSZIP_DISTANCE_MAXSYMBOLS,MSZIP_DISTANCE_TABLEBITS,
410
-			    &zip->DISTANCE_len[0], &zip->DISTANCE_table[0]))
411
-      {
412
-	return INF_ERR_DISTANCETBL;
413
-      }
414
-
415
-      /* decode forever until end of block code */
416
-      window_posn = zip->window_posn;
417
-      while (1) {
418
-	READ_HUFFSYM(LITERAL, code);
419
-	if (code < 256) {
420
-	  zip->window[window_posn++] = (unsigned char) code;
421
-	  if (window_posn == MSZIP_FRAME_SIZE) {
422
-	    if (zip->flush_window(zip, MSZIP_FRAME_SIZE)) return INF_ERR_FLUSH;
423
-	    window_posn = 0;
424
-	  }
425
-	}
426
-	else if (code == 256) {
427
-	  /* END OF BLOCK CODE: loop break point */
428
-	  break;
429
-	}
430
-	else {
431
-	  code -= 257;
432
-	  if (code > 29) return INF_ERR_LITCODE;
433
-	  READ_BITS_T(length, lit_extrabits[code]);
434
-	  length += lit_lengths[code];
435
-
436
-	  READ_HUFFSYM(DISTANCE, code);
437
-	  if (code > 30) return INF_ERR_DISTCODE;
438
-	  READ_BITS_T(distance, dist_extrabits[code]);
439
-	  distance += dist_offsets[code];
440
-
441
-	  /* match position is window position minus distance. If distance
442
-	   * is more than window position numerically, it must 'wrap
443
-	   * around' the frame size. */ 
444
-	  match_posn = ((distance > window_posn) ? MSZIP_FRAME_SIZE : 0)
445
-	    + window_posn - distance;
446
-
447
-	  /* copy match */
448
-	  if (length < 12) {
449
-	    /* short match, use slower loop but no loop setup code */
450
-	    while (length--) {
451
-	      zip->window[window_posn++] = zip->window[match_posn++];
452
-	      match_posn &= MSZIP_FRAME_SIZE - 1;
453
-
454
-	      if (window_posn == MSZIP_FRAME_SIZE) {
455
-		if (zip->flush_window(zip, MSZIP_FRAME_SIZE))
456
-		  return INF_ERR_FLUSH;
457
-		window_posn = 0;
458
-	      }
459
-	    }
460
-	  }
461
-	  else {
462
-	    /* longer match, use faster loop but with setup expense */
463
-	    unsigned char *runsrc, *rundest;
464
-	    do {
465
-	      this_run = length;
466
-	      if ((match_posn + this_run) > MSZIP_FRAME_SIZE)
467
-		this_run = MSZIP_FRAME_SIZE - match_posn;
468
-	      if ((window_posn + this_run) > MSZIP_FRAME_SIZE)
469
-		this_run = MSZIP_FRAME_SIZE - window_posn;
470
-
471
-	      rundest = &zip->window[window_posn]; window_posn += this_run;
472
-	      runsrc  = &zip->window[match_posn];  match_posn  += this_run;
473
-	      length -= this_run;
474
-	      while (this_run--) *rundest++ = *runsrc++;
475
-
476
-	      /* flush if necessary */
477
-	      if (window_posn == MSZIP_FRAME_SIZE) {
478
-		if (zip->flush_window(zip, MSZIP_FRAME_SIZE))
479
-		  return INF_ERR_FLUSH;
480
-		window_posn = 0;
481
-	      }
482
-	      if (match_posn == MSZIP_FRAME_SIZE) match_posn = 0;
483
-	    } while (length > 0);
484
-	  }
485
-
486
-	} /* else (code >= 257) */
487
-
488
-      } /* while (forever) -- break point at 'code == 256' */
489
-      zip->window_posn = window_posn;
490
-    }
491
-    else {
492
-      /* block_type == 3 -- bad block type */
493
-      return INF_ERR_BLOCKTYPE;
494
-    }
495
-  } while (!last_block);
496
-
497
-  /* flush the remaining data */
498
-  if (zip->window_posn) {
499
-    if (zip->flush_window(zip, zip->window_posn)) return INF_ERR_FLUSH;
500
-  }
501
-  STORE_BITS;
502
-
503
-  /* return success */
504
-  return 0;
505
-}
506
-
507
-/* inflate() calls this whenever the window should be flushed. As
508
- * MSZIP only expands to the size of the window, the implementation used
509
- * simply keeps track of the amount of data flushed, and if more than 32k
510
- * is flushed, an error is raised.
511
- */  
512
-static int mszipd_flush_window(struct mszipd_stream *zip,
513
-			       unsigned int data_flushed)
514
-{
515
-  zip->bytes_output += data_flushed;
516
-  if (zip->bytes_output > MSZIP_FRAME_SIZE) {
517
-    D(("overflow: %u bytes flushed, total is now %u",
518
-       data_flushed, zip->bytes_output))
519
-    return 1;
520
-  }
521
-  return 0;
522
-}
523
-
524
-struct mszipd_stream *mszipd_init(struct mspack_system *system,
525
-				  struct mspack_file *input,
526
-				  struct mspack_file *output,
527
-				  int input_buffer_size,
528
-				  int repair_mode)
529
-{
530
-  struct mszipd_stream *zip;
531
-
532
-  if (!system) return NULL;
533
-
534
-  input_buffer_size = (input_buffer_size + 1) & -2;
535
-  if (!input_buffer_size) return NULL;
536
-
537
-  /* allocate decompression state */
538
-  if (!(zip = system->alloc(system, sizeof(struct mszipd_stream)))) {
539
-    return NULL;
540
-  }
541
-
542
-  /* allocate input buffer */
543
-  zip->inbuf  = system->alloc(system, (size_t) input_buffer_size);
544
-  if (!zip->inbuf) {
545
-    system->free(zip);
546
-    return NULL;
547
-  }
548
-
549
-  /* initialise decompression state */
550
-  zip->sys             = system;
551
-  zip->input           = input;
552
-  zip->output          = output;
553
-  zip->inbuf_size      = input_buffer_size;
554
-  zip->error           = MSPACK_ERR_OK;
555
-  zip->repair_mode     = repair_mode;
556
-  zip->flush_window    = &mszipd_flush_window;
557
-
558
-  zip->i_ptr = zip->i_end = &zip->inbuf[0];
559
-  zip->o_ptr = zip->o_end = NULL;
560
-  zip->bit_buffer = 0; zip->bits_left = 0;
561
-  return zip;
562
-}
563
-
564
-int mszipd_decompress(struct mszipd_stream *zip, off_t out_bytes) {
565
-  /* for the bit buffer */
566
-  register unsigned int bit_buffer;
567
-  register int bits_left;
568
-  unsigned char *i_ptr, *i_end;
569
-
570
-  int i, state, error;
571
-
572
-  /* easy answers */
573
-  if (!zip || (out_bytes < 0)) return MSPACK_ERR_ARGS;
574
-  if (zip->error) return zip->error;
575
-
576
-  /* flush out any stored-up bytes before we begin */
577
-  i = zip->o_end - zip->o_ptr;
578
-  if ((off_t) i > out_bytes) i = (int) out_bytes;
579
-  if (i) {
580
-    if (zip->sys->write(zip->output, zip->o_ptr, i) != i) {
581
-      return zip->error = MSPACK_ERR_WRITE;
582
-    }
583
-    zip->o_ptr  += i;
584
-    out_bytes   -= i;
585
-  }
586
-  if (out_bytes == 0) return MSPACK_ERR_OK;
587
-
588
-
589
-  while (out_bytes > 0) {
590
-    /* unpack another block */
591
-    RESTORE_BITS;
592
-
593
-    /* skip to next read 'CK' header */
594
-    i = bits_left & 7; REMOVE_BITS(i); /* align to bytestream */
595
-    state = 0;
596
-    do {
597
-      READ_BITS(i, 8);
598
-      if (i == 'C') state = 1;
599
-      else if ((state == 1) && (i == 'K')) state = 2;
600
-      else state = 0;
601
-    } while (state != 2);
602
-
603
-    /* inflate a block, repair and realign if necessary */
604
-    zip->window_posn = 0;
605
-    zip->bytes_output = 0;
606
-    STORE_BITS;
607
-    if ((error = inflate(zip))) {
608
-      D(("inflate error %d", i))
609
-      if (zip->repair_mode) {
610
-	zip->sys->message(NULL, "MSZIP error, %u bytes of data lost.",
611
-			  MSZIP_FRAME_SIZE - zip->bytes_output);
612
-	for (i = zip->bytes_output; i < MSZIP_FRAME_SIZE; i++) {
613
-	  zip->window[i] = '\0';
614
-	}
615
-	zip->bytes_output = MSZIP_FRAME_SIZE;
616
-      }
617
-      else {
618
-	return zip->error = (error > 0) ? error : MSPACK_ERR_DECRUNCH;
619
-      }
620
-    }
621
-    zip->o_ptr = &zip->window[0];
622
-    zip->o_end = &zip->o_ptr[zip->bytes_output];
623
-
624
-    /* write a frame */
625
-    i = (out_bytes < (off_t)zip->bytes_output) ?
626
-      (int)out_bytes : zip->bytes_output;
627
-    if (zip->sys->write(zip->output, zip->o_ptr, i) != i) {
628
-      return zip->error = MSPACK_ERR_WRITE;
629
-    }
630
-
631
-    /* mspack errors (i.e. read errors) are fatal and can't be recovered */
632
-    if ((error > 0) && zip->repair_mode) return error;
633
-
634
-    zip->o_ptr  += i;
635
-    out_bytes   -= i;
636
-  }
637
-
638
-  if (out_bytes) {
639
-    D(("bytes left to output"))
640
-    return zip->error = MSPACK_ERR_DECRUNCH;
641
-  }
642
-  return MSPACK_ERR_OK;
643
-}
644
-
645
-void mszipd_free(struct mszipd_stream *zip) {
646
-  struct mspack_system *sys;
647
-  if (zip) {
648
-    sys = zip->sys;
649
-    sys->free(zip->inbuf);
650
-    sys->free(zip);
651
-  }
652
-}
653 1
deleted file mode 100644
... ...
@@ -1,120 +0,0 @@
1
-/* This file is part of libmspack.
2
- * (C) 2003-2004 Stuart Caie.
3
- *
4
- * The Quantum method was created by David Stafford, adapted by Microsoft
5
- * Corporation.
6
- *
7
- * libmspack is free software; you can redistribute it and/or modify it under
8
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
9
- *
10
- * For further details, see the file COPYING.LIB distributed with libmspack
11
- */
12
-
13
-#ifndef MSPACK_QTM_H
14
-#define MSPACK_QTM_H 1
15
-
16
-/* Quantum compression / decompression definitions */
17
-
18
-#define QTM_FRAME_SIZE (32768)
19
-
20
-struct qtmd_modelsym {
21
-  unsigned short sym, cumfreq;
22
-};
23
-
24
-struct qtmd_model {
25
-  int shiftsleft, entries;
26
-  struct qtmd_modelsym *syms;
27
-};
28
-
29
-struct qtmd_stream {
30
-  struct mspack_system *sys;      /* I/O routines                            */
31
-  struct mspack_file   *input;    /* input file handle                       */
32
-  struct mspack_file   *output;   /* output file handle                      */
33
-
34
-  unsigned char *window;          /* decoding window                         */
35
-  unsigned int window_size;       /* window size                             */
36
-  unsigned int window_posn;       /* decompression offset within window      */
37
-  unsigned int frame_start;       /* start of current frame within window    */
38
-
39
-  unsigned short H, L, C;         /* high/low/current: arith coding state    */
40
-  unsigned char header_read;      /* have we started decoding a new frame?   */
41
-
42
-  int error;
43
-
44
-  /* I/O buffers */
45
-  unsigned char *inbuf, *i_ptr, *i_end, *o_ptr, *o_end;
46
-  unsigned int  bit_buffer, inbuf_size;
47
-  unsigned char bits_left;
48
-
49
-  /* four literal models, each representing 64 symbols
50
-   * model0 for literals from   0 to  63 (selector = 0)
51
-   * model1 for literals from  64 to 127 (selector = 1)
52
-   * model2 for literals from 128 to 191 (selector = 2)
53
-   * model3 for literals from 129 to 255 (selector = 3) */
54
-  struct qtmd_model model0, model1, model2, model3;
55
-
56
-  /* three match models.
57
-   * model4 for match with fixed length of 3 bytes
58
-   * model5 for match with fixed length of 4 bytes
59
-   * model6 for variable length match, encoded with model6len model */
60
-  struct qtmd_model model4, model5, model6, model6len;
61
-
62
-  /* selector model. 0-6 to say literal (0,1,2,3) or match (4,5,6) */
63
-  struct qtmd_model model7;
64
-
65
-  /* symbol arrays for all models */
66
-  struct qtmd_modelsym m0sym[64 + 1];
67
-  struct qtmd_modelsym m1sym[64 + 1];
68
-  struct qtmd_modelsym m2sym[64 + 1];
69
-  struct qtmd_modelsym m3sym[64 + 1];
70
-  struct qtmd_modelsym m4sym[24 + 1];
71
-  struct qtmd_modelsym m5sym[36 + 1];
72
-  struct qtmd_modelsym m6sym[42 + 1], m6lsym[27 + 1];
73
-  struct qtmd_modelsym m7sym[7 + 1];
74
-};
75
-
76
-/* allocates Quantum decompression state for decoding the given stream.
77
- *
78
- * - returns NULL if window_bits is outwith the range 10 to 21 (inclusive).
79
- *
80
- * - uses system->alloc() to allocate memory
81
- *
82
- * - returns NULL if not enough memory
83
- *
84
- * - window_bits is the size of the Quantum window, from 1Kb (10) to 2Mb (21).
85
- *
86
- * - input_buffer_size is the number of bytes to use to store bitstream data.
87
- */
88
-extern struct qtmd_stream *qtmd_init(struct mspack_system *system,
89
-				     struct mspack_file *input,
90
-				     struct mspack_file *output,
91
-				     int window_bits,
92
-				     int input_buffer_size);
93
-
94
-/* decompresses, or decompresses more of, a Quantum stream.
95
- *
96
- * - out_bytes of data will be decompressed and the function will return
97
- *   with an MSPACK_ERR_OK return code.
98
- *
99
- * - decompressing will stop as soon as out_bytes is reached. if the true
100
- *   amount of bytes decoded spills over that amount, they will be kept for
101
- *   a later invocation of qtmd_decompress().
102
- *
103
- * - the output bytes will be passed to the system->write() function given in
104
- *   qtmd_init(), using the output file handle given in qtmd_init(). More
105
- *   than one call may be made to system->write()
106
- *
107
- * - Quantum will read input bytes as necessary using the system->read()
108
- *   function given in qtmd_init(), using the input file handle given in
109
- *   qtmd_init(). This will continue until system->read() returns 0 bytes,
110
- *   or an error.
111
- */
112
-extern int qtmd_decompress(struct qtmd_stream *qtm, off_t out_bytes);
113
-
114
-/* frees all state associated with a Quantum data stream
115
- *
116
- * - calls system->free() using the system pointer given in qtmd_init()
117
- */
118
-void qtmd_free(struct qtmd_stream *qtm);
119
-
120
-#endif
121 1
deleted file mode 100644
... ...
@@ -1,488 +0,0 @@
1
-/* This file is part of libmspack.
2
- * (C) 2003-2004 Stuart Caie.
3
- *
4
- * The Quantum method was created by David Stafford, adapted by Microsoft
5
- * Corporation.
6
- *
7
- * This decompressor is based on an implementation by Matthew Russotto, used
8
- * with permission.
9
- *
10
- * libmspack is free software; you can redistribute it and/or modify it under
11
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
12
- *
13
- * For further details, see the file COPYING.LIB distributed with libmspack
14
- */
15
-
16
-/* Quantum decompression implementation */
17
-
18
-/* This decompressor was researched and implemented by Matthew Russotto. It
19
- * has since been tidied up by Stuart Caie. More information can be found at
20
- * http://www.speakeasy.org/~russotto/quantumcomp.html
21
- */
22
-
23
-#if HAVE_CONFIG_H
24
-#include "clamav-config.h"
25
-#endif
26
-
27
-#include <mspack.h>
28
-#include <system.h>
29
-#include <qtm.h>
30
-
31
-/* Quantum decompressor bitstream reading macros
32
- *
33
- * STORE_BITS        stores bitstream state in qtmd_stream structure
34
- * RESTORE_BITS      restores bitstream state from qtmd_stream structure
35
- * READ_BITS(var,n)  takes N bits from the buffer and puts them in var
36
- * FILL_BUFFER       if there is room for another 16 bits, reads another
37
- *                   16 bits from the input stream.
38
- * PEEK_BITS(n)      extracts without removing N bits from the bit buffer
39
- * REMOVE_BITS(n)    removes N bits from the bit buffer
40
- *
41
- * These bit access routines work by using the area beyond the MSB and the
42
- * LSB as a free source of zeroes. This avoids having to mask any bits.
43
- * So we have to know the bit width of the bitbuffer variable.
44
- */
45
-
46
-#ifdef HAVE_LIMITS_H
47
-# include <limits.h>
48
-#endif
49
-#ifndef CHAR_BIT
50
-# define CHAR_BIT (8)
51
-#endif
52
-#define BITBUF_WIDTH (sizeof(unsigned int) * CHAR_BIT)
53
-
54
-#define STORE_BITS do {                                                 \
55
-  qtm->i_ptr      = i_ptr;                                              \
56
-  qtm->i_end      = i_end;                                              \
57
-  qtm->bit_buffer = bit_buffer;                                         \
58
-  qtm->bits_left  = bits_left;                                          \
59
-} while (0)
60
-
61
-#define RESTORE_BITS do {                                               \
62
-  i_ptr      = qtm->i_ptr;                                              \
63
-  i_end      = qtm->i_end;                                              \
64
-  bit_buffer = qtm->bit_buffer;                                         \
65
-  bits_left  = qtm->bits_left;                                          \
66
-} while (0)
67
-
68
-/* adds 16 bits to bit buffer, if there's space for the new bits */
69
-#define FILL_BUFFER do {                                                \
70
-  if (bits_left <= (BITBUF_WIDTH - 16)) {                               \
71
-    if (i_ptr >= i_end) {                                               \
72
-      if (qtmd_read_input(qtm)) return qtm->error;                      \
73
-      i_ptr = qtm->i_ptr;                                               \
74
-      i_end = qtm->i_end;                                               \
75
-    }                                                                   \
76
-    bit_buffer |= ((i_ptr[0] << 8) | i_ptr[1])                          \
77
-                  << (BITBUF_WIDTH - 16 - bits_left);                   \
78
-    bits_left  += 16;                                                   \
79
-    i_ptr      += 2;                                                    \
80
-  }                                                                     \
81
-} while (0)
82
-
83
-#define PEEK_BITS(n)   (bit_buffer >> (BITBUF_WIDTH - (n)))
84
-#define REMOVE_BITS(n) ((bit_buffer <<= (n)), (bits_left -= (n)))
85
-
86
-#define READ_BITS(val, bits) do {                                       \
87
-  (val) = 0;                                                            \
88
-  for (bits_needed = (bits); bits_needed > 0; bits_needed -= bit_run) { \
89
-    FILL_BUFFER;                                                        \
90
-    bit_run = (bits_left < bits_needed) ? bits_left : bits_needed;      \
91
-    (val) = ((val) << bit_run) | PEEK_BITS(bit_run);                    \
92
-    REMOVE_BITS(bit_run);                                               \
93
-  }                                                                     \
94
-} while (0)
95
-
96
-static int qtmd_read_input(struct qtmd_stream *qtm) {
97
-  int read = qtm->sys->read(qtm->input, &qtm->inbuf[0], (int)qtm->inbuf_size);
98
-  if (read < 0) return qtm->error = MSPACK_ERR_READ;
99
-
100
-  qtm->i_ptr = &qtm->inbuf[0];
101
-  qtm->i_end = &qtm->inbuf[read];
102
-  return MSPACK_ERR_OK;
103
-}
104
-
105
-/* Quantum static data tables:
106
- *
107
- * Quantum uses 'position slots' to represent match offsets.  For every
108
- * match, a small 'position slot' number and a small offset from that slot
109
- * are encoded instead of one large offset.
110
- *
111
- * position_base[] is an index to the position slot bases
112
- *
113
- * extra_bits[] states how many bits of offset-from-base data is needed.
114
- *
115
- * length_base[] and length_extra[] are equivalent in function, but are
116
- * used for encoding selector 6 (variable length match) match lengths,
117
- * instead of match offsets.
118
- */
119
-static unsigned int  position_base[42];
120
-static unsigned char extra_bits[42], length_base[27], length_extra[27];
121
-
122
-static void qtmd_static_init() {
123
-  unsigned int i, offset;
124
-
125
-  for (i = 0, offset = 0; i < 42; i++) {
126
-    position_base[i] = offset;
127
-    extra_bits[i] = ((i < 2) ? 0 : (i - 2)) >> 1;
128
-    offset += 1 << extra_bits[i];
129
-  }
130
-
131
-  for (i = 0, offset = 0; i < 26; i++) {
132
-    length_base[i] = offset;
133
-    length_extra[i] = (i < 2 ? 0 : i - 2) >> 2;
134
-    offset += 1 << length_extra[i];
135
-  }
136
-  length_base[26] = 254; length_extra[26] = 0;
137
-}
138
-
139
-
140
-/* Arithmetic decoder:
141
- * 
142
- * GET_SYMBOL(model, var) fetches the next symbol from the stated model
143
- * and puts it in var.
144
- *
145
- * If necessary, qtmd_update_model() is called.
146
- */
147
-#define GET_SYMBOL(model, var) do {                                     \
148
-  range = ((H - L) & 0xFFFF) + 1;                                       \
149
-  symf = ((((C - L + 1) * model.syms[0].cumfreq)-1) / range) & 0xFFFF;  \
150
-                                                                        \
151
-  for (i = 1; i < model.entries; i++) {                                 \
152
-    if (model.syms[i].cumfreq <= symf) break;                           \
153
-  }                                                                     \
154
-  (var) = model.syms[i-1].sym;                                          \
155
-                                                                        \
156
-  range = (H - L) + 1;                                                  \
157
-  symf = model.syms[0].cumfreq;                                         \
158
-  H = L + ((model.syms[i-1].cumfreq * range) / symf) - 1;               \
159
-  L = L + ((model.syms[i].cumfreq   * range) / symf);                   \
160
-                                                                        \
161
-  do { model.syms[--i].cumfreq += 8; } while (i > 0);                   \
162
-  if (model.syms[0].cumfreq > 3800) qtmd_update_model(&model);          \
163
-                                                                        \
164
-  while (1) {                                                           \
165
-    if ((L & 0x8000) != (H & 0x8000)) {                                 \
166
-      if ((L & 0x4000) && !(H & 0x4000)) {                              \
167
-        /* underflow case */                                            \
168
-        C ^= 0x4000; L &= 0x3FFF; H |= 0x4000;                          \
169
-      }                                                                 \
170
-      else break;                                                       \
171
-    }                                                                   \
172
-    L <<= 1; H = (H << 1) | 1;                                          \
173
-    FILL_BUFFER;                                                        \
174
-    C  = (C << 1) | PEEK_BITS(1);                                       \
175
-    REMOVE_BITS(1);                                                     \
176
-  }                                                                     \
177
-} while (0)
178
-
179
-static void qtmd_update_model(struct qtmd_model *model) {
180
-  struct qtmd_modelsym tmp;
181
-  int i, j;
182
-
183
-  if (--model->shiftsleft) {
184
-    for (i = model->entries - 1; i >= 0; i--) {
185
-      /* -1, not -2; the 0 entry saves this */
186
-      model->syms[i].cumfreq >>= 1;
187
-      if (model->syms[i].cumfreq <= model->syms[i+1].cumfreq) {
188
-	model->syms[i].cumfreq = model->syms[i+1].cumfreq + 1;
189
-      }
190
-    }
191
-  }
192
-  else {
193
-    model->shiftsleft = 50;
194
-    for (i = 0; i < model->entries; i++) {
195
-      /* no -1, want to include the 0 entry */
196
-      /* this converts cumfreqs into frequencies, then shifts right */
197
-      model->syms[i].cumfreq -= model->syms[i+1].cumfreq;
198
-      model->syms[i].cumfreq++; /* avoid losing things entirely */
199
-      model->syms[i].cumfreq >>= 1;
200
-    }
201
-
202
-    /* now sort by frequencies, decreasing order -- this must be an
203
-     * inplace selection sort, or a sort with the same (in)stability
204
-     * characteristics */
205
-    for (i = 0; i < model->entries - 1; i++) {
206
-      for (j = i + 1; j < model->entries; j++) {
207
-	if (model->syms[i].cumfreq < model->syms[j].cumfreq) {
208
-	  tmp = model->syms[i];
209
-	  model->syms[i] = model->syms[j];
210
-	  model->syms[j] = tmp;
211
-	}
212
-      }
213
-    }
214
-
215
-    /* then convert frequencies back to cumfreq */
216
-    for (i = model->entries - 1; i >= 0; i--) {
217
-      model->syms[i].cumfreq += model->syms[i+1].cumfreq;
218
-    }
219
-  }
220
-}
221
-
222
-/* Initialises a model to decode symbols from [start] to [start]+[len]-1 */
223
-static void qtmd_init_model(struct qtmd_model *model,
224
-			    struct qtmd_modelsym *syms, int start, int len)
225
-{
226
-  int i;
227
-
228
-  model->shiftsleft = 4;
229
-  model->entries    = len;
230
-  model->syms       = syms;
231
-
232
-  for (i = 0; i <= len; i++) {
233
-    syms[i].sym     = start + i; /* actual symbol */
234
-    syms[i].cumfreq = len - i;   /* current frequency of that symbol */
235
-  }
236
-}
237
-
238
-
239
-/*-------- main Quantum code --------*/
240
-
241
-struct qtmd_stream *qtmd_init(struct mspack_system *system,
242
-			      struct mspack_file *input,
243
-			      struct mspack_file *output,
244
-			      int window_bits, int input_buffer_size)
245
-{
246
-  unsigned int window_size = 1 << window_bits;
247
-  struct qtmd_stream *qtm;
248
-  int i;
249
-
250
-  if (!system) return NULL;
251
-
252
-  /* Quantum supports window sizes of 2^10 (1Kb) through 2^21 (2Mb) */
253
-  if (window_bits < 10 || window_bits > 21) return NULL;
254
-
255
-  input_buffer_size = (input_buffer_size + 1) & -2;
256
-  if (input_buffer_size < 2) return NULL;
257
-
258
-  /* initialise static data */
259
-  qtmd_static_init();
260
-
261
-  /* allocate decompression state */
262
-  if (!(qtm = system->alloc(system, sizeof(struct qtmd_stream)))) {
263
-    return NULL;
264
-  }
265
-
266
-  /* allocate decompression window and input buffer */
267
-  qtm->window = system->alloc(system, (size_t) window_size);
268
-  qtm->inbuf  = system->alloc(system, (size_t) input_buffer_size);
269
-  if (!qtm->window || !qtm->inbuf) {
270
-    system->free(qtm->window);
271
-    system->free(qtm->inbuf);
272
-    system->free(qtm);
273
-    return NULL;
274
-  }
275
-
276
-  /* initialise decompression state */
277
-  qtm->sys         = system;
278
-  qtm->input       = input;
279
-  qtm->output      = output;
280
-  qtm->inbuf_size  = input_buffer_size;
281
-  qtm->window_size = window_size;
282
-  qtm->window_posn = 0;
283
-  qtm->frame_start = 0;
284
-  qtm->header_read = 0;
285
-  qtm->error       = MSPACK_ERR_OK;
286
-
287
-  qtm->i_ptr = qtm->i_end = &qtm->inbuf[0];
288
-  qtm->o_ptr = qtm->o_end = &qtm->window[0];
289
-  qtm->bits_left = 0;
290
-  qtm->bit_buffer = 0;
291
-
292
-  /* initialise arithmetic coding models
293
-   * - model 4    depends on window size, ranges from 20 to 24
294
-   * - model 5    depends on window size, ranges from 20 to 36
295
-   * - model 6pos depends on window size, ranges from 20 to 42
296
-   */
297
-  i = window_bits * 2;
298
-  qtmd_init_model(&qtm->model0,    &qtm->m0sym[0],   0, 64);
299
-  qtmd_init_model(&qtm->model1,    &qtm->m1sym[0],  64, 64);
300
-  qtmd_init_model(&qtm->model2,    &qtm->m2sym[0], 128, 64);
301
-  qtmd_init_model(&qtm->model3,    &qtm->m3sym[0], 192, 64);
302
-  qtmd_init_model(&qtm->model4,    &qtm->m4sym[0],   0, (i > 24) ? 24 : i);
303
-  qtmd_init_model(&qtm->model5,    &qtm->m5sym[0],   0, (i > 36) ? 36 : i);
304
-  qtmd_init_model(&qtm->model6,    &qtm->m6sym[0],   0, i);
305
-  qtmd_init_model(&qtm->model6len, &qtm->m6lsym[0],  0, 27);
306
-  qtmd_init_model(&qtm->model7,    &qtm->m7sym[0],   0, 7);
307
-
308
-  /* all ok */
309
-  return qtm;
310
-}
311
-
312
-int qtmd_decompress(struct qtmd_stream *qtm, off_t out_bytes) {
313
-  unsigned int frame_start, frame_end, window_posn, match_offset, range;
314
-  unsigned char *window, *i_ptr, *i_end, *runsrc, *rundest;
315
-  int i, j, selector, extra, sym, match_length;
316
-  unsigned short H, L, C, symf;
317
-
318
-  register unsigned int bit_buffer;
319
-  register unsigned char bits_left;
320
-  unsigned char bits_needed, bit_run;
321
-
322
-  /* easy answers */
323
-  if (!qtm || (out_bytes < 0)) return MSPACK_ERR_ARGS;
324
-  if (qtm->error) return qtm->error;
325
-
326
-  /* flush out any stored-up bytes before we begin */
327
-  i = qtm->o_end - qtm->o_ptr;
328
-  if ((off_t) i > out_bytes) i = (int) out_bytes;
329
-  if (i) {
330
-    if (qtm->sys->write(qtm->output, qtm->o_ptr, i) != i) {
331
-      return qtm->error = MSPACK_ERR_WRITE;
332
-    }
333
-    qtm->o_ptr  += i;
334
-    out_bytes   -= i;
335
-  }
336
-  if (out_bytes == 0) return MSPACK_ERR_OK;
337
-
338
-  /* restore local state */
339
-  RESTORE_BITS;
340
-  window = qtm->window;
341
-  window_posn = qtm->window_posn;
342
-  frame_start = qtm->frame_start;
343
-  H = qtm->H;
344
-  L = qtm->L;
345
-  C = qtm->C;
346
-
347
-  /* while we do not have enough decoded bytes in reserve: */
348
-  while ((qtm->o_end - qtm->o_ptr) < out_bytes) {
349
-
350
-    /* read header if necessary. Initialises H, L and C */
351
-    if (!qtm->header_read) {
352
-      H = 0xFFFF; L = 0; READ_BITS(C, 16);
353
-      qtm->header_read = 1;
354
-    }
355
-
356
-    /* decode more, at most up to to frame boundary */
357
-    frame_end = window_posn + (out_bytes - (qtm->o_end - qtm->o_ptr));
358
-    if ((frame_start + QTM_FRAME_SIZE) < frame_end) {
359
-      frame_end = frame_start + QTM_FRAME_SIZE;
360
-    }
361
-
362
-    while (window_posn < frame_end) {
363
-      GET_SYMBOL(qtm->model7, selector);
364
-      if (selector < 4) {
365
-	struct qtmd_model *mdl = (selector == 0) ? &qtm->model0 :
366
-	                        ((selector == 1) ? &qtm->model1 :
367
-				((selector == 2) ? &qtm->model2 :
368
-                                                   &qtm->model3));
369
-	GET_SYMBOL((*mdl), sym);
370
-	window[window_posn++] = sym;
371
-      }
372
-      else {
373
-	switch (selector) {
374
-	case 4: /* selector 4 = fixed length match (3 bytes) */
375
-	  GET_SYMBOL(qtm->model4, sym);
376
-	  READ_BITS(extra, extra_bits[sym]);
377
-	  match_offset = position_base[sym] + extra + 1;
378
-	  match_length = 3;
379
-	  break;
380
-
381
-	case 5: /* selector 5 = fixed length match (4 bytes) */
382
-	  GET_SYMBOL(qtm->model5, sym);
383
-	  READ_BITS(extra, extra_bits[sym]);
384
-	  match_offset = position_base[sym] + extra + 1;
385
-	  match_length = 4;
386
-	  break;
387
-
388
-	case 6: /* selector 6 = variable length match */
389
-	  GET_SYMBOL(qtm->model6len, sym);
390
-	  READ_BITS(extra, length_extra[sym]);
391
-	  match_length = length_base[sym] + extra + 5;
392
-
393
-	  GET_SYMBOL(qtm->model6, sym);
394
-	  READ_BITS(extra, extra_bits[sym]);
395
-	  match_offset = position_base[sym] + extra + 1;
396
-	  break;
397
-
398
-	default:
399
-	  /* should be impossible, model7 can only return 0-6 */
400
-	  return qtm->error = MSPACK_ERR_DECRUNCH;
401
-	}
402
-
403
-	rundest = &window[window_posn];
404
-	i = match_length;
405
-	/* does match offset wrap the window? */
406
-	if (match_offset > window_posn) {
407
-	  /* j = length from match offset to end of window */
408
-	  j = match_offset - window_posn;
409
-	  if (j > (int) qtm->window_size) {
410
-	    D(("match offset beyond window boundaries"))
411
-	    return qtm->error = MSPACK_ERR_DECRUNCH;
412
-	  }
413
-	  runsrc = &window[qtm->window_size - j];
414
-	  if (j < i) {
415
-	    /* if match goes over the window edge, do two copy runs */
416
-	    i -= j; while (j-- > 0) *rundest++ = *runsrc++;
417
-	    runsrc = window;
418
-	  }
419
-	  while (i-- > 0) *rundest++ = *runsrc++;
420
-	}
421
-	else {
422
-	  runsrc = rundest - match_offset;
423
-	  while (i-- > 0) *rundest++ = *runsrc++;
424
-	}
425
-	window_posn += match_length;
426
-      }
427
-    } /* while (window_posn < frame_end) */
428
-
429
-    qtm->o_end = &window[window_posn];
430
-
431
-    /* another frame completed? */
432
-    if ((window_posn - frame_start) >= QTM_FRAME_SIZE) {
433
-      if ((window_posn - frame_start) != QTM_FRAME_SIZE) {
434
-	D(("overshot frame alignment"))
435
-	return qtm->error = MSPACK_ERR_DECRUNCH;
436
-      }
437
-
438
-      /* re-align input */
439
-      if (bits_left & 7) REMOVE_BITS(bits_left & 7);
440
-      do { READ_BITS(i, 8); } while (i != 0xFF);
441
-      qtm->header_read = 0;
442
-
443
-      /* window wrap? */
444
-      if (window_posn == qtm->window_size) {
445
-	/* flush all currently stored data */
446
-	i = (qtm->o_end - qtm->o_ptr);
447
-	if (qtm->sys->write(qtm->output, qtm->o_ptr, i) != i) {
448
-	  return qtm->error = MSPACK_ERR_WRITE;
449
-	}
450
-	out_bytes -= i;
451
-	qtm->o_ptr = &window[0];
452
-	qtm->o_end = &window[0];
453
-	window_posn = 0;
454
-      }
455
-
456
-      frame_start = window_posn;
457
-    }
458
-
459
-  } /* while (more bytes needed) */
460
-
461
-  if (out_bytes) {
462
-    i = (int) out_bytes;
463
-    if (qtm->sys->write(qtm->output, qtm->o_ptr, i) != i) {
464
-      return qtm->error = MSPACK_ERR_WRITE;
465
-    }
466
-    qtm->o_ptr += i;
467
-  }
468
-
469
-  /* store local state */
470
-  STORE_BITS;
471
-  qtm->window_posn = window_posn;
472
-  qtm->frame_start = frame_start;
473
-  qtm->H = H;
474
-  qtm->L = L;
475
-  qtm->C = C;
476
-
477
-  return MSPACK_ERR_OK;
478
-}
479
-
480
-void qtmd_free(struct qtmd_stream *qtm) {
481
-  struct mspack_system *sys;
482
-  if (qtm) {
483
-    sys = qtm->sys;
484
-    sys->free(qtm->window);
485
-    sys->free(qtm->inbuf);
486
-    sys->free(qtm);
487
-  }
488
-}
489 1
deleted file mode 100644
... ...
@@ -1,251 +0,0 @@
1
-/* This file is part of libmspack.
2
- * (C) 2003-2004 Stuart Caie.
3
- *
4
- * libmspack is free software; you can redistribute it and/or modify it under
5
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
6
- *
7
- * For further details, see the file COPYING.LIB distributed with libmspack
8
- */
9
-
10
-#if HAVE_CONFIG_H
11
-#include "clamav-config.h"
12
-#endif
13
-
14
-#include <mspack.h>
15
-#include "others.h"
16
-
17
-int mspack_version(int entity) {
18
-  switch (entity) {
19
-  case MSPACK_VER_LIBRARY:
20
-  case MSPACK_VER_SYSTEM:
21
-  case MSPACK_VER_MSCABD:
22
-  case MSPACK_VER_MSCHMD:
23
-    return 1;
24
-  case MSPACK_VER_MSCABC:
25
-  case MSPACK_VER_MSCHMC:
26
-  case MSPACK_VER_MSLITD:
27
-  case MSPACK_VER_MSLITC:
28
-  case MSPACK_VER_MSHLPD:
29
-  case MSPACK_VER_MSHLPC:
30
-  case MSPACK_VER_MSSZDDD:
31
-  case MSPACK_VER_MSSZDDC:
32
-  case MSPACK_VER_MSKWAJD:
33
-  case MSPACK_VER_MSKWAJC:
34
-    return 0;
35
-  }
36
-  return -1;
37
-}
38
-
39
-int mspack_sys_selftest_internal(int offt_size) {
40
-  return (sizeof(off_t) == offt_size) ? MSPACK_ERR_OK : MSPACK_ERR_SEEK;
41
-}
42
-
43
-/* validates a system structure */
44
-int mspack_valid_system(struct mspack_system *sys) {
45
-  return (sys != NULL) && (sys->open != NULL) && (sys->close != NULL) &&
46
-    (sys->read != NULL) && (sys->write != NULL) && (sys->seek != NULL) &&
47
-    (sys->tell != NULL) && (sys->message != NULL) && (sys->alloc != NULL) &&
48
-    (sys->free != NULL) && (sys->copy != NULL) && (sys->null_ptr == NULL);
49
-}
50
-
51
-/* returns the length of a file opened for reading */
52
-int mspack_sys_filelen(struct mspack_system *system,
53
-		       struct mspack_file *file, off_t *length)
54
-{
55
-  off_t current;
56
-
57
-  if (!system || !file || !length) return MSPACK_ERR_OPEN;
58
-
59
-  /* get current offset */
60
-  current = system->tell(file);
61
-
62
-  /* seek to end of file */
63
-  if (system->seek(file, (off_t) 0, MSPACK_SYS_SEEK_END)) {
64
-    return MSPACK_ERR_SEEK;
65
-  }
66
-
67
-  /* get offset of end of file */
68
-  *length = system->tell(file);
69
-
70
-  /* seek back to original offset */
71
-  if (system->seek(file, current, MSPACK_SYS_SEEK_START)) {
72
-    return MSPACK_ERR_SEEK;
73
-  }
74
-
75
-  return MSPACK_ERR_OK;
76
-}
77
-
78
-
79
-
80
-/* definition of mspack_default_system -- if the library is compiled with
81
- * MSPACK_NO_DEFAULT_SYSTEM, no default system will be provided. Otherwise,
82
- * an appropriate default system (e.g. the standard C library, or some native
83
- * API calls)
84
- */
85
-
86
-#ifdef MSPACK_NO_DEFAULT_SYSTEM
87
-struct mspack_system *mspack_default_system = NULL;
88
-#else
89
-
90
-/* implementation of mspack_default_system for standard C library */
91
-
92
-#include <stdio.h>
93
-#include <stdlib.h>
94
-#include <string.h>
95
-#include <stdarg.h>
96
-
97
-struct mspack_file_p {
98
-  FILE *fh;
99
-  char *name;
100
-  int desc;
101
-};
102
-
103
-static struct mspack_file *msp_open(struct mspack_system *this,
104
-				    char *filename, int mode)
105
-{
106
-  struct mspack_file_p *fh;
107
-  char *fmode;
108
-
109
-  switch (mode) {
110
-  case MSPACK_SYS_OPEN_READ:   fmode = "rb";  break;
111
-  case MSPACK_SYS_OPEN_WRITE:  fmode = "wb";  break;
112
-  case MSPACK_SYS_OPEN_UPDATE: fmode = "r+b"; break;
113
-  case MSPACK_SYS_OPEN_APPEND: fmode = "ab";  break;
114
-  default: return NULL;
115
-  }
116
-
117
-  if ((fh = malloc(sizeof(struct mspack_file_p)))) {
118
-    fh->name = filename;
119
-    fh->desc = 0;
120
-    if ((fh->fh = fopen(filename, fmode))) return (struct mspack_file *) fh;
121
-    free(fh);
122
-  }
123
-  return NULL;
124
-}
125
-
126
-static struct mspack_file *msp_dopen(struct mspack_system *this,
127
-				    int desc, int mode)
128
-{
129
-  struct mspack_file_p *fh;
130
-  char *fmode;
131
-
132
-  switch (mode) {
133
-  case MSPACK_SYS_OPEN_READ:   fmode = "rb";  break;
134
-  case MSPACK_SYS_OPEN_WRITE:  fmode = "wb";  break;
135
-  case MSPACK_SYS_OPEN_UPDATE: fmode = "r+b"; break;
136
-  case MSPACK_SYS_OPEN_APPEND: fmode = "ab";  break;
137
-  default: return NULL;
138
-  }
139
-
140
-  if ((fh = malloc(sizeof(struct mspack_file_p)))) {
141
-    fh->name = "descriptor";
142
-    fh->desc = desc;
143
-    if ((fh->fh = fdopen(desc, fmode))) return (struct mspack_file *) fh;
144
-    free(fh);
145
-  }
146
-  return NULL;
147
-}
148
-
149
-static void msp_close(struct mspack_file *file) {
150
-  struct mspack_file_p *this = (struct mspack_file_p *) file;
151
-  if (this) {
152
-    fclose(this->fh);
153
-    free(this);
154
-  }
155
-}
156
-
157
-static int msp_read(struct mspack_file *file, void *buffer, int bytes) {
158
-  struct mspack_file_p *this = (struct mspack_file_p *) file;
159
-  if (this) {
160
-    size_t count = fread(buffer, 1, (size_t) bytes, this->fh);
161
-    if (!ferror(this->fh)) return (int) count;
162
-  }
163
-  return -1;
164
-}
165
-
166
-static int msp_write(struct mspack_file *file, void *buffer, int bytes) {
167
-  struct mspack_file_p *this = (struct mspack_file_p *) file;
168
-  if (this) {
169
-    size_t count = fwrite(buffer, 1, (size_t) bytes, this->fh);
170
-    if (!ferror(this->fh)) return (int) count;
171
-  }
172
-  return -1;
173
-}
174
-
175
-static int msp_seek(struct mspack_file *file, off_t offset, int mode) {
176
-  struct mspack_file_p *this = (struct mspack_file_p *) file;
177
-  if (this) {
178
-    switch (mode) {
179
-    case MSPACK_SYS_SEEK_START: mode = SEEK_SET; break;
180
-    case MSPACK_SYS_SEEK_CUR:   mode = SEEK_CUR; break;
181
-    case MSPACK_SYS_SEEK_END:   mode = SEEK_END; break;
182
-    default: return -1;
183
-    }
184
-#ifdef HAVE_FSEEKO
185
-    return fseeko(this->fh, offset, mode);
186
-#else
187
-    return fseek(this->fh, offset, mode);
188
-#endif
189
-  }
190
-  return -1;
191
-}
192
-
193
-static off_t msp_tell(struct mspack_file *file) {
194
-  struct mspack_file_p *this = (struct mspack_file_p *) file;
195
-#ifdef HAVE_FSEEKO
196
-  return (this) ? (off_t) ftello(this->fh) : 0;
197
-#else
198
-  return (this) ? (off_t) ftell(this->fh) : 0;
199
-#endif
200
-}
201
-
202
-static void msp_msg(struct mspack_file *file, char *format, ...) {
203
-  va_list ap;
204
-  char buff[512];
205
-
206
-  va_start(ap, format);
207
-  vsnprintf(buff, 512, format, ap);
208
-  va_end(ap);
209
-  cli_dbgmsg("libmspack: %s\n", buff);
210
-}
211
-
212
-static void *msp_alloc(struct mspack_system *this, size_t bytes) {
213
-#ifdef DEBUG
214
-  /* make uninitialised data obvious */
215
-  char *buf = malloc(bytes + 8);
216
-  if (buf) memset(buf, 0xDC, bytes);
217
-  *((size_t *)buf) = bytes;
218
-  return &buf[8];
219
-#else
220
-  return malloc(bytes);
221
-#endif
222
-}
223
-
224
-static void msp_free(void *buffer) {
225
-#ifdef DEBUG
226
-  char *buf = buffer;
227
-  size_t bytes;
228
-  if (buf) {
229
-    buf -= 8;
230
-    bytes = *((size_t *)buf);
231
-    /* make freed data obvious */
232
-    memset(buf, 0xED, bytes);
233
-    free(buf);
234
-  }
235
-#else
236
-  free(buffer);
237
-#endif
238
-}
239
-
240
-static void msp_copy(void *src, void *dest, size_t bytes) {
241
-  memcpy(dest, src, bytes);
242
-}
243
-
244
-static struct mspack_system msp_system = {
245
-  &msp_open, &msp_dopen, &msp_close, &msp_read,  &msp_write, &msp_seek,
246
-  &msp_tell, &msp_msg, &msp_alloc, &msp_free, &msp_copy, NULL
247
-};
248
-
249
-struct mspack_system *mspack_default_system = &msp_system;
250
-
251
-#endif
252 1
deleted file mode 100644
... ...
@@ -1,58 +0,0 @@
1
-/* This file is part of libmspack.
2
- * (C) 2003-2004 Stuart Caie.
3
- *
4
- * libmspack is free software; you can redistribute it and/or modify it under
5
- * the terms of the GNU Lesser General Public License (LGPL) version 2.1
6
- *
7
- * For further details, see the file COPYING.LIB distributed with libmspack
8
- */
9
-
10
-#ifndef MSPACK_SYSTEM_H
11
-#define MSPACK_SYSTEM_H 1
12
-
13
-#ifdef DEBUG
14
-# include <stdio.h>
15
-# define D(x) do { printf("%s:%d (%s) ",__FILE__, __LINE__, __FUNCTION__); \
16
-                   printf x ; fputc('\n', stdout); fflush(stdout);} while (0);
17
-#else
18
-# define D(x)
19
-#endif
20
-
21
-/* endian-neutral reading of little-endian data */
22
-#define __egi32(a,n) ( (((a)[n+3]) << 24) | (((a)[n+2]) << 16) | \
23
-		       (((a)[n+1]) <<  8) |  ((a)[n+0])        )
24
-#define EndGetI64(a) ((((unsigned long long int) __egi32(a,4)) << 32) | \
25
-		      ((unsigned int) __egi32(a,0)))
26
-#define EndGetI32(a) __egi32(a,0)
27
-#define EndGetI16(a) ((((a)[1])<<8)|((a)[0]))
28
-
29
-/* endian-neutral reading of big-endian data */
30
-#define EndGetM32(a) ((((a)[0])<<24)|(((a)[1])<<16)|(((a)[2])<<8)|((a)[3]))
31
-#define EndGetM16(a) ((((a)[0])<<8)|((a)[1]))
32
-
33
-extern struct mspack_system *mspack_default_system;
34
-
35
-/* returns the length of a file opened for reading */
36
-extern int mspack_sys_filelen(struct mspack_system *system,
37
-			      struct mspack_file *file, off_t *length);
38
-
39
-/* validates a system structure */
40
-extern int mspack_valid_system(struct mspack_system *sys);
41
-
42
-/* inline memcmp() */
43
-static inline int memcmp(const void *s1, const void *s2, size_t n) {
44
-  unsigned char *c1 = (unsigned char *) s1;
45
-  unsigned char *c2 = (unsigned char *) s2;
46
-  if (n == 0) return 0;
47
-  while (--n && (*c1 == *c2)) c1++, c2++;
48
-  return *c1 - *c2;
49
-}
50
-
51
-/* inline strlen() */
52
-static inline size_t strlen(const char *s) {
53
-  const char *e = s;
54
-  while (*e) e++;
55
-  return e - s;
56
-}
57
-
58
-#endif
... ...
@@ -461,7 +461,7 @@ static void ole2_walk_property_tree(int fd, ole2_header_t *hdr, const char *dir,
461 461
 				int rec_level, int *file_count, const struct cl_limits *limits)
462 462
 {
463 463
 	property_t prop_block[4];
464
-	int32_t index, current_block, count=0, i;
464
+	int32_t index, current_block, i;
465 465
 	unsigned char *dirname;
466 466
 	current_block = hdr->prop_start;
467 467
 	
... ...
@@ -469,11 +469,16 @@ static void ole2_walk_property_tree(int fd, ole2_header_t *hdr, const char *dir,
469 469
 		return;
470 470
 	}
471 471
 	
472
-	if(limits && limits->maxfiles && (*file_count > limits->maxfiles)) {
472
+	if (limits && limits->maxfiles && (*file_count > limits->maxfiles)) {
473 473
 		cli_dbgmsg("OLE2: File limit reached (max: %d)\n", limits->maxfiles);
474 474
 		return;
475 475
 	}
476 476
 	
477
+	if (limits && limits->maxreclevel && (rec_level > limits->maxreclevel)) {
478
+		cli_dbgmsg("OLE2: Recursion limit reached (max: %d)\n", limits->maxreclevel);
479
+		return;
480
+	}
481
+	
477 482
 	index = prop_index / 4;
478 483
 	for (i=0 ; i < index ; i++) {
479 484
 		current_block = ole2_get_next_block_number(fd, hdr, current_block);
... ...
@@ -579,14 +584,14 @@ static int handler_writefile(int fd, ole2_header_t *hdr, property_t *prop, const
579 579
 
580 580
 	if (! (name = get_property_name(prop->name, prop->name_size))) {
581 581
 		/* File without a name - create a name for it */
582
-		int i;
582
+		off_t i;
583 583
                                                                                                                             
584 584
 		i = lseek(fd, 0, SEEK_CUR);
585 585
 		name = (char *) cli_malloc(11);
586 586
 		if (!name) {
587 587
 			return FALSE;
588 588
 		}
589
-		snprintf(name, 11, "%.10d", i + (int) prop);
589
+		snprintf(name, 11, "%.10ld", i + (long int) prop);
590 590
 	}
591 591
 
592 592
 	newname = (char *) cli_malloc(strlen(name) + strlen(dir) + 2);
593 593
deleted file mode 100644
... ...
@@ -1,491 +0,0 @@
1
-/*
2
- *  Copyright (C) 2004 Tomasz Kojm <tkojm@clamav.net>
3
- *
4
- *  Implementation (header structures) based on the PE format description
5
- *  by B. Luevelsmeyer
6
- *
7
- *  This program is free software; you can redistribute it and/or modify
8
- *  it under the terms of the GNU General Public License as published by
9
- *  the Free Software Foundation; either version 2 of the License, or
10
- *  (at your option) any later version.
11
- *
12
- *  This program is distributed in the hope that it will be useful,
13
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
- *  GNU General Public License for more details.
16
- *
17
- *  You should have received a copy of the GNU General Public License
18
- *  along with this program; if not, write to the Free Software
19
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
- */
21
-
22
-#if HAVE_CONFIG_H
23
-#include "clamav-config.h"
24
-#endif
25
-
26
-#include <stdio.h>
27
-#include <string.h>
28
-#include <sys/types.h>
29
-#include <sys/stat.h>
30
-#include <fcntl.h>
31
-#include <sys/stat.h>
32
-#include <unistd.h>
33
-#include <time.h>
34
-
35
-#include "cltypes.h"
36
-#include "clamav.h"
37
-#include "others.h"
38
-#include "upx.h"
39
-
40
-#define IMAGE_DOS_SIGNATURE	    0x5a4d	    /* MZ */
41
-#define IMAGE_NT_SIGNATURE	    0x00004550
42
-#define IMAGE_OPTIONAL_SIGNATURE    0x010b
43
-
44
-#define UPX_NRV2B "\x11\xc9\x75\x20\x41\x01\xdb\x75\x07\x8b\x1e\x83\xee\xfc\x11\xdb\x11\xc9\x01\xdb\x73\xef\x75\x09"
45
-#define UPX_NRV2D "\x8b\x1e\x83\xee\xfc\x11\xdb\x11\xc9\x01\xdb\x75\x07\x8b\x1e\x83\xee\xfc\x11\xdb\x11\xc9\x75\x20"
46
-#define UPX_NRV2E "\x83\xf0\xff\x74\x75\xd1\xf8\x89\xc5\xeb\x0b\x01\xdb\x75\x07\x8b\x1e\x83\xee\xfc\x11\xdb\x72\xcc"
47
-
48
-struct pe_image_file_hdr {
49
-    uint32_t Magic;
50
-    uint16_t Machine;
51
-    uint16_t NumberOfSections;
52
-    uint32_t TimeDateStamp;		    /* unreliable */
53
-    uint32_t PointerToSymbolTable;	    /* debug */
54
-    uint32_t NumberOfSymbols;		    /* debug */
55
-    uint16_t SizeOfOptionalHeader;	    /* == 224 */
56
-    uint16_t Characteristics;
57
-};
58
-
59
-struct pe_image_data_dir {
60
-    uint32_t VirtualAddress;
61
-    uint32_t Size;
62
-};
63
-
64
-struct pe_image_optional_hdr {
65
-    uint16_t Magic;
66
-    uint8_t  MajorLinkerVersion;		    /* unreliable */
67
-    uint8_t  MinorLinkerVersion;		    /* unreliable */
68
-    uint32_t SizeOfCode;			    /* unreliable */
69
-    uint32_t SizeOfInitializedData;		    /* unreliable */
70
-    uint32_t SizeOfUninitializedData;		    /* unreliable */
71
-    uint32_t AddressOfEntryPoint;
72
-    uint32_t BaseOfCode;
73
-    uint32_t BaseOfData;
74
-    uint32_t ImageBase;				    /* multiple of 64 KB */
75
-    uint32_t SectionAlignment;			    /* usually 32 or 4096 */
76
-    uint32_t FileAlignment;			    /* usually 32 or 512 */
77
-    uint16_t MajorOperatingSystemVersion;	    /* not used */
78
-    uint16_t MinorOperatingSystemVersion;	    /* not used */
79
-    uint16_t MajorImageVersion;			    /* unreliable */
80
-    uint16_t MinorImageVersion;			    /* unreliable */
81
-    uint16_t MajorSubsystemVersion;
82
-    uint16_t MinorSubsystemVersion;
83
-    uint32_t Win32VersionValue;			    /* ? */
84
-    uint32_t SizeOfImage;
85
-    uint32_t SizeOfHeaders;
86
-    uint32_t CheckSum;				    /* NT drivers only */
87
-    uint16_t Subsystem;
88
-    uint16_t DllCharacteristics;
89
-    uint32_t SizeOfStackReserve;
90
-    uint32_t SizeOfStackCommit;
91
-    uint32_t SizeOfHeapReserve;
92
-    uint32_t SizeOfHeapCommit;
93
-    uint32_t LoaderFlags;			    /* ? */
94
-    uint32_t NumberOfRvaAndSizes;		    /* unreliable */
95
-    struct pe_image_data_dir DataDirectory[16];
96
-};
97
-
98
-struct pe_image_section_hdr {
99
-    uint8_t Name[8];			    /* may not end with NULL */
100
-    /*
101
-    union {
102
-	uint32_t PhysicalAddress;
103
-	uint32_t VirtualSize;
104
-    } AddrSize;
105
-    */
106
-    uint32_t VirtualSize;
107
-    uint32_t VirtualAddress;
108
-    uint32_t SizeOfRawData;		    /* multiple of FileAlignment */
109
-    uint32_t PointerToRawData;		    /* offset to the section's data */
110
-    uint32_t PointerToRelocations;	    /* object files only */
111
-    uint32_t PointerToLinenumbers;	    /* object files only */
112
-    uint16_t NumberOfRelocations;	    /* object files only */
113
-    uint16_t NumberOfLinenumbers;	    /* object files only */
114
-    uint32_t Characteristics;
115
-};
116
-
117
-static uint32_t cli_rawaddr(uint32_t rva, struct pe_image_section_hdr *shp, uint16_t nos)
118
-{
119
-	int i, found = 0;
120
-
121
-
122
-    for(i = 0; i < nos; i++) {
123
-	if(shp[i].VirtualAddress <= rva && shp[i].VirtualAddress + shp[i].SizeOfRawData > rva) {
124
-	    found = 1;
125
-	    break;
126
-	}
127
-    }
128
-
129
-    if(!found) {
130
-	cli_dbgmsg("Can't calculate raw address from RVA 0x%x\n", rva);
131
-	return -1;
132
-    }
133
-
134
-    return rva - shp[i].VirtualAddress + shp[i].PointerToRawData;
135
-}
136
-
137
-static int cli_ddump(int desc, int offset, int size, const char *file)
138
-{
139
-	int pos, ndesc, bread, sum = 0;
140
-	char buff[FILEBUFF];
141
-
142
-
143
-    cli_dbgmsg("in ddump()\n");
144
-
145
-    if((pos = lseek(desc, 0, SEEK_CUR)) == -1) {
146
-	cli_dbgmsg("Invalid descriptor\n");
147
-	return CL_EIO;
148
-    }
149
-
150
-    if(lseek(desc, offset, SEEK_SET) == -1) {
151
-	cli_dbgmsg("lseek() failed\n");
152
-	lseek(desc, pos, SEEK_SET);
153
-	return CL_EIO;
154
-    }
155
-
156
-    if((ndesc = open(file, O_WRONLY|O_CREAT|O_TRUNC, S_IRWXU)) < 0) {
157
-	cli_dbgmsg("Can't create file %s\n", file);
158
-	lseek(desc, pos, SEEK_SET);
159
-	return CL_EIO;
160
-    }
161
-
162
-    while((bread = read(desc, buff, FILEBUFF)) > 0) {
163
-	if(sum + bread >= size) {
164
-	    if(write(ndesc, buff, size - sum) == -1) {
165
-		cli_dbgmsg("Can't write to file\n");
166
-		lseek(desc, pos, SEEK_SET);
167
-		close(ndesc);
168
-		unlink(file);
169
-		return CL_EIO;
170
-	    }
171
-	    break;
172
-	} else {
173
-	    if(write(ndesc, buff, bread) == -1) {
174
-		cli_dbgmsg("Can't write to file\n");
175
-		lseek(desc, pos, SEEK_SET);
176
-		close(ndesc);
177
-		unlink(file);
178
-		return CL_EIO;
179
-	    }
180
-	}
181
-	sum += bread;
182
-    }
183
-
184
-    close(ndesc);
185
-    lseek(desc, pos, SEEK_SET);
186
-    return 0;
187
-}
188
-
189
-int cli_scanpe(int desc, const char **virname, long int *scanned, const struct cl_node *root, const struct cl_limits *limits, int options, int *reclev)
190
-{
191
-	uint16_t e_magic; /* DOS signature ("MZ") */
192
-	uint32_t e_lfanew; /* address of new exe header */
193
-	uint32_t ep; /* entry point (raw) */
194
-	struct pe_image_file_hdr file_hdr;
195
-	struct pe_image_optional_hdr optional_hdr;
196
-	struct pe_image_section_hdr *section_hdr;
197
-	struct stat sb;
198
-	char sname[9], buff[24], *tempfile;
199
-	int i, found;
200
-	int (*upxfn)(char *, int , char *, int) = NULL;
201
-
202
-
203
-    if(read(desc, &e_magic, sizeof(e_magic)) != sizeof(e_magic)) {
204
-	cli_dbgmsg("Can't read DOS signature\n");
205
-	return CL_EIO;
206
-    }
207
-
208
-    if(e_magic != IMAGE_DOS_SIGNATURE) {
209
-	cli_dbgmsg("Invalid DOS signature\n");
210
-	return -1;
211
-    }
212
-
213
-    lseek(desc, 58, SEEK_CUR); /* skip to the end of the DOS header */
214
-
215
-    if(read(desc, &e_lfanew, sizeof(e_lfanew)) != sizeof(e_lfanew)) {
216
-	cli_dbgmsg("Can't read new header address\n");
217
-	return -1;
218
-    }
219
-
220
-    cli_dbgmsg("e_lfanew == %d\n", e_lfanew);
221
-    if(!e_lfanew) {
222
-	cli_dbgmsg("Not a PE file\n");
223
-	return -2;
224
-    }
225
-
226
-    lseek(desc, e_lfanew, SEEK_SET);
227
-
228
-    if(read(desc, &file_hdr, sizeof(struct pe_image_file_hdr)) != sizeof(struct pe_image_file_hdr)) {
229
-	cli_dbgmsg("Can't read file header\n");
230
-	return -1;
231
-    }
232
-
233
-    if(file_hdr.Magic != IMAGE_NT_SIGNATURE) {
234
-	cli_dbgmsg("Invalid PE signature (probably NE file)\n");
235
-	return -2;
236
-    }
237
-
238
-    /* cli_dbgmsg("Machine type: "); */
239
-    switch(file_hdr.Machine) {
240
-	case 0x14c:
241
-	    cli_dbgmsg("Machine type: 80386\n");
242
-	    break;
243
-	case 0x014d:
244
-	    cli_dbgmsg("Machine type: 80486\n");
245
-	    break;
246
-	case 0x014e:
247
-	    cli_dbgmsg("Machine type: 80586\n");
248
-	    break;
249
-	case 0x162:
250
-	    cli_dbgmsg("Machine type: R3000\n");
251
-	    break;
252
-	case 0x166:
253
-	    cli_dbgmsg("Machine type: R4000\n");
254
-	    break;
255
-	case 0x168:
256
-	    cli_dbgmsg("Machine type: R10000\n");
257
-	    break;
258
-	case 0x184:
259
-	    cli_dbgmsg("Machine type: DEC Alpha AXP\n");
260
-	    break;
261
-	case 0x1f0:
262
-	    cli_dbgmsg("Machine type: PowerPC\n");
263
-	    break;
264
-	default:
265
-	    cli_warnmsg("Unknown machine type in PE header\n");
266
-    }
267
-
268
-    cli_dbgmsg("NumberOfSections: %d\n", file_hdr.NumberOfSections);
269
-    cli_dbgmsg("TimeDateStamp: %s", ctime((time_t *) &file_hdr.TimeDateStamp));
270
-
271
-    cli_dbgmsg("SizeOfOptionalHeader: %d\n", file_hdr.SizeOfOptionalHeader);
272
-
273
-    if(file_hdr.SizeOfOptionalHeader != sizeof(struct pe_image_optional_hdr)) {
274
-	cli_warnmsg("Broken PE header detected.\n");
275
-	return -1;
276
-    }
277
-
278
-    if(read(desc, &optional_hdr, sizeof(struct pe_image_optional_hdr)) != sizeof(struct pe_image_optional_hdr)) {
279
-	cli_dbgmsg("Can't optional file header\n");
280
-	return -1;
281
-    }
282
-
283
-    cli_dbgmsg("MajorLinkerVersion: %d\n", optional_hdr.MajorLinkerVersion);
284
-    cli_dbgmsg("MinorLinkerVersion: %d\n", optional_hdr.MinorLinkerVersion);
285
-    cli_dbgmsg("SizeOfCode: %d\n", optional_hdr.SizeOfCode);
286
-    cli_dbgmsg("SizeOfInitializedData: %d\n", optional_hdr.SizeOfInitializedData);
287
-    cli_dbgmsg("SizeOfUninitializedData: %d\n", optional_hdr.SizeOfUninitializedData);
288
-    cli_dbgmsg("AddressOfEntryPoint: 0x%x\n", optional_hdr.AddressOfEntryPoint);
289
-    cli_dbgmsg("SectionAlignment: %d\n", optional_hdr.SectionAlignment);
290
-    cli_dbgmsg("FileAlignment: %d\n", optional_hdr.FileAlignment);
291
-    cli_dbgmsg("MajorSubsystemVersion: %d\n", optional_hdr.MajorSubsystemVersion);
292
-    cli_dbgmsg("MinorSubsystemVersion: %d\n", optional_hdr.MinorSubsystemVersion);
293
-    cli_dbgmsg("SizeOfImage: %d\n", optional_hdr.SizeOfImage);
294
-    cli_dbgmsg("SizeOfHeaders: %d\n", optional_hdr.SizeOfHeaders);
295
-
296
-    switch(optional_hdr.Subsystem) {
297
-	case 1:
298
-	    cli_dbgmsg("Subsystem: Native (a driver ?)\n");
299
-	    break;
300
-	case 2:
301
-	    cli_dbgmsg("Subsystem: Win32 GUI\n");
302
-	    break;
303
-	case 3:
304
-	    cli_dbgmsg("Subsystem: Win32 console\n");
305
-	    break;
306
-	case 5:
307
-	    cli_dbgmsg("Subsystem: OS/2 console\n");
308
-	    break;
309
-	case 7:
310
-	    cli_dbgmsg("Subsystem: POSIX console\n");
311
-	    break;
312
-	default:
313
-	    cli_warnmsg("Unknown subsystem in PE header\n");
314
-    }
315
-
316
-    cli_dbgmsg("NumberOfRvaAndSizes: %d\n", optional_hdr.NumberOfRvaAndSizes);
317
-
318
-    section_hdr = (struct pe_image_section_hdr *) cli_calloc(file_hdr.NumberOfSections, sizeof(struct pe_image_section_hdr));
319
-
320
-    if(!section_hdr) {
321
-	cli_dbgmsg("Can't allocate memory for section headers\n");
322
-	return CL_EMEM;
323
-    }
324
-
325
-    for(i = 0; i < file_hdr.NumberOfSections; i++) {
326
-
327
-	if(read(desc, &section_hdr[i], sizeof(struct pe_image_section_hdr)) != sizeof(struct pe_image_section_hdr)) {
328
-	    cli_dbgmsg("Can't read section header\n");
329
-	    cli_warnmsg("Possibly broken PE file\n");
330
-	    free(section_hdr);
331
-	    return CL_CLEAN;
332
-	}
333
-
334
-	strncpy(sname, section_hdr[i].Name, 8);
335
-	sname[8] = 0;
336
-	cli_dbgmsg("------------------------------------\n");
337
-	cli_dbgmsg("Section name: %s\n", sname);
338
-	cli_dbgmsg("VirtualSize: %d\n", section_hdr[i].VirtualSize);
339
-	cli_dbgmsg("VirtualAddress: 0x%x\n", section_hdr[i].VirtualAddress);
340
-	cli_dbgmsg("Section size: %d\n", section_hdr[i].SizeOfRawData);
341
-	cli_dbgmsg("PointerToRawData: 0x%x (%d)\n", section_hdr[i].PointerToRawData, section_hdr[i].PointerToRawData);
342
-
343
-	if(section_hdr[i].Characteristics & 0x20) {
344
-	    cli_dbgmsg("Section contains executable code\n");
345
-
346
-	    if(section_hdr[i].VirtualSize < section_hdr[i].SizeOfRawData) {
347
-		cli_dbgmsg("Section contains free space\n");
348
-		/*
349
-		cli_dbgmsg("Dumping %d bytes\n", section_hdr.SizeOfRawData - section_hdr.VirtualSize);
350
-		ddump(desc, section_hdr.PointerToRawData + section_hdr.VirtualSize, section_hdr.SizeOfRawData - section_hdr.VirtualSize, cl_gentemp(NULL));
351
-		*/
352
-
353
-	    }
354
-	}
355
-
356
-	if(section_hdr[i].Characteristics & 0x20000000)
357
-	    cli_dbgmsg("Section's memory is executable\n");
358
-
359
-/*
360
-	if(!strcmp(sname, "_winzip_")) {
361
-	    int ptrd = section_hdr.PointerToRawData & ~(optional_hdr.FileAlignment - 1);
362
-
363
-	    cli_dbgmsg("WinZip section\n");
364
-	    ddump(desc, ptrd, section_hdr.SizeOfRawData, cl_gentemp(NULL));
365
-	}
366
-*/
367
-
368
-    }
369
-
370
-    if(fstat(desc, &sb) == -1) {
371
-	cli_dbgmsg("fstat failed\n");
372
-	free(section_hdr);
373
-	return CL_EIO;
374
-    }
375
-
376
-    ep = cli_rawaddr(optional_hdr.AddressOfEntryPoint, section_hdr, file_hdr.NumberOfSections);
377
-
378
-    if(section_hdr[i].PointerToRawData + section_hdr[i].SizeOfRawData > sb.st_size || ep == -1) {
379
-	cli_warnmsg("Possibly broken PE file\n");
380
-	free(section_hdr);
381
-	return CL_CLEAN;
382
-    }
383
-
384
-    cli_dbgmsg("EntryPoint offset: 0x%x (%d)\n", ep, ep);
385
-
386
-    if(lseek(desc, ep + 0x78, SEEK_SET) == -1) {
387
-	cli_dbgmsg("lseek() failed\n");
388
-	free(section_hdr);
389
-	return CL_EIO;
390
-    }
391
-
392
-    if(read(desc, buff, 24) != 24) {
393
-	cli_dbgmsg("Can't read 24 bytes at 0x%x (%d)\n", ep + 0x78, ep + 0x78);
394
-    } else {
395
-	if(!memcmp(buff, UPX_NRV2B, 24)) {
396
-	    cli_dbgmsg("UPX: NRV2B decompressor detected\n");
397
-	    upxfn = upx_inflate2b;
398
-	} else if(!memcmp(buff, UPX_NRV2D, 24)) {
399
-	    cli_dbgmsg("UPX: NRV2D decompressor detected\n");
400
-	    upxfn = upx_inflate2d;
401
-	} else if(!memcmp(buff, UPX_NRV2E, 24)) {
402
-            cli_dbgmsg("UPX: NRV2E decompressor detected\n");
403
-	    upxfn = upx_inflate2e;
404
-	}
405
-    }
406
-
407
-    if(upxfn) {
408
-	/* try to find the first section with physical size == 0 */
409
-	found = 0;
410
-	for(i = 0; i < file_hdr.NumberOfSections; i++) {
411
-	    if(!section_hdr[i].SizeOfRawData) {
412
-		found = 1;
413
-		break;
414
-	    }
415
-	}
416
-
417
-	if(found) {
418
-		uint32_t ssize, dsize;
419
-		char *src, *dest;
420
-
421
-	    /* we assume (i + 1) is UPX1 */
422
-	    if(strncmp(section_hdr[i].Name, "UPX0", 4) || strncmp(section_hdr[i + 1].Name, "UPX1", 4))
423
-		cli_dbgmsg("Possibly hacked UPX section headers\n");
424
-
425
-	    /* FIXME: use file operations in case of big files */
426
-	    ssize = section_hdr[i + 1].SizeOfRawData;
427
-	    dsize = section_hdr[i].VirtualSize + section_hdr[i + 1].VirtualSize;
428
-	    if((src = (char *) malloc(ssize)) == NULL) {
429
-		free(section_hdr);
430
-		return CL_EMEM;
431
-	    }
432
-
433
-	    if((dest = (char *) malloc(dsize)) == NULL) {
434
-		free(section_hdr);
435
-		free(src);
436
-		return CL_EMEM;
437
-	    }
438
-
439
-	    lseek(desc, section_hdr[i + 1].PointerToRawData, SEEK_SET);
440
-	    if(read(desc, src, ssize) != ssize) {
441
-		cli_dbgmsg("Can't read raw data of section %d\n", i + 1);
442
-		free(section_hdr);
443
-		free(src);
444
-		free(dest);
445
-		return CL_EMEM;
446
-	    }
447
-
448
-	    if(upxfn(src, ssize, dest, dsize)) {
449
-		cli_dbgmsg("UPX decompression failed\n");
450
-	    } else {
451
-		    int ndesc;
452
-
453
-		tempfile = cl_gentemp(NULL);
454
-
455
-		if((ndesc = open(tempfile, O_WRONLY|O_CREAT|O_TRUNC, S_IRWXU)) < 0) {
456
-		    cli_dbgmsg("Can't create file %s\n", tempfile);
457
-		    free(section_hdr);
458
-		    free(src);
459
-		    free(dest);
460
-		    return CL_EIO;
461
-		}
462
-
463
-		if(write(ndesc, dest, dsize) != dsize) {
464
-		    cli_dbgmsg("Can't write %d bytes\n", dsize);
465
-		    free(section_hdr);
466
-		    free(src);
467
-		    free(dest);
468
-		    return CL_EIO;
469
-		}
470
-
471
-		close(ndesc);
472
-
473
-		/* TODO: scan and unlink file */
474
-
475
-		/* unlink(tempfile); */
476
-		free(tempfile);
477
-	    }
478
-
479
-	    free(src);
480
-	    free(dest);
481
-
482
-	} else {
483
-	    cli_dbgmsg("UPX sections not found\n");
484
-	}
485
-    }
486
-
487
-    /* to be continued ... */
488
-
489
-    free(section_hdr);
490
-    return CL_CLEAN;
491
-}
492 1
deleted file mode 100644
... ...
@@ -1,26 +0,0 @@
1
-/*
2
- *  Copyright (C) 2004 Tomasz Kojm <tkojm@clamav.net>
3
- *
4
- *  This program is free software; you can redistribute it and/or modify
5
- *  it under the terms of the GNU General Public License as published by
6
- *  the Free Software Foundation; either version 2 of the License, or
7
- *  (at your option) any later version.
8
- *
9
- *  This program is distributed in the hope that it will be useful,
10
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
- *  GNU General Public License for more details.
13
- *
14
- *  You should have received a copy of the GNU General Public License
15
- *  along with this program; if not, write to the Free Software
16
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
- */
18
-
19
-#ifndef __PE_H
20
-#define __PE_H
21
-
22
-#include "clamav.h"
23
-
24
-int cli_scanpe(int desc, const char **virname, long int *scanned, const struct cl_node *root, const struct cl_limits *limits, int options, int *reclev);
25
-
26
-#endif
... ...
@@ -30,8 +30,6 @@
30 30
 #include <fcntl.h>
31 31
 #include <dirent.h>
32 32
 
33
-#include <mspack.h>
34
-
35 33
 #ifdef CL_THREAD_SAFE
36 34
 #  include <pthread.h>
37 35
 pthread_mutex_t cli_scanrar_mutex = PTHREAD_MUTEX_INITIALIZER;
... ...
@@ -75,10 +73,6 @@ struct cli_magic_s {
75 75
 #define MAGIC_BUFFER_SIZE 26
76 76
 static const struct cli_magic_s cli_magic[] = {
77 77
 
78
-    /* Executables */
79
-
80
-/*  {0,  "MZ",				2,  "DOS/W32 executable", CL_DOSEXE},*/
81
-
82 78
     /* Archives */
83 79
 
84 80
     {0,  "Rar!",			4,  "RAR",		  CL_RARFILE},
... ...
@@ -86,7 +80,6 @@ static const struct cli_magic_s cli_magic[] = {
86 86
     {0,  "\037\213",			2,  "GZip",		  CL_GZFILE},
87 87
     {0,  "BZh",				3,  "BZip",		  CL_BZFILE},
88 88
     {0,  "SZDD",			4,  "compress.exe'd",	  CL_MSCFILE},
89
-    {0,  "MSCF",			4,  "MS CAB",		  CL_MSCABFILE},
90 89
 
91 90
     /* Mail */
92 91
 
... ...
@@ -716,61 +709,6 @@ static int cli_scanmscomp(int desc, const char **virname, long int *scanned, con
716 716
     return ret;
717 717
 }
718 718
 
719
-static int cli_scanmscab(int desc, const char **virname, long int *scanned, const struct cl_node *root, const struct cl_limits *limits, int options, int *reclev)
720
-{
721
-	struct mscab_decompressor *cabd = NULL;
722
-	struct mscabd_cabinet *base, *cab;
723
-	struct mscabd_file *file;
724
-	const char *tmpdir;
725
-	char *tempname;
726
-	int ret = CL_CLEAN;
727
-
728
-
729
-    cli_dbgmsg("in cli_scanmscab()\n");
730
-
731
-    if((cabd = mspack_create_cab_decompressor(NULL)) == NULL) {
732
-	cli_dbgmsg("Can't create libmspack CAB decompressor\n");
733
-	return CL_EMSCAB;
734
-    }
735
-
736
-    if((base = cabd->dsearch(cabd, desc)) == NULL) {
737
-	cli_dbgmsg("I/O error or no valid cabinets found\n");
738
-	mspack_destroy_cab_decompressor(cabd);
739
-	return CL_EMSCAB;
740
-    }
741
-
742
-    if((tmpdir = getenv("TMPDIR")) == NULL)
743
-#ifdef P_tmpdir
744
-	tmpdir = P_tmpdir;
745
-#else
746
-	tmpdir = "/tmp";
747
-#endif
748
-
749
-    for(cab = base; cab; cab = cab->next) {
750
-	for(file = cab->files; file; file = file->next) {
751
-	    tempname = cl_gentemp(tmpdir);
752
-	    cli_dbgmsg("Extracting data to %s\n", tempname);
753
-	    if(cabd->extract(cabd, file, tempname)) {
754
-		cli_dbgmsg("libmscab error code: %d\n", cabd->last_error(cabd));
755
-	    } else {
756
-		ret = cli_scanfile(tempname, virname, scanned, root, limits, options, reclev);
757
-	    }
758
-	    if(!cli_leavetemps_flag)
759
-		unlink(tempname);
760
-	    free(tempname);
761
-	    if(ret == CL_VIRUS)
762
-		break;
763
-	}
764
-	if(ret == CL_VIRUS)
765
-	    break;
766
-    }
767
-
768
-    cabd->close(cabd, base);
769
-    mspack_destroy_cab_decompressor(cabd);
770
-
771
-    return ret;
772
-}
773
-
774 719
 static int cli_scandir(const char *dirname, const char **virname, long int *scanned, const struct cl_node *root, const struct cl_limits *limits, int options, int *reclev)
775 720
 {
776 721
 	DIR *dd;
... ...
@@ -867,12 +805,6 @@ static int cli_vba_scandir(const char *dirname, const char **virname, long int *
867 867
 	free(vba_project->dir);
868 868
 	free(vba_project->offset);
869 869
 	free(vba_project);
870
-    } else if ((fullname = ppt_vba_read(dirname))) {
871
-    	if(cli_scandir(fullname, virname, scanned, root, limits, options, reclev) == CL_VIRUS) {
872
-	    ret = CL_VIRUS;
873
-	}
874
-	cli_rmdirs(fullname);
875
-    	free(fullname);
876 870
     } else if ((vba_project = (vba_project_t *) wm_dir_read(dirname))) {
877 871
     	for (i = 0; i < vba_project->count; i++) {
878 872
 		fullname = (char *) cli_malloc(strlen(vba_project->dir) + strlen(vba_project->name[i]) + 2);
... ...
@@ -1066,11 +998,6 @@ static int cli_magic_scandesc(int desc, const char **virname, long int *scanned,
1066 1066
     type = cli_filetype(magic, bread);
1067 1067
 
1068 1068
     switch(type) {
1069
-	case CL_DOSEXE:
1070
-	    /* temporarily the return code is ignored */
1071
-	    cli_scanpe(desc, virname, scanned, root, limits, options, reclev);
1072
-	    break;
1073
-
1074 1069
 	case CL_RARFILE:
1075 1070
 	    if(!DISABLE_RAR && SCAN_ARCHIVE && !cli_scanrar_inuse)
1076 1071
 		ret = cli_scanrar(desc, virname, scanned, root, limits, options, reclev);
... ...
@@ -1098,11 +1025,6 @@ static int cli_magic_scandesc(int desc, const char **virname, long int *scanned,
1098 1098
 		ret = cli_scanmscomp(desc, virname, scanned, root, limits, options, reclev);
1099 1099
 	    break;
1100 1100
 
1101
-	case CL_MSCABFILE:
1102
-	    if(SCAN_ARCHIVE)
1103
-		ret = cli_scanmscab(desc, virname, scanned, root, limits, options, reclev);
1104
-	    break;
1105
-
1106 1101
 	case CL_MAILFILE:
1107 1102
 	    if(SCAN_MAIL)
1108 1103
 		ret = cli_scanmail(desc, virname, scanned, root, limits, options, reclev);
... ...
@@ -22,7 +22,6 @@
22 22
 
23 23
 typedef enum {
24 24
     CL_UNKNOWN_TYPE = 0,
25
-    CL_DOSEXE,
26 25
     CL_DATAFILE,
27 26
     CL_MAILFILE,
28 27
     CL_GZFILE,
... ...
@@ -31,7 +30,6 @@ typedef enum {
31 31
     CL_RARFILE,
32 32
     CL_MSCFILE,
33 33
     CL_OLE2FILE,
34
-    CL_MSCABFILE
35 34
 } cli_file_t;
36 35
 
37 36
 cli_file_t cli_filetype(const char *buf, size_t buflen);
... ...
@@ -16,6 +16,9 @@
16 16
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 17
  *
18 18
  * $Log: text.c,v $
19
+ * Revision 1.8  2004/07/20 14:35:29  nigelhorne
20
+ * Some MYDOOM.I were getting through
21
+ *
19 22
  * Revision 1.7  2004/06/22 04:08:02  nigelhorne
20 23
  * Optimise empty lines
21 24
  *
... ...
@@ -30,7 +33,7 @@
30 30
  *
31 31
  */
32 32
 
33
-static	char	const	rcsid[] = "$Id: text.c,v 1.7 2004/06/22 04:08:02 nigelhorne Exp $";
33
+static	char	const	rcsid[] = "$Id: text.c,v 1.8 2004/07/20 14:35:29 nigelhorne Exp $";
34 34
 
35 35
 #if HAVE_CONFIG_H
36 36
 #include "clamav-config.h"
... ...
@@ -207,7 +210,7 @@ textAdd(text *t_head, const text *t)
207 207
  * Add a message's content to the end of the current object
208 208
  */
209 209
 text *
210
-textAddMessage(text *aText, const message *aMessage)
210
+textAddMessage(text *aText, message *aMessage)
211 211
 {
212 212
 	assert(aMessage != NULL);
213 213
 
... ...
@@ -16,6 +16,9 @@
16 16
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 17
  *
18 18
  * $Log: text.h,v $
19
+ * Revision 1.4  2004/07/20 14:35:29  nigelhorne
20
+ * Some MYDOOM.I were getting through
21
+ *
19 22
  * Revision 1.3  2004/06/22 04:08:02  nigelhorne
20 23
  * Optimise empty lines
21 24
  *
... ...
@@ -32,5 +35,5 @@ void	textDestroy(text *t_head);
32 32
 text	*textClean(text *t_head);
33 33
 text	*textCopy(const text *t_head);
34 34
 text	*textAdd(text *t_head, const text *t);
35
-text	*textAddMessage(text *aText, const message *aMessage);
35
+text	*textAddMessage(text *aText, message *aMessage);
36 36
 blob	*textToBlob(const text *t, blob *b);
37 37
deleted file mode 100644
... ...
@@ -1,263 +0,0 @@
1
-/*
2
- *  Copyright (C) 2004 aCaB <acab@clamav.net>
3
- *
4
- *  This program is free software; you can redistribute it and/or modify
5
- *  it under the terms of the GNU General Public License as published by
6
- *  the Free Software Foundation; either version 2 of the License, or
7
- *  (at your option) any later version.
8
- *
9
- *  This program is distributed in the hope that it will be useful,
10
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
- *  GNU General Public License for more details.
13
- *
14
- *  You should have received a copy of the GNU General Public License
15
- *  along with this program; if not, write to the Free Software
16
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
- */
18
-
19
-/*
20
-** upxdec.c
21
-**
22
-** 05/05/2k4 - 1st attempt
23
-** 08/05/2k4 - Now works as a charm :D
24
-** 09/05/2k4 - Moved code outta main(), got rid of globals for thread safety, added bound checking, minor cleaning
25
-** 04/06/2k4 - Now we handle 2B, 2D and 2E :D
26
-*/
27
-
28
-/*
29
-** This code unpacks a dumped UPX1 section to a file.
30
-** It was written reversing the loader found on some Win32 UPX compressed trojans; while porting
31
-** it to C i've kinda followed the asm flow so it will probably be a bit hard to read.
32
-** This code DOES NOT revert the uncompressed section to its original state as no E8/E9 fixup and
33
-** of cause no IAT rebuild are performed.
34
-**
35
-** The Win32 asm unpacker is really a little programming jewel, pretty damn rare in these days of
36
-** bloatness. My gratitude to whoever wrote it.
37
-*/
38
-
39
-
40
-#include <stdio.h>
41
-#include <stdlib.h>
42
-#include <sys/types.h>
43
-#include <sys/stat.h>
44
-#include <unistd.h>
45
-#include <string.h>
46
-
47
-/* [doubleebx] */
48
-
49
-static int doubleebx(char *src, int *myebx, int *scur, int ssize)
50
-{
51
-  int oldebx = *myebx;
52
-
53
-  *myebx*=2;
54
-  if ( !(oldebx & 0x7fffffff)) {
55
-    if (*scur<0 || ssize-*scur<4)
56
-      return 0;
57
-    oldebx = *(int*)(src+*scur);
58
-    *myebx = oldebx*2+1;
59
-    *scur+=4;
60
-  }
61
-  return (oldebx>>31)&1;
62
-}
63
-
64
-/* [inflate] */
65
-
66
-int upx_inflate2b(char *src, int ssize, char *dst, int dsize)
67
-{
68
-  int backbytes, backsize, unp_offset = -1, i;
69
-  int myebx = 0;
70
-  int scur=0, dcur=0;
71
-
72
-  while (1) {
73
-    while (doubleebx(src, &myebx, &scur, ssize)) {
74
-      if (scur<0 || scur>=ssize || dcur<0 || dcur>=dsize)
75
-	return -1;
76
-      dst[dcur++] = src[scur++];
77
-    }
78
-
79
-    backbytes = 1;
80
-
81
-    while (1) {
82
-      backbytes = backbytes*2+doubleebx(src, &myebx, &scur, ssize);
83
-      if (doubleebx(src, &myebx, &scur, ssize))
84
-	break;
85
-    }
86
-
87
-    backsize = 0;	
88
-    backbytes-=3;
89
-  
90
-    if ( backbytes >= 0 ) {
91
-
92
-      if (scur<0 || scur>=ssize)
93
-	return -1;
94
-      backbytes<<=8;
95
-      backbytes+=(unsigned char)(src[scur++]);
96
-      backbytes^=0xffffffff;
97
-
98
-      if (!backbytes)
99
-	break;
100
-      unp_offset = backbytes;
101
-    }
102
-
103
-    backsize = doubleebx(src, &myebx, &scur, ssize);
104
-    backsize = backsize*2 + doubleebx(src, &myebx, &scur, ssize);
105
-    if (!backsize) {
106
-      backsize++;
107
-      do {
108
-	backsize = backsize*2 + doubleebx(src, &myebx, &scur, ssize);
109
-      } while (!doubleebx(src, &myebx, &scur, ssize));
110
-      backsize+=2;
111
-    }
112
-
113
-    if ( (unsigned int)unp_offset < 0xfffff300 )
114
-      backsize++;
115
-
116
-    backsize++;
117
-    for (i = 0; i < backsize; i++) {
118
-      if (dcur+i<0 || dcur+i>=dsize || dcur+unp_offset+i<0 || dcur+unp_offset+i>=dsize)
119
-	return -1;
120
-      dst[dcur + i] = dst[dcur + unp_offset + i];
121
-    }
122
-    dcur+=backsize;
123
-  }
124
-  return 0;
125
-}
126
-
127
-int upx_inflate2d(char *src, int ssize, char *dst, int dsize)
128
-{
129
-  int backbytes, backsize, unp_offset = -1, i;
130
-  int myebx = 0;
131
-  int scur=0, dcur=0;
132
-
133
-  while (1) {
134
-    while (doubleebx(src, &myebx, &scur, ssize)) {
135
-      if (scur<0 || scur>=ssize || dcur<0 || dcur>=dsize)
136
-	return -1;
137
-      dst[dcur++] = src[scur++];
138
-    }
139
-
140
-    backbytes = 1;
141
-
142
-    while (1) {
143
-      backbytes = backbytes*2+doubleebx(src, &myebx, &scur, ssize);
144
-      if (doubleebx(src, &myebx, &scur, ssize))
145
-	break;
146
-      backbytes--;
147
-      backbytes=backbytes*2+doubleebx(src, &myebx, &scur, ssize);
148
-    }
149
-
150
-    backsize = 0;	
151
-    backbytes-=3;
152
-  
153
-    if ( backbytes >= 0 ) {
154
-
155
-      if (scur<0 || scur>=ssize)
156
-	return -1;
157
-      backbytes<<=8;
158
-      backbytes+=(unsigned char)(src[scur++]);
159
-      backbytes^=0xffffffff;
160
-
161
-      if (!backbytes)
162
-	break;
163
-      backsize = backbytes & 1;
164
-      backbytes>>=1;
165
-      unp_offset = backbytes;
166
-    }
167
-    else
168
-      backsize = doubleebx(src, &myebx, &scur, ssize);
169
- 
170
-    backsize = backsize*2 + doubleebx(src, &myebx, &scur, ssize);
171
-    if (!backsize) {
172
-      backsize++;
173
-      do {
174
-	backsize = backsize*2 + doubleebx(src, &myebx, &scur, ssize);
175
-      } while (!doubleebx(src, &myebx, &scur, ssize));
176
-      backsize+=2;
177
-    }
178
-
179
-    if ( (unsigned int)unp_offset < 0xfffffb00 ) 
180
-      backsize++;
181
-
182
-    backsize++;
183
-    for (i = 0; i < backsize; i++) {
184
-      if (dcur+i<0 || dcur+i>=dsize || dcur+unp_offset+i<0 || dcur+unp_offset+i>=dsize)
185
-	return -1;
186
-      dst[dcur + i] = dst[dcur + unp_offset + i];
187
-    }
188
-    dcur+=backsize;
189
-  }
190
-  return 0;
191
-}
192
-
193
-int upx_inflate2e(char *src, int ssize, char *dst, int dsize)
194
-{
195
-  int backbytes, backsize, unp_offset = -1, i;
196
-  int myebx = 0;
197
-  int scur=0, dcur=0;
198
-
199
-  while (1) {
200
-    while (doubleebx(src, &myebx, &scur, ssize)) {
201
-      if (scur<0 || scur>=ssize || dcur<0 || dcur>=dsize)
202
-	return -1;
203
-      dst[dcur++] = src[scur++];
204
-    }
205
-
206
-    backbytes = 1;
207
-
208
-    while (1) {
209
-      backbytes = backbytes*2+doubleebx(src, &myebx, &scur, ssize);
210
-      if (doubleebx(src, &myebx, &scur, ssize))
211
-	break;
212
-      backbytes--;
213
-      backbytes=backbytes*2+doubleebx(src, &myebx, &scur, ssize);
214
-    }
215
-
216
-    backsize = 0;
217
-    backbytes-=3;
218
-  
219
-    if ( backbytes >= 0 ) {
220
-
221
-      if (scur<0 || scur>=ssize)
222
-	return -1;
223
-      backbytes<<=8;
224
-      backbytes+=(unsigned char)(src[scur++]);
225
-      backbytes^=0xffffffff;
226
-
227
-      if (!backbytes)
228
-	break;
229
-      backsize = backbytes & 1; /* Using backsize to carry on the shifted out bit (UPX uses CF) */
230
-      backbytes>>=1;
231
-      unp_offset = backbytes;
232
-    }
233
-    else
234
-      backsize = doubleebx(src, &myebx, &scur, ssize); /* Using backsize to carry on the doubleebx result (UPX uses CF) */
235
-
236
-    if (backsize) { /* i.e. IF ( last sar shifted out 1 bit || last doubleebx()==1 ) */
237
-      backsize = doubleebx(src, &myebx, &scur, ssize);
238
-    }
239
-    else {
240
-      backsize = 1;
241
-      if (doubleebx(src, &myebx, &scur, ssize))
242
-	backsize = 2 + doubleebx(src, &myebx, &scur, ssize);
243
-      else {
244
-	do {
245
-	  backsize = backsize * 2 + doubleebx(src, &myebx, &scur, ssize);
246
-	} while (!doubleebx(src, &myebx, &scur, ssize));
247
-	backsize+=2;
248
-      }
249
-    }
250
- 
251
-    if ( (unsigned int)unp_offset < 0xfffffb00 ) 
252
-      backsize++;
253
-
254
-    backsize+=2;
255
-    for (i = 0; i < backsize; i++) {
256
-      if (dcur+i<0 || dcur+i>=dsize || dcur+unp_offset+i<0 || dcur+unp_offset+i>=dsize)
257
-	return -1;
258
-      dst[dcur + i] = dst[dcur + unp_offset + i];
259
-    }
260
-    dcur+=backsize;
261
-  }
262
-  return 0;
263
-}
264 1
deleted file mode 100644
... ...
@@ -1,26 +0,0 @@
1
-/*
2
- *  Copyright (C) 2004 aCaB <acab@clamav.net>
3
- *
4
- *  This program is free software; you can redistribute it and/or modify
5
- *  it under the terms of the GNU General Public License as published by
6
- *  the Free Software Foundation; either version 2 of the License, or
7
- *  (at your option) any later version.
8
- *
9
- *  This program is distributed in the hope that it will be useful,
10
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
- *  GNU General Public License for more details.
13
- *
14
- *  You should have received a copy of the GNU General Public License
15
- *  along with this program; if not, write to the Free Software
16
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
- */
18
-
19
-#ifndef __UPX_H
20
-#define __UPX_H
21
-
22
-int upx_inflate2b(char *, int , char *, int);
23
-int upx_inflate2d(char *, int , char *, int);
24
-int upx_inflate2e(char *, int , char *, int);
25
-
26
-#endif
... ...
@@ -1,4 +1,4 @@
1
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
1
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
2 2
 # @configure_input@
3 3
 
4 4
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
... ...
@@ -444,9 +444,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
444 444
 	  done | \
445 445
 	  $(AWK) '    { files[$$0] = 1; } \
446 446
 	       END { for (i in files) print i; }'`; \
447
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
448
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
449
-	     $$tags $$unique
447
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
448
+	  test -n "$$unique" || unique=$$empty_fix; \
449
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
450
+	    $$tags $$unique; \
451
+	fi
450 452
 ctags: CTAGS
451 453
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
452 454
 		$(TAGS_FILES) $(LISP)
453 455
deleted file mode 100644
454 456
Binary files a/test/test.cab and /dev/null differ