# ChangeLog for net-misc/capi4hylafax
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/capi4hylafax/ChangeLog,v 1.33 2014/08/10 20:43:34 slyfox Exp $

  10 Aug 2014; Sergei Trofimovich <slyfox@gentoo.org>
  capi4hylafax-01.03.00.99.300.3-r1.ebuild,
  capi4hylafax-01.03.00.99.300.9.ebuild:
  QA: drop trailing '.' from DESCRIPTION

  21 Jul 2013; Pacho Ramos <pacho@gentoo.org>
  -capi4hylafax-01.03.00.99.300.4.ebuild,
  -capi4hylafax-01.03.00.99.300.7.ebuild, metadata.xml:
  Cleanup due #92799

  16 Feb 2013; Pacho Ramos <pacho@gentoo.org> metadata.xml:
  Clean per http://www.gossamer-
  threads.com/lists/gentoo/dev/266660?do=post_view_threaded#266660

  26 Feb 2011; Kevin McCarthy <signals@gentoo.org>
  capi4hylafax-01.03.00.99.300.3-r1.ebuild,
  capi4hylafax-01.03.00.99.300.4.ebuild, capi4hylafax-01.03.00.99.300.7.ebuild,
  capi4hylafax-01.03.00.99.300.9.ebuild:
  Updated depends from media-libs/jpeg to virtual/jpeg

*capi4hylafax-01.03.00.99.300.9 (06 Jan 2008)

  06 Jan 2008; Stefan Briesenick <sbriesen@gentoo.org>
  +capi4hylafax-01.03.00.99.300.9.ebuild:
  rev-bump, solving bug #202712.

*capi4hylafax-01.03.00.99.300.7 (18 Nov 2007)

  18 Nov 2007; Stefan Briesenick <sbriesen@gentoo.org>
  +capi4hylafax-01.03.00.99.300.7.ebuild:
  version bump, some cleanups.

  10 Feb 2007; Stefan Briesenick <sbriesen@gentoo.org>
  capi4hylafax-01.03.00.99.300.3-r1.ebuild,
  capi4hylafax-01.03.00.99.300.4.ebuild:
  fixed SRC_URI, solving bug #163309.

  06 Jan 2007; Stefan Briesenick <sbriesen@gentoo.org>
  -capi4hylafax-01.03.00.3.ebuild, -capi4hylafax-01.03.00.99.300.3.ebuild:
  removed old versions.

*capi4hylafax-01.03.00.99.300.4 (06 Jan 2007)

  06 Jan 2007; Stefan Briesenick <sbriesen@gentoo.org>
  +capi4hylafax-01.03.00.99.300.4.ebuild:
  version bump.

  04 Jan 2007; Diego Pettenò <flameeyes@gentoo.org>
  capi4hylafax-01.03.00.99.300.3-r1.ebuild:
  Fix broken autotools handling.

  10 Oct 2006; Tobias Scherbaum <dertobi123@gentoo.org>
  capi4hylafax-01.03.00.99.300.3-r1.ebuild:
  ppc stable, bug #145982

  10 Oct 2006; Simon Stelling <blubb@gentoo.org>
  capi4hylafax-01.03.00.99.300.3-r1.ebuild:
  stable on amd64 wrt bug 145982

  04 Oct 2006; Joshua Jackson <tsunam@gentoo.org>
  capi4hylafax-01.03.00.99.300.3-r1.ebuild:
  Stable x86; security bug #145982

*capi4hylafax-01.03.00.99.300.3-r1 (04 Oct 2006)

  04 Oct 2006; Stefan Briesenick <sbriesen@gentoo.org>
  +files/capi4hylafax-01.03.00.99.300.3-recvdev.diff,
  +capi4hylafax-01.03.00.99.300.3-r1.ebuild:
  fixed 64-Bit issue in recvdev.cpp, see bug #145982.

