From 2f88aceb075ad3cf4fc6bdc5b525d1fa54bceaac Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Sat, 14 Mar 2009 16:17:38 +0530 Subject: Add net-analyzer/gnome-nettool-2.25.3 * fbsd patch doesn't apply, non-trivial to fix => remove patch + keyword --- net-analyzer/gnome-nettool/Manifest | 3 + .../files/gnome-nettool-2.18.0-fbsd.patch | 343 +++++++++++++++++++++ .../gnome-nettool/gnome-nettool-2.25.3.ebuild | 51 +++ 3 files changed, 397 insertions(+) create mode 100644 net-analyzer/gnome-nettool/Manifest create mode 100644 net-analyzer/gnome-nettool/files/gnome-nettool-2.18.0-fbsd.patch create mode 100644 net-analyzer/gnome-nettool/gnome-nettool-2.25.3.ebuild (limited to 'net-analyzer') diff --git a/net-analyzer/gnome-nettool/Manifest b/net-analyzer/gnome-nettool/Manifest new file mode 100644 index 00000000..cfb028f8 --- /dev/null +++ b/net-analyzer/gnome-nettool/Manifest @@ -0,0 +1,3 @@ +AUX gnome-nettool-2.18.0-fbsd.patch 9981 RMD160 f0e7e8d6fc815ea5c6a9da7176ee6b99262dba82 SHA1 466e98431aa9cbcf8467284b9c1839557de90ca5 SHA256 42d134883b5ebae510ed945ba7929d4d3328e4ae50c9cfaab473c2d80ed8be09 +DIST gnome-nettool-2.25.3.tar.bz2 598817 RMD160 40aaa0356c46065a04453fdf5d47f89d271efd45 SHA1 b31ef6711d44ddc9c6f102f131599bc0088a1ba5 SHA256 361e3e3f2e682fea467e32d4a6479a7503100f824d6a540778c6f7573f251886 +EBUILD gnome-nettool-2.25.3.ebuild 1438 RMD160 e072b4ed3c8c548e653fd5b14b642ef3ba64cfa2 SHA1 6a6303e3f300a0d73aef7c45c0cc0689ac5474bb SHA256 d71f3cb777b34b24b27c96fe5ed3bc0e707c4dbef6bfbcf4422df932909fb8fd diff --git a/net-analyzer/gnome-nettool/files/gnome-nettool-2.18.0-fbsd.patch b/net-analyzer/gnome-nettool/files/gnome-nettool-2.18.0-fbsd.patch new file mode 100644 index 00000000..bf6a4699 --- /dev/null +++ b/net-analyzer/gnome-nettool/files/gnome-nettool-2.18.0-fbsd.patch @@ -0,0 +1,343 @@ +diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN gnome-nettool-2.18.0.orig/src/info.c gnome-nettool-2.18.0/src/info.c +--- gnome-nettool-2.18.0.orig/src/info.c 2007-02-16 19:53:16.000000000 -0500 ++++ gnome-nettool-2.18.0/src/info.c 2007-08-06 20:28:16.000000000 -0400 +@@ -20,6 +20,10 @@ + #include + #include + #include ++#include ++#include ++#include ++#include + + #ifdef HAVE_CONFIG_H + # include +@@ -38,6 +42,11 @@ + #include + #include + #include ++#ifdef __FreeBSD__ ++#include ++#include ++#include ++#endif + + #include "info.h" + #include "utils.h" +@@ -128,9 +137,42 @@ info_get_interface_from_dev_name (const + { + gint i; + gchar *path; +- ++ gchar *dev_type = NULL; ++#if defined(__FreeBSD__) ++ int s; ++ struct ifmediareq ifmr; ++ ++ if ((s = socket (AF_INET, SOCK_DGRAM, 0)) > -1) { ++ ++ (void) memset (&ifmr, 0, sizeof (ifmr)); ++ (void) strncpy (ifmr.ifm_name, dev_name, sizeof (ifmr.ifm_name)); ++ ++ if (ioctl (s, SIOCGIFMEDIA, (caddr_t) &ifmr) > -1) { ++ switch (IFM_TYPE (ifmr.ifm_active)) { ++ case IFM_ETHER: ++ dev_type = "eth"; ++ break; ++ case IFM_FDDI: ++ case IFM_TOKEN: ++#ifdef IFM_ATM ++ case IFM_ATM: ++#endif ++ dev_type = "other_type"; ++ break; ++ case IFM_IEEE80211: ++ dev_type = "wlan"; ++ break; ++ } ++ } ++ close (s); ++ } ++#endif /* defined(__FreeBSD__) */ ++ ++ if (!dev_type) ++ dev_type = (gchar *) dev_name; ++ + for (i = 0; info_iface_desc[i].name; i++) +- if (strstr (dev_name, info_iface_desc[i].prefix) == dev_name) { ++ if (strstr (dev_type, info_iface_desc[i].prefix) == dev_type) { + (*iface) = g_strdup_printf ("%s (%s)", _(info_iface_desc[i].name), dev_name); + if (info_iface_desc[i].pixbuf == NULL) { + path = g_build_filename (PIXMAPS_DIR, info_iface_desc[i].icon, NULL); +@@ -218,38 +260,87 @@ info_nic_update_stats (gpointer data) + gchar tx[10], tx_error[10], tx_drop[10], tx_ovr[10]; + */ + gchar iface[30]; /*, flags[30]; */ +- gchar rx_bytes[16], rx_pkt[10], rx_error[10], rx_drop[10], rx_fifo[10]; +- gchar frame[10], compressed[10], multicast[10]; +- gchar tx_bytes[16], tx_pkt[10], tx_error[10], tx_drop[10], tx_fifo[10]; ++ gchar rx_bytes[16], rx_pkt[10], rx_error[10]; ++ gchar tx_bytes[16], tx_pkt[10], tx_error[10]; + gchar collissions[10]; ++#if defined(__linux__) ++ gchar rx_drop[10], rx_fifo[10]; ++ gchar frame[10], compressed[10], multicast[10]; ++ gchar tx_drop[10], tx_fifo[10]; ++#elif defined(__FreeBSD__) ++ char *p; ++ gchar **tokens, **argv; ++ int i; ++ int pipe_out; ++#endif + + GIOChannel *io = NULL; + gchar *line; + gboolean title = TRUE; + const gchar *text; + gchar *text_tx_bytes, *text_rx_bytes; +- ++ + g_return_val_if_fail (info != NULL, FALSE); + + model = gtk_combo_box_get_model (GTK_COMBO_BOX (info->combo)); + text = info_get_nic (info); + if (!text) + return FALSE; +- ++ + #if defined(__linux__) + io = g_io_channel_new_file ("/proc/net/dev", "r", NULL); +- ++#elif defined(__FreeBSD__) ++ if (!g_shell_parse_argv ("/usr/bin/netstat -in -b -f link", NULL, &argv, NULL)) { ++ return FALSE; ++ } ++ if (!g_spawn_async_with_pipes (NULL, argv, NULL, 0, NULL, NULL, NULL, NULL, &pipe_out, NULL, NULL)) { ++ g_strfreev (argv); ++ return FALSE; ++ } ++ ++ g_strfreev (argv); ++ ++ io = g_io_channel_unix_new (pipe_out); ++#endif /* defined(__linux__) */ ++ + while (g_io_channel_read_line (io, &line, NULL, NULL, NULL) == G_IO_STATUS_NORMAL) { + if (title) { + title = FALSE; + g_free (line); + continue; + } ++#if defined(__linux__) + line = g_strdelimit (line, ":", ' '); + sscanf (line, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s", iface, + rx_bytes, rx_pkt, rx_error, rx_drop, rx_fifo, frame, + compressed, multicast, + tx_bytes, tx_pkt, tx_error, tx_drop, tx_fifo, collissions); ++#elif defined(__FreeBSD__) ++ tokens = (gchar **) g_malloc0 (sizeof (gchar *) * 12); ++ p = strtok (line, " \t\n"); ++ /* We only care about 11 fields for now */ ++ for (i = 0; i < 11 && p; i++, p = strtok (NULL, " \t\n")) { ++ tokens[i] = g_strdup (p); ++ } ++ ++ if (i == 0 || i < 10) { ++ g_free (line); ++ g_strfreev (tokens); ++ continue; ++ } ++ ++ g_strlcpy (iface, tokens[0], sizeof (iface)); ++ ++ g_strlcpy (collissions, tokens[--i], sizeof (collissions)); ++ g_strlcpy (tx_bytes, tokens[--i], sizeof (tx_bytes)); ++ g_strlcpy (tx_error, tokens[--i], sizeof (tx_error)); ++ g_strlcpy (tx_pkt, tokens[--i], sizeof (tx_pkt)); ++ g_strlcpy (rx_bytes, tokens[--i], sizeof (rx_bytes)); ++ g_strlcpy (rx_error, tokens[--i], sizeof (rx_error)); ++ g_strlcpy (rx_pkt, tokens[--i], sizeof (rx_pkt)); ++ ++ g_strfreev (tokens); ++#endif /* defined(__linux__) */ + + if (g_ascii_strcasecmp (iface, text) == 0) { + /* +@@ -277,7 +368,9 @@ info_nic_update_stats (gpointer data) + } + + g_io_channel_unref (io); +-#endif /* defined(__linux__) */ ++#if defined(__FreeBSD__) ++ close (pipe_out); ++#endif /* defined(__FreeBSD__) */ + + return TRUE; + } +@@ -425,8 +518,19 @@ info_get_nic_information (const gchar *n + #ifdef __linux__ + mii_data_result data; + #endif ++#ifdef __FreeBSD__ ++ gint hwmib[6]; ++ size_t hwlen; ++ gchar *hwbuf; ++ guchar *hwptr; ++ struct if_msghdr *hwifm; ++ struct sockaddr_dl *hwsinptr; ++#endif + +- getifaddrs (&ifa0); ++ if (getifaddrs (&ifa0) != 0) { ++ g_warning ("getifaddrs failed: %s", g_strerror (errno)); ++ goto fail; ++ } + + for (ifr6 = ifa0; ifr6; ifr6 = ifr6->ifa_next) { + if (strcmp (ifr6->ifa_name, nic) != 0) { +@@ -510,6 +614,45 @@ info_get_nic_information (const gchar *n + (int) ((guchar *) &ifrcopy.ifr_hwaddr.sa_data)[3], + (int) ((guchar *) &ifrcopy.ifr_hwaddr.sa_data)[4], + (int) ((guchar *) &ifrcopy.ifr_hwaddr.sa_data)[5]); ++#elif defined(__FreeBSD__) ++ hwmib[0] = CTL_NET; ++ hwmib[1] = AF_ROUTE; ++ hwmib[2] = 0; ++ hwmib[3] = AF_LINK; ++ hwmib[4] = NET_RT_IFLIST; ++ if ((hwmib[5] = if_nametoindex (nic)) == 0) { ++ g_sprintf (dst, NOT_AVAILABLE); ++ goto hwfail; ++ } ++ if (sysctl (hwmib, 6, NULL, &hwlen, NULL, 0) < 0) { ++ g_sprintf (dst, NOT_AVAILABLE); ++ goto hwfail; ++ } ++ if ((hwbuf = g_malloc (hwlen)) == NULL) { ++ g_sprintf (dst, NOT_AVAILABLE); ++ goto hwfail; ++ } ++ if (sysctl (hwmib, 6, hwbuf, &hwlen, NULL, 0) < 0) { ++ g_sprintf (dst, NOT_AVAILABLE); ++ goto hwfail; ++ } ++ ++ hwifm = (struct if_msghdr *) hwbuf; ++ hwsinptr = (struct sockaddr_dl *) (hwifm + 1); ++ hwptr = (guchar *) LLADDR (hwsinptr); ++ if (*hwptr != 0 || *(hwptr + 1) != 0 || ++ *(hwptr + 2) != 0 || *(hwptr + 3) != 0 || ++ *(hwptr + 4) != 0 || *(hwptr + 5) != 0) { ++ g_sprintf (dst, "%02x:%02x:%02x:%02x:%02x:%02x", ++ *hwptr, *(hwptr + 1), *(hwptr + 2), ++ *(hwptr + 3), *(hwptr + 4), *(hwptr + 5)); ++ } ++ else { ++ g_sprintf (dst, NOT_AVAILABLE); ++ } ++ g_free (hwbuf); ++ ++hwfail: + #else + g_sprintf (dst, NOT_AVAILABLE); + #endif /* SIOCGIFHWADDR */ +@@ -625,6 +768,8 @@ info_get_nic_information (const gchar *n + } + + freeifaddrs (ifa0); ++fail: ++ ; + } + + static gint * +diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN gnome-nettool-2.18.0.orig/src/lookup.c gnome-nettool-2.18.0/src/lookup.c +--- gnome-nettool-2.18.0.orig/src/lookup.c 2007-02-16 19:53:16.000000000 -0500 ++++ gnome-nettool-2.18.0/src/lookup.c 2007-08-06 20:28:16.000000000 -0400 +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + #include "lookup.h" + #include "utils.h" +diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN gnome-nettool-2.18.0.orig/src/netstat.c gnome-nettool-2.18.0/src/netstat.c +--- gnome-nettool-2.18.0.orig/src/netstat.c 2007-02-16 19:53:16.000000000 -0500 ++++ gnome-nettool-2.18.0/src/netstat.c 2007-08-06 20:28:16.000000000 -0400 +@@ -110,12 +110,17 @@ netstat_get_active_option (Netinfo * net + g_return_val_if_fail (netinfo != NULL, NULL); + + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (netinfo->routing))) { ++#ifdef __FreeBSD__ ++ /* XXX We only support ipv4 now */ ++ option = g_strdup ("-rn -f inet"); ++#else + /* Works for Solaris and Linux */ + if (netinfo_is_ipv6_enable ()) { + option = g_strdup ("-rn -A inet -A inet6"); + } else { + option = g_strdup ("-rn -A inet"); + } ++#endif + + if (netinfo->stbar_text) + g_free (netinfo->stbar_text); +diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN gnome-nettool-2.18.0.orig/src/nettool.c gnome-nettool-2.18.0/src/nettool.c +--- gnome-nettool-2.18.0.orig/src/nettool.c 2007-02-16 19:53:16.000000000 -0500 ++++ gnome-nettool-2.18.0/src/nettool.c 2007-08-06 20:28:16.000000000 -0400 +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -361,6 +362,10 @@ netinfo_io_text_buffer_dialog (GIOChanne + len, NULL); + } + ++ g_free (text); ++ ++ return TRUE; ++ + } else if (status == G_IO_STATUS_AGAIN) { + char buf[1]; + +@@ -372,12 +377,13 @@ netinfo_io_text_buffer_dialog (GIOChanne + } + g_string_append_c (netinfo->command_output, buf[0]); + } ++ ++ g_free (text); ++ return TRUE; + } else if (status == G_IO_STATUS_EOF) { + } + + g_free (text); +- +- return TRUE; + } + + /* The condition is not G_IO_HUP | G_IO_ERR | G_IO_NVAL, so +diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN gnome-nettool-2.18.0.orig/src/utils.c gnome-nettool-2.18.0/src/utils.c +--- gnome-nettool-2.18.0.orig/src/utils.c 2007-02-16 19:53:16.000000000 -0500 ++++ gnome-nettool-2.18.0/src/utils.c 2007-08-06 20:28:16.000000000 -0400 +@@ -24,6 +24,8 @@ + on GNOME 2.0 */ + + #include "utils.h" ++#include ++#include + #include + #include + +@@ -240,7 +242,7 @@ util_legible_bytes (gchar *bytes) + const gchar *unit = "B"; + gchar *result; + +- sscanf (bytes, "%lld", &rx); ++ rx = strtoull (bytes, (char **)NULL, 10); + short_rx = rx * 10; + + if (rx > 1125899906842624ull) { diff --git a/net-analyzer/gnome-nettool/gnome-nettool-2.25.3.ebuild b/net-analyzer/gnome-nettool/gnome-nettool-2.25.3.ebuild new file mode 100644 index 00000000..e879966c --- /dev/null +++ b/net-analyzer/gnome-nettool/gnome-nettool-2.25.3.ebuild @@ -0,0 +1,51 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-analyzer/gnome-nettool/gnome-nettool-2.22.1.ebuild,v 1.5 2009/03/11 02:24:20 dang Exp $ +EAPI=1 + +inherit gnome2 eutils + +DESCRIPTION="Collection of network tools" +HOMEPAGE="http://www.gnome.org/projects/gnome-network/" + +LICENSE="GPL-2" +SLOT="0" +# Dropped ~x86-fbsd (see epatch below) +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="" + +COMMON_DEPEND=">=x11-libs/gtk+-2.6.0:2 + >=gnome-base/libglade-2:2.0 + >=gnome-base/gconf-1.1.1:2 + gnome-base/libgtop:2" +RDEPEND="${COMMON_DEPEND} + || ( net-analyzer/traceroute sys-freebsd/freebsd-usbin ) + net-dns/bind-tools + userland_GNU? ( net-misc/netkit-fingerd net-misc/whois ) + userland_BSD? ( net-misc/bsdwhois )" + +# Gilles Dartiguelongue (12 Apr 2008) +# Mask gnome-system-tools 2.14 because it is starting to cause more headache +# to keep it than to mask it. +# Support is autodetected at runtime anyway. +# app-admin/gnome-system-tools + +DEPEND="${COMMON_DEPEND} + >=dev-util/intltool-0.35 + >=dev-util/pkgconfig-0.9 + app-text/gnome-doc-utils" + +DOCS="AUTHORS ChangeLog NEWS README TODO" + +pkg_setup() { + G2CONF="${G2CONF} + $(use_enable debug) + --disable-scrollkeeper" +} + +src_unpack() { + gnome2_src_unpack + + # Doesn't apply, non-trivial to fix => remove fbsd keyword + #epatch "${FILESDIR}"/${PN}-2.18.0-fbsd.patch +} -- cgit v1.2.3