# ChangeLog for net-analyzer/ftester
# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/net-analyzer/ftester/ChangeLog,v 1.15 2008/03/12 17:18:53 phreak Exp $

  12 Mar 2008; Christian Heim <phreak@gentoo.org> metadata.xml:
  Removing Andrea Barisani (lcars, #94632) from metadata.xml.

  13 Aug 2007; Tobias Scherbaum <dertobi123@gentoo.org> ftester-1.0.ebuild:
  ppc. stable

  14 Jul 2007; Matti Bickel <mabi@gentoo.org> ftester-1.0.ebuild:
  rekeyworded ~ppc (bug #184754)

  09 Jul 2007; Raúl Porcel <armin76@gentoo.org> ftester-1.0.ebuild:
  Add missing dep and stabilize x86 and drop ppc keyword, authorized by Jokey

  19 Feb 2007; Markus Ullmann <jokey@gentoo.org> ChangeLog:
  Redigest for Manifest2

  05 Mar 2006; Markus Ullmann <jokey@gentoo.org> ftester-0.9.ebuild,
  ftester-1.0.ebuild:
  COPYING cleanup

*ftester-1.0 (14 Feb 2006)

  14 Feb 2006; Andrea Barisani <lcars@gentoo.org> ftester-0.9.ebuild,
  +ftester-1.0.ebuild:
  New release, bumped 0.9 stable for ppc.

  30 Dec 2005; Andrea Barisani <lcars@gentoo.org> ftester-0.9.ebuild:
  Updated homepage and src_uri.

  19 Jul 2005; David Holm <dholm@gentoo.org> ftester-0.9.ebuild:
  Added to ~ppc.

  24 Apr 2005; Marcelo Goes <vanquirius@gentoo.org> -ftester-0.8.ebuild:
  Removing old ebuild.

  09 Jul 2004; Eldad Zack <eldad@gentoo.org> ftester-0.8.ebuild,
  ftester-0.9.ebuild:
  Added missing IUSE. Marked x86 stable. Added metadata.

*ftester-0.9 (30 Sep 2003)

  30 Sep 2003; Chuck Short <zul@gentoo.org> ftester-0.9.ebuild:
  Version bump

*ftester-0.8 (30 Jan 2003)

  30 Jan 2003; Jared Hudson <jhhudso@gentoo.org> : Initial import. Credit goes
  to Andrea Barisani <lcars@infis.univ.trieste.it>.
