# ChangeLog for mail-filter/clamsmtp
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/mail-filter/clamsmtp/ChangeLog,v 1.22 2009/09/23 17:52:19 patrick Exp $

  23 Sep 2009; Patrick Lauer <patrick@gentoo.org> clamsmtp-1.8.ebuild,
  clamsmtp-1.9.ebuild, clamsmtp-1.10.ebuild:
  Remove virtual/libc

  08 Jun 2009; Jeroen Roovers <jer@gentoo.org> clamsmtp-1.9.ebuild:
  Stable for HPPA (bug #270103).

  24 May 2009; Markus Meier <maekke@gentoo.org> clamsmtp-1.9.ebuild:
  amd64/x86 stable, bug #270103

*clamsmtp-1.10 (16 May 2009)

  16 May 2009; Tobias Scherbaum <dertobi123@gentoo.org>
  -clamsmtp-1.6.ebuild, +clamsmtp-1.10.ebuild:
  Version bump, #264274

  19 Jun 2008; Christian Faulhammer <opfer@gentoo.org> clamsmtp-1.8.ebuild:
  quote variables

  19 Jun 2008; Christian Faulhammer <opfer@gentoo.org> clamsmtp-1.8.ebuild:
  stable x86, bug 226817

*clamsmtp-1.9 (14 Jun 2008)

  14 Jun 2008; Tobias Scherbaum <dertobi123@gentoo.org>
  -clamsmtp-1.4.1.ebuild, -clamsmtp-1.5.ebuild, +clamsmtp-1.9.ebuild:
  shorten DESCRIPTION, fix quoting, version bump (#224203)

  17 Apr 2008; Raúl Porcel <armin76@gentoo.org> clamsmtp-1.8.ebuild:
  Add ~sparc wrt #217903

  25 Aug 2007; Steve Dibb <beandog@gentoo.org> clamsmtp-1.8.ebuild:
  amd64 stable

  18 Mar 2007; Marius Mauch <genone@gentoo.org> clamsmtp-1.4.1.ebuild,
  clamsmtp-1.5.ebuild, clamsmtp-1.6.ebuild, clamsmtp-1.8.ebuild:
  Replacing einfo with elog

  22 Feb 2007; Piotr Jaroszyński <peper@gentoo.org> ChangeLog:
  Transition to Manifest2.

  05 Jan 2007; Guy Martin <gmsoft@gentoo.org> clamsmtp-1.8.ebuild:
  Stable on hppa.

*clamsmtp-1.8 (06 Oct 2006)

  06 Oct 2006; Andrej Kacian <ticho@gentoo.org> +clamsmtp-1.8.ebuild:
  Version bump. Bug #147971, reported by Hod <coil93 at mail.ee>.

  05 Dec 2005; Andrej Kacian <ticho@gentoo.org> clamsmtp-1.6.ebuild:
  Stable on x86.

  04 Dec 2005; Andrej Kacian <ticho@gentoo.org> clamsmtp-1.5.ebuild,
  clamsmtp-1.6.ebuild:
  Don't create /var/run/clamav to prevent file collision.

*clamsmtp-1.6 (07 Nov 2005)

  07 Nov 2005; Andrej Kacian <ticho@gentoo.org> +clamsmtp-1.6.ebuild:
  Version bump. Closes bug #111497, by Brad Schuetz <brad.schuetz at gmail.com>.

  03 Oct 2005; Andrej Kacian <ticho@gentoo.org> clamsmtp-1.4.1.ebuild,
  clamsmtp-1.5.ebuild:
  Do not install generic COPYING document.

  26 Sep 2005; Andrej Kacian <ticho@gentoo.org> clamsmtp-1.4.1.ebuild,
  clamsmtp-1.5.ebuild:
  Stable on amd64, 1.5 stable on both x86 and amd64.

*clamsmtp-1.5 (24 Aug 2005)

  24 Aug 2005; Andrej Kacian <ticho@gentoo.org> +clamsmtp-1.5.ebuild:
  Version bump.

  24 Aug 2005; Andrej Kacian <ticho@gentoo.org> clamsmtp-1.4.1.ebuild:
  Stable on x86.

  13 Jun 2005; Andrej Kacian <ticho@gentoo.org> clamsmtp-1.4.1.ebuild:
  Added ~amd64.

*clamsmtp-1.4.1 (14 May 2005)

  14 May 2005; Andrej Kacian <ticho@gentoo.org> +files/clamsmtpd.init,
  +metadata.xml, +clamsmtp-1.4.1.ebuild:
  Initial import. Ebuild submitted by Jeremy Naylor <jnaylor@nc.rr.com>, bug
  #59625.

