htop (0.9-4) unstable; urgency=low

  * debian/rules:
    - Added 'build-arch' and 'build-indep' targets as suggested by Lintian.
  * debian/patches:
    - New patch 100-fix-cgroups-crash.patch fixing a crash when htop receives
      an unexpected input from a cgroups file. (Closes: #628040)

 -- Eugene V. Lyubimkin <jackyf@debian.org>  Wed, 21 Sep 2011 21:17:17 +0300

htop (0.9-3) unstable; urgency=low

  * debian/rules:
    - Enable cgroups support. (Closes: #627545)
  * debian/README.source:
    - added with standard instructions how to use quilt.
  * debian/control:
    - Fixed spelling as suggested by lintian.
    - Bumped Standards-Version to 3.9.2, no changes needed.

 -- Eugene V. Lyubimkin <jackyf@debian.org>  Sun, 22 May 2011 12:05:09 +0300

htop (0.9-2) unstable; urgency=low

  * Upload to unstable.

 -- Eugene V. Lyubimkin <jackyf@debian.org>  Sun, 13 Feb 2011 10:41:53 +0200

htop (0.9-1) experimental; urgency=low

  * New upstream release. (Closes: #610229)
    - Fixed by-process IO stats in some cases. (Closes: #526070)
    - Do not display nan% as CPU load sometimes. (Closes: #590535)
  * debian/patches:
    - 600-openvz-veid-on-kernels-gt-2.6.18.patch: ported to new upstream
      version.
    - 700-ltrace-support.patch: refreshed.
  * debian/control:
    - Bumped Standards-Version to 3.9.1, no changes needed.
    - Updated my mail address.
    - Removed 'DM-Upload-Allowed' flag as not needed anymore.
  * debian/copyright:
    - Updated author copyright years.
  * debian/watch:
    - Removed 'uupdate' option, not needed for my workflow.

 -- Eugene V. Lyubimkin <jackyf@debian.org>  Sun, 16 Jan 2011 19:36:07 +0200

htop (0.8.3-1) unstable; urgency=low

  * New upstream release:
    - 0.8.2 (LP: #385862):
      - Integrated lsof output. (Closes: #426003)
      - Handling of absend CPU should work now. (Closes: #494057, #476273)
      - Fixed a crash when sorting by USER column. (Closes: #526362)
      - Fixed display of gigabyte-sized values.
      - Fixed incremental search. (Closes: #521376)
      - Option to display hostname in the meters area.
    - 0.8.3
  * debian/control:
    - Suggested strace and ltrace. (Closes: #530449)
    - Bumped Standards-Version to 3.8.2, no changes needed.
  * debian/patches:
    - 700-ltrace-support.patch: modified to not contradict with new upstream
      release, the hotkey for ltrace output changed from 'l' to 'L'.
  * debian/README:
    - Added with note about ltrace support.

 -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Mon, 29 Jun 2009 13:08:39 +0300

htop (0.8.1+svn149-2) unstable; urgency=low

  * debian/rules:
    - Build with VServer support. (Closes: #522905)

 -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Fri, 17 Apr 2009 21:54:45 +0300

htop (0.8.1+svn149-1) unstable; urgency=low

  * New upstream development snapshot:
    - Allow building without PLPA support. (Closes: #521861)
  * debian/patches:
    - 010-make-desktop-file-valid.patch: deleted, merged upstream.
    - 100-upstream-sort-by-processor-and-session.patch: deleted, merged
      upstream.
    - 110-upstream-fix-page-size-on-BSD.patch: deleted, merged upstream.
    - 120-upstream-explain-cpu-bars-in-monochrome-mode.patch: deleted, merged
      upstream.
    - 200-filter-non-printable-characters.patch: deleted, upstream has own
      version of this patch.
    - 610-rename-veid-to-ctid.patch: deleted, merged upstream.
    - 600-openvz-veid-on-kernels-gt-2.6.18.patch: refreshed.
    - 800-tree-view-without-userland-threads.patch: deleted, merged upstream.
    - 700-ltrace-support.patch: refreshed, added the description.
  * debian/rules:
    - Deal more robustly with config.{sub,guess} files, thanks to Roger Leigh.

 -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Sun, 05 Apr 2009 11:51:34 +0300

htop (0.8.1-6) unstable; urgency=low

  * debian/patches:
    - debian/patches/110-upstream-fix-page-size-on-BSD.patch was accidentally
      incorrectly applied, causing zeroes in memory columns. Fixed.
  * debian/rules:
    - File Process.c somewhy is not regenerated during normal build process.
      Regenerate it by hand.

 -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Sun, 29 Mar 2009 22:37:49 +0300

htop (0.8.1-5) unstable; urgency=low

  * debian/patches:
    - New 100-upstream-sort-by-processor-and-session.patch, cherry-picked from
      upstream svn: allow sorting by 'processor' and 'session' columns.
      (Closes: #501317)
    - New debian/patches/110-upstream-fix-page-size-on-BSD.patch,
      cherry-picked from upstream svn: fix page size on BSD systems.
      (Closes: #485277)
    - New debian/patches/120-upstream-explain-cpu-bars-in-monochrome-mode.patch,
      cherry-picked from upstream svn: document meanings of chars in CPU bars
      in monochrome mode. (Closes: #477222)
    - 600-openvz-veid-on-kernels-gt-2.6.18.patch: added a description.
    - 610-rename-veid-to-ctid.patch: added a description.
    - 800-tree-view-without-userland-threads.patch: added a description.
  * debian/control:
    - Bump 'Standards-Version' to 3.8.1, no changes needed.

 -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Sun, 29 Mar 2009 19:49:53 +0300

htop (0.8.1-4) unstable; urgency=low

  * debian/patches:
    - New 600-openvz-veid-on-kernels-gt-2.6.18.patch: fix determining veid on
      openvz-enabled kernels greater than 2.6.18. Patch by
      Thorsten Schifferdecker <tsd@debian.systs.org>. (Closes: #516846)
    - New 610-rename-veid-to-ctid.patch: openvz: renames 'veid' -> 'ctid' since
      it's now a preferred term. Patch by
      Thorsten Schifferdecker <tsd@debian.systs.org>. (Closes: #516847)
    - New 700-ltrace-support.patch: add ltrace(1) support in addition to strace
      support. Patch by <knotor@users.sourceforge.net>.
    - New 800-tree-view-with-userland-threads.patch: patch to fix tree view when
      userland threads are hidden, taken from Ubuntu.

 -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Mon, 02 Mar 2009 23:17:04 +0200

htop (0.8.1-3) unstable; urgency=low

  * debian/rules:
    - Don't ship empty directories in the package.

 -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Sun, 15 Feb 2009 13:56:41 +0200

htop (0.8.1-2) experimental; urgency=low

  * Disabled unicode support, it has both build and work problems yet.
    (Closes: #507423)
  * debian/patches:
    - New patch 200-filter-non-printable-characters.patch to filter
      non-printable characters in process names. Thanks to Josh Triplett
      and Andrew O. Shadoura. (Closes: #504144)
    - 010-make-desktop-file-valid.patch: comment added.
  * debian/control:
    - Added '${misc:Depends}' to 'Depends', fixes lintian warning.
    - Added 'python-minimal' to 'Build-Depends' for MakeHeader.py.

 -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Sat, 06 Dec 2008 11:03:18 +0200

htop (0.8.1-1) experimental; urgency=low

  * New maintainer. Thanks for work, Bartosz Fenski!
  * New upstream release:
    - Changes in 0.8.1 (Closes: #499928):
      - Linux-VServer support.
      - Battery meter (Closes: #484771).
      - Fixed collection of IO stats in multithreaded processes.
      - Removed assertion that fails on hardened kernels.
    - Changes in 0.8.0 (Closes: #494646, #486213):
      - Ability to change sort column with the mouse by
        clicking column titles.
      - Added support for Linux per-process IO statistics.
      - Added Unicode support.
      - Fixed display of CPU count for threaded processes.
      - Avoid crashing when using many meters.
    - Other fixes:
      - Significantly increased line length limit (to 65535).
        (Closes: #470280)
  * debian/control:
    - Bumped 'Standards-Version' to 3.8.0, no changes needed.
    - Changed Build-Depends on debhelper to (>= 7) and 'libncurses5-dev' ->
      'libncursesw5-dev'. Added dependency on quilt (>= 0.40).
  * debian/rules:
    - Some cleanup, used debhelper v7 commands.
    - Pass '--enable-taskstats' and '--enable-unicode' options to configure.
    - Pass '--enable-openvz' to configure. (Closes: #480541)
  * debian/patches:
    - New 010-make-desktop-file-valid.patch: makes desktop file valid.
      Thanks to Nathan Handler <nathan.handler@gmail.com> (Closes: #488912)
  * debian/copyright:
    - Fixed path for GPLv2 license.
  * debian/menu:
    - Set proper section, removed hint (now useless).

 -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Sun, 16 Nov 2008 20:36:18 +0200

htop (0.7-1) unstable; urgency=low

  * New upstrem version. (Closes: #452634)
  * Move URL to homepage header.
  * Bumped Standards-Version (no changes needed).
  * Fixed watch file. (Closes: #449631)

 -- Bartosz Fenski <fenio@debian.org>  Sat, 26 Apr 2008 13:57:14 +0200

htop (0.6.6+svn20070915-1) unstable; urgency=low

  * New upstream snapshot with dedication to Nico Golde
    (Closes: #410398, #410391, #427127)
    - fixes problems with trailing newline in confi (Closes: #420856)
    - fixes segfault on missing command line args (Closes: #435651)
    - fixes FTBS with GCC 4.3 branch (Closes: #416852)

 -- Bartosz Fenski <fenio@debian.org>  Sat, 15 Sep 2007 14:37:41 +0200

htop (0.6.3-1) unstable; urgency=low

  * New upstream version.
    - allows to rekill tagged group of processes (Closes: #375219)
  * Bumped Standards-Version to 3.7.2 (no changes needed).

 -- Bartosz Fenski <fenio@debian.org>  Mon, 14 Aug 2006 13:03:15 +0200

htop (0.6.2-1) unstable; urgency=low

  * New upstream version.
    - doesn't segfault running as root. (Closes: #354258)

 -- Bartosz Fenski <fenio@debian.org>  Tue,  4 Jul 2006 07:53:58 +0200

htop (0.6-1) unstable; urgency=low

  * New upstream version.
    - doesn't show pipe when some value is equal to zero. (Closes: #325058)
    - allows renicing group of processes. (Closes: #317391)

 -- Bartosz Fenski <fenio@debian.org>  Thu, 29 Dec 2005 13:22:07 +0100

htop (0.5.4-1) unstable; urgency=low

  * New upstream version.
    - does not leave cruft on console on exit. (Closes: #334657) 

 -- Bartosz Fenski <fenio@debian.org>  Fri,  4 Nov 2005 17:25:27 +0100

htop (0.5.3-1) unstable; urgency=low

  * New upstream version. 
  * Bumped Standards-Version to 3.6.2 (no changes needed).

 -- Bartosz Fenski <fenio@debian.org>  Tue, 20 Sep 2005 10:49:52 +0200

htop (0.5.2-1) unstable; urgency=low

  * New upstream bugfix release. 

 -- Bartosz Fenski <fenio@debian.org>  Wed,  8 Jun 2005 20:02:19 +0200

htop (0.5.1-1) unstable; urgency=low

  * New upstream version.
    - correctly honors limits for nice values (Closes: #291502)

 -- Bartosz Fenski <fenio@debian.org>  Sun, 10 Apr 2005 17:49:12 +0200

htop (0.5-2) unstable; urgency=low
  
  * watch file changed a little to handle weird upstream versions
  * s/fenio@o2.pl/fenio@debian.org/

 -- Bartosz Fenski <fenio@debian.org>  Thu,  7 Apr 2005 12:00:11 +0200
 
htop (0.5-1) unstable; urgency=low

  * New upstream version.
    - fixes problem with wrongly displayed CPU bar (Closes: #283212)

 -- Bartosz Fenski <fenio@o2.pl>  Sat, 27 Nov 2004 10:10:17 +0100

htop (0.4.1-3) unstable; urgency=low

  * Fixed handling of non-alphanumeric chars during search.
    Thanks to Gian Piero Carrubba for noticing it (Closes: #269060)
  * Added description of recursive search of processes to the manpage.
    Should be now clear how does it work so (Closes: #269061)

 -- Bartosz Fenski <fenio@o2.pl>  Tue, 31 Aug 2004 21:40:15 +0200

htop (0.4.1-2) unstable; urgency=low

  * Included updated manpage. (Closes: #269064)
    Thanks to Gian Piero Carrubba for provided patch.

 -- Bartosz Fenski <fenio@o2.pl>  Tue, 31 Aug 2004 21:08:13 +0200

htop (0.4.1-1) unstable; urgency=low

  * New upstream version.
    - fixes FTBFS on some archs (Closes: #268373)
    
 -- Bartosz Fenski <fenio@o2.pl>  Fri, 27 Aug 2004 14:01:11 +0200

htop (0.4-1) unstable; urgency=low

  * New upstream version.
  * Added debian/menu file.

 -- Bartosz Fenski <fenio@o2.pl>  Sun, 22 Aug 2004 13:09:12 +0200

htop (0.3.3-1) unstable; urgency=low

  * New upstream version.
  * Added debian/watch file.

 -- Bartosz Fenski <fenio@o2.pl>  Sun, 20 Jun 2004 10:33:13 +0200

htop (0.3.1-1) unstable; urgency=low

  * New upstream version.
  * Hopefully first official Debian release. (Closes: #248939)
    Thanks for sponsoring goes to Cedric Delfosse.
  * debian/rules:
    - removed dh_installman, cause it's now included by upstream.

 -- Bartosz Fenski <fenio@o2.pl>  Mon, 31 May 2004 05:37:15 +0200

htop (0.3-1) unstable; urgency=low

  * New upstream version.

 -- Bartosz Fenski <fenio@o2.pl>  Thu, 20 May 2004 01:15:05 +0200

htop (0.2.1-1) unstable; urgency=low

  * New upstream version.
  * Some updates to manual page. 

 -- Bartosz Fenski <fenio@o2.pl>  Sat, 15 May 2004 10:15:03 +0200

htop (0.2-1) unstable; urgency=low

  * Initial Release.

 -- Bartosz Fenski <fenio@o2.pl>  Fri, 14 May 2004 10:37:04 +0200

