about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/liboping
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/liboping')
-rw-r--r--nixpkgs/pkgs/development/libraries/liboping/default.nix47
-rw-r--r--nixpkgs/pkgs/development/libraries/liboping/ncurses-6.3.patch21
2 files changed, 68 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/liboping/default.nix b/nixpkgs/pkgs/development/libraries/liboping/default.nix
new file mode 100644
index 000000000000..9a44e84b136f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/liboping/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, fetchpatch, ncurses ? null, perl ? null, lib }:
+
+stdenv.mkDerivation rec {
+  pname = "liboping";
+  version = "1.10.0";
+
+  src = fetchurl {
+    url = "https://noping.cc/files/${pname}-${version}.tar.bz2";
+    sha256 = "1n2wkmvw6n80ybdwkjq8ka43z2x8mvxq49byv61b52iyz69slf7b";
+  };
+
+  patches = [
+    # Add support for ncurses-6.3. A backport of patch pending upstream
+    # inclusion: https://github.com/octo/liboping/pull/61
+    ./ncurses-6.3.patch
+
+    # Pull pending fix for format arguments mismatch:
+    #  https://github.com/octo/liboping/pull/60
+    (fetchpatch {
+      name = "format-args.patch";
+      url = "https://github.com/octo/liboping/commit/7a50e33f2a686564aa43e4920141e6f64e042df1.patch";
+      sha256 = "118fl3k84m3iqwfp49g5qil4lw1gcznzmyxnfna0h7za2nm50cxw";
+    })
+  ];
+
+  NIX_CFLAGS_COMPILE = lib.optionalString
+    stdenv.cc.isGNU "-Wno-error=format-truncation";
+
+  buildInputs = [ ncurses perl ];
+
+  configureFlags = lib.optional (perl == null) "--with-perl-bindings=no";
+
+  meta = with lib; {
+    description = "C library to generate ICMP echo requests (a.k.a. ping packets)";
+    longDescription = ''
+      liboping is a C library to generate ICMP echo requests, better known as
+      "ping packets". It is intended for use in network monitoring applications
+      or applications that would otherwise need to fork ping(1) frequently.
+      Included is a sample application, called oping, which demonstrates the
+      library's abilities.
+    '';
+    homepage = "http://noping.cc/";
+    license = licenses.lgpl21;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/liboping/ncurses-6.3.patch b/nixpkgs/pkgs/development/libraries/liboping/ncurses-6.3.patch
new file mode 100644
index 000000000000..14d2be07fe38
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/liboping/ncurses-6.3.patch
@@ -0,0 +1,21 @@
+A backport of https://github.com/octo/liboping/pull/61
+--- a/src/oping.c
++++ b/src/oping.c
+@@ -1125,7 +1125,7 @@ static int update_graph_prettyping (ping_context_t *ctx, /* {{{ */
+ 			wattron (ctx->window, COLOR_PAIR(color));
+ 
+ 		if (has_utf8())
+-			mvwprintw (ctx->window, /* y = */ 3, /* x = */ x + 2, symbol);
++			mvwprintw (ctx->window, /* y = */ 3, /* x = */ x + 2, "%s", symbol);
+ 		else
+ 			mvwaddch (ctx->window, /* y = */ 3, /* x = */ x + 2, symbolc);
+ 
+@@ -1222,7 +1222,7 @@ static int update_graph_histogram (ping_context_t *ctx) /* {{{ */
+ 		if (counters[x] == 0)
+ 			mvwaddch (ctx->window, /* y = */ 3, /* x = */ x + 2, ' ');
+ 		else if (has_utf8 ())
+-			mvwprintw (ctx->window, /* y = */ 3, /* x = */ x + 2,
++			mvwprintw (ctx->window, /* y = */ 3, /* x = */ x + 2, "%s",
+ 					hist_symbols_utf8[index]);
+ 		else
+ 			mvwaddch (ctx->window, /* y = */ 3, /* x = */ x + 2,