*capi4hylafax-01.03.00.99.300.3 (30 Sep 2006)

  30 Sep 2006; Stefan Briesenick <sbriesen@gentoo.org>
  +capi4hylafax-01.03.00.99.300.3.ebuild:
  version bump, solving bug #145982.

  29 Sep 2006; Stefan Briesenick <sbriesen@gentoo.org> -files/capi4hylafax,
  -capi4hylafax-01.02.03.ebuild, -capi4hylafax-01.02.03.11.ebuild,
  -capi4hylafax-01.02.03.13.ebuild:
  removed old versions.

  21 May 2006; Chris White <chriswhite@gentoo.org> metadata.xml:
  Adding Japanese translation for metadata.xml. Thanks to Yoshino-san in bug
  #133894.

  21 Jan 2006; Lars Weiler <pylon@gentoo.org>
  capi4hylafax-01.03.00.3.ebuild:
  Stable on ppc; bug #112457.

  26 Dec 2005; Stefan Briesenick <sbriesen@gentoo.org>
  capi4hylafax-01.03.00.3.ebuild:
  stable on x86

  23 Dec 2005; Simon Stelling <blubb@gentoo.org>
  capi4hylafax-01.03.00.3.ebuild:
  stable on amd64

  13 Nov 2005; Stefan Briesenick <sbriesen@gentoo.org>
  capi4hylafax-01.02.03.ebuild:
  fixed dependencies, see bug #112445.

*capi4hylafax-01.03.00.3 (02 Oct 2005)

  02 Oct 2005; Stefan Briesenick <sbriesen@gentoo.org>
  +files/capi4hylafax.confd, +files/capi4hylafax.initd, metadata.xml,
  +capi4hylafax-01.03.00.3.ebuild:
  version bump, ebuild and init-scripts enhancements, adding ~amd64 to keywords.

*capi4hylafax-01.02.03.13 (11 Aug 2005)

  11 Aug 2005; Stefan Briesenick <sbriesen@gentoo.org>
  +capi4hylafax-01.02.03.13.ebuild:
  bumping to new debian release.

  19 Jun 2005; David Holm <dholm@gentoo.org>
  capi4hylafax-01.02.03.11.ebuild:
  Added to ~ppc.

*capi4hylafax-01.02.03.11 (18 Jun 2005)

  18 Jun 2005; Stefan Briesenick <sbriesen@gentoo.org>
  +capi4hylafax-01.02.03.11.ebuild:
  changing version to debian patch level, removing hylafax dependency (because
  it's optional), adding tiff dependency, ebuild code cleanup.

  13 Feb 2005; Stefan Schweizer <genstef@gentoo.org>
  -capi4hylafax-01.02.02.ebuild, capi4hylafax-01.02.03.ebuild:
  Version 01.02.03 x86 stable, libtoolize fix thanks to Hans-Christian
  Armingeon <mog.johnny@gmx.net> in bug 80873

*capi4hylafax-01.02.03 (02 Dec 2004)

  02 Dec 2004; Stefan Schweizer <genstef@gentoo.org> metadata.xml,
  files/capi4hylafax, +capi4hylafax-01.02.03.ebuild:
  Version Bump. Changing maintainer to myself. Ebuild thanks to Stefan
  Briesenick <sbriesen@gmx.de> in bug 72131

  08 Aug 2004; Tom Martin <slarti@gentoo.org> capi4hylafax-01.02.02.ebuild:
  Typo in DESCRIPTION: recieve -> receive. Bug 59717.

  01 Jul 2004; Jon Hood <squinky86@gentoo.org> capi4hylafax-01.02.02.ebuild:
  change virtual/glibc to virtual/libc

  25 Apr 2004; Steve Arnold <nerdboy@gentoo.org> capi4hylafax-01.02.02.ebuild:
  removed ?IUSE stuff

  09 Dec 2003; Heinrich Wendel <lanius@gentoo.org>
  capi4hylafax-01.02.02.ebuild:
  changed app-text/ghostscript to virtual/ghostscript

*capi4hylafax-01.02.02 (02 Oct 2003)

  02 Oct 2003; <nerdboy@gentoo.org> capi4hylafax-01.02.02.ebuild:
  new capi4hylafax ebuild, user-contributed with new DEPENDS
