From 2e7d55212249708c1679ac79e4003134edd9cbf0 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Wed, 10 Dec 2014 05:30:19 +0100 Subject: [PATCH] Add ftop: show progress of open files and file systems --- pkgs/os-specific/linux/ftop/default.nix | 37 +++++++++++++++++++ .../linux/ftop/ftop-fix_buffer_overflow.patch | 11 ++++++ .../linux/ftop/ftop-fix_printf_format.patch | 20 ++++++++++ pkgs/top-level/all-packages.nix | 2 + 4 files changed, 70 insertions(+) create mode 100644 pkgs/os-specific/linux/ftop/default.nix create mode 100644 pkgs/os-specific/linux/ftop/ftop-fix_buffer_overflow.patch create mode 100644 pkgs/os-specific/linux/ftop/ftop-fix_printf_format.patch diff --git a/pkgs/os-specific/linux/ftop/default.nix b/pkgs/os-specific/linux/ftop/default.nix new file mode 100644 index 000000000000..4733ce95bb27 --- /dev/null +++ b/pkgs/os-specific/linux/ftop/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, ncurses }: + +stdenv.mkDerivation rec { + name = "ftop-1.0"; + + src = fetchurl { + url = "http://ftop.googlecode.com/files/${name}.tar.bz2"; + sha256 = "3a705f4f291384344cd32c3dd5f5f6a7cd7cea7624c83cb7e923966dbcd47f82"; + }; + + buildInputs = [ ncurses ]; + + patches = [ + ./ftop-fix_buffer_overflow.patch + ./ftop-fix_printf_format.patch + ]; + patchFlags = "-p0"; + + postPatch = '' + substituteInPlace configure --replace "curses" "ncurses" + ''; + + meta = with stdenv.lib; { + description = "Show progress of open files and file systems"; + homepage = https://code.google.com/p/ftop/; + license = with licenses; gpl3Plus; + longDescription = '' + Ftop is to files what top is to processes. The progress of all open files + and file systems can be monitored. If run as a regular user, the set of + open files will be limited to those in that user's processes (which is + generally all that is of interest to the user). + As with top, the items are displayed in order from most to least active. + ''; + maintainers = with maintainers; [ nckx ]; + platforms = with platforms; linux; + }; +} diff --git a/pkgs/os-specific/linux/ftop/ftop-fix_buffer_overflow.patch b/pkgs/os-specific/linux/ftop/ftop-fix_buffer_overflow.patch new file mode 100644 index 000000000000..f10fa6a33b85 --- /dev/null +++ b/pkgs/os-specific/linux/ftop/ftop-fix_buffer_overflow.patch @@ -0,0 +1,11 @@ +--- src/ftop.c.orig 2010-06-15 21:42:15.000000000 +0200 ++++ src/ftop.c 2010-06-15 21:45:38.000000000 +0200 +@@ -935,7 +935,7 @@ + { + if (bar_used > 0) + { +- snprintf(rate_buf, bar_used + 1, "%s", tmp_buf); ++ snprintf(rate_buf, bar_used >= sizeof(rate_buf) ? sizeof(rate_buf) : bar_used + 1, "%s", tmp_buf); + p_attron(p, A_REVERSE); + p_printf(p, "%s", rate_buf); + if (bar_used > bytes) diff --git a/pkgs/os-specific/linux/ftop/ftop-fix_printf_format.patch b/pkgs/os-specific/linux/ftop/ftop-fix_printf_format.patch new file mode 100644 index 000000000000..afb04306428a --- /dev/null +++ b/pkgs/os-specific/linux/ftop/ftop-fix_printf_format.patch @@ -0,0 +1,20 @@ +--- src/ftop.c.orig 2010-06-15 23:14:50.000000000 +0200 ++++ src/ftop.c 2010-06-15 23:15:52.000000000 +0200 +@@ -222,7 +222,7 @@ + p_eol(p, part); + + cols = snprintf(tmp_buf, sizeof(tmp_buf), +- "Processes: %u total, %u unreadable", ++ "Processes: %zu total, %zu unreadable", + s->num_processes + s->num_unreadable_processes, + s->num_unreadable_processes); + +@@ -244,7 +244,7 @@ + p_eol(p, part); + + snprintf(tmp_buf, sizeof(tmp_buf), +- "Open Files: %u regular, %u dir, %u chr, %u blk, %u pipe, %u sock, %u misc", ++ "Open Files: %zu regular, %zu dir, %zu chr, %zu blk, %zu pipe, %zu sock, %zu misc", + s->num_reg, s->num_dir, s->num_chr, s->num_blk, s->num_pipe, + s->num_sock, s->num_misc); + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2e80ec3f08ea..d8dcbc3599c0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1226,6 +1226,8 @@ let ftgl212 = callPackage ../development/libraries/ftgl/2.1.2.nix { }; + ftop = callPackage ../os-specific/linux/ftop { }; + fuppes = callPackage ../tools/networking/fuppes { ffmpeg = ffmpeg_0_6_90; };