# ChangeLog for net-dns/dlint
# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/net-dns/dlint/ChangeLog,v 1.17 2008/05/30 07:08:41 phreak Exp $

  30 May 2008; Christian Heim <phreak@gentoo.org> metadata.xml:
  Removing Andrej Kacian (Ticho) from metadata.xml (as per #59986).

*dlint-1.4.1 (24 Apr 2008)

  24 Apr 2008; Andrej Kacian <ticho@gentoo.org> +dlint-1.4.1.ebuild:
  Version bump. Bug #219110 by Alexander Skwar.

  21 Jan 2008; Raúl Porcel <armin76@gentoo.org> -dlint-1.4.0.ebuild,
  -dlint-1.4.0-r1.ebuild:
  old

  21 Jan 2008; Peter Weller <welp@gentoo.org> dlint-1.4.0-r2.ebuild:
  Keyworded ~amd64; bug 202053

  09 Feb 2007; Diego Pettenò <flameeyes@gentoo.org> ChangeLog:
  Regenerate digest in Manifest2 format.

  03 Oct 2005; Andrej Kacian <ticho@gentoo.org> dlint-1.4.0-r1.ebuild,
  dlint-1.4.0-r2.ebuild:
  Do not install generic COPYING file.

  03 Mar 2005; Gustavo Zacarias <gustavoz@gentoo.org> dlint-1.4.0-r2.ebuild:
  Stable on sparc wrt Ticho

*dlint-1.4.0-r2 (03 Mar 2005)

  03 Mar 2005; Andrej Kacian <ticho@gentoo.org> +dlint-1.4.0-r2.ebuild:
  Fixed 'tail +/usr/share/mc/bin/mc.sh' occurances not caught by
  fixheadtails.eclass. Thanks to Heiko Helmle <helman@gmx.de> for reporting.
  Closes bug 83932.

  17 Jan 2005; Gustavo Zacarias <gustavoz@gentoo.org> dlint-1.4.0-r1.ebuild:
  Stable on sparc

  17 Jan 2005; Andrej Kacian <ticho@gentoo.org> dlint-1.4.0-r1.ebuild:
  Stable on x86.

  14 Jan 2005; Andrej Kacian <ticho@gentoo.org> dlint-1.4.0-r1.ebuild:
  Use fixheadtails.eclass instead of arbitrary sed calls. Fix changelog.

*dlint-1.4.0-r1 (19 Oct 2004)

  19 Oct 2004; Andrej Kacian <ticho@gentoo.org> :
  Fix deprecated use of head(1) and tail(1). Closes #67995, reported by Ray
  Booysen <bugzilla.gentoo@rjb.za.net>. Also, optimized the ebuild a bit.
  Added sys-apps/coreutils to DEPEND, since head and tail are provided by that
  package. And finally, set myself as maintainer for dlint.

  06 Dec 2002; Rodney Rees <manson@gentoo.org> : changed sparc ~sparc keywords
 
*dlint-1.4.0 (1 Feb 2002)

  1 Feb 2002; G.Bevin <gbevin@gentoo.org> ChangeLog :
  
  Added initial ChangeLog which should be updated whenever the package is
  updated in any way. This changelog is targetted to users. This means that the
  comments should well explained and written in clean English. The details about
  writing correct changelogs are explained in the skel.ChangeLog file which you
  can find in the root directory of the portage repository.
