aboutsummaryrefslogtreecommitdiff
path: root/sysutils/xfce4-wavelan-plugin
diff options
context:
space:
mode:
authorOlivier Duchateau <olivierd@FreeBSD.org>2014-05-21 17:21:38 +0000
committerOlivier Duchateau <olivierd@FreeBSD.org>2014-05-21 17:21:38 +0000
commit8dbfc443c3ab0193b8a9cea70cb63abdee3287fd (patch)
tree81b1eb0919bf9be2ec73bc902dc7da2b92756453 /sysutils/xfce4-wavelan-plugin
parent2c083b6d7a2608d2230afbf7a6cec07923c137ef (diff)
downloadports-8dbfc443c3ab0193b8a9cea70cb63abdee3287fd.tar.gz
ports-8dbfc443c3ab0193b8a9cea70cb63abdee3287fd.zip
- Convert to USES= libtool tar:bzip2
- Add new patch, 'patch-panel-plugin__wavelan.ci', in order to change percentage values (25%, 50% and 75%, instead 40%, 55% and 70%) - Fix signal quality - Bump PORTREVISION Submitted by: J.R. Oldroyd <fbsd@opal.com> Obtained from: http://lists.freebsd.org/pipermail/freebsd-xfce/2014-May/000914.html
Notes
Notes: svn path=/head/; revision=354754
Diffstat (limited to 'sysutils/xfce4-wavelan-plugin')
-rw-r--r--sysutils/xfce4-wavelan-plugin/Makefile4
-rw-r--r--sysutils/xfce4-wavelan-plugin/files/patch-panel-plugin__wavelan.c35
-rw-r--r--sysutils/xfce4-wavelan-plugin/files/patch-panel-plugin__wi_bsd.c239
-rw-r--r--sysutils/xfce4-wavelan-plugin/pkg-plist1
4 files changed, 206 insertions, 73 deletions
diff --git a/sysutils/xfce4-wavelan-plugin/Makefile b/sysutils/xfce4-wavelan-plugin/Makefile
index fb1ed46447d7..b42bfc49b6b8 100644
--- a/sysutils/xfce4-wavelan-plugin/Makefile
+++ b/sysutils/xfce4-wavelan-plugin/Makefile
@@ -3,6 +3,7 @@
PORTNAME= xfce4-wavelan-plugin
PORTVERSION= 0.5.11
+PORTREVISION= 1
CATEGORIES= sysutils xfce
MASTER_SITES= ${MASTER_SITE_XFCE}
MASTER_SITE_SUBDIR=src/panel-plugins/${PORTNAME}/${PORTVERSION:R}
@@ -11,9 +12,8 @@ DIST_SUBDIR= xfce4
MAINTAINER= xfce@FreeBSD.org
COMMENT= Displays various information about a WaveLAN device
-USE_BZIP2= yes
GNU_CONFIGURE= yes
-USES= gettext pkgconfig gmake
+USES= gettext pkgconfig gmake libtool tar:bzip2
USE_GNOME= gtk20 glib20 intltool intlhack
USE_XFCE= configenv libutil libmenu panel
diff --git a/sysutils/xfce4-wavelan-plugin/files/patch-panel-plugin__wavelan.c b/sysutils/xfce4-wavelan-plugin/files/patch-panel-plugin__wavelan.c
new file mode 100644
index 000000000000..388d25de3f85
--- /dev/null
+++ b/sysutils/xfce4-wavelan-plugin/files/patch-panel-plugin__wavelan.c
@@ -0,0 +1,35 @@
+--- ./panel-plugin/wavelan.c.orig 2012-06-29 20:07:10.000000000 +0000
++++ ./panel-plugin/wavelan.c 2014-05-20 21:45:00.000000000 +0000
+@@ -98,11 +98,11 @@
+
+ if (wavelan->signal_colors) {
+ /* set color */
+- if (state > 70)
++ if (state > 75)
+ gdk_color_parse(signal_color_strong, &color);
+- else if (state > 55)
++ else if (state > 50)
+ gdk_color_parse(signal_color_good, &color);
+- else if (state > 40)
++ else if (state > 25)
+ gdk_color_parse(signal_color_weak, &color);
+ else
+ gdk_color_parse(signal_color_bad, &color);
+@@ -163,7 +163,16 @@
+ }
+ }
+ else {
+- wavelan_set_state(wavelan, stats.ws_quality);
++ if (strcmp(stats.ws_qunit, "dBm") == 0)
++ /*
++ * Usual formula is:
++ * qual = 4 * (signal - noise)
++ * where noise is typically about -96dBm, but we don't have
++ * the actual noise value here, so approximate one.
++ */
++ wavelan_set_state(wavelan, 4 * (stats.ws_quality - (-96)));
++ else
++ wavelan_set_state(wavelan, stats.ws_quality);
+
+ if (strlen(stats.ws_netname) > 0)
+ tip = g_strdup_printf("%s: %d%s at %dMb/s", stats.ws_netname, stats.ws_quality, stats.ws_qunit, stats.ws_rate);
diff --git a/sysutils/xfce4-wavelan-plugin/files/patch-panel-plugin__wi_bsd.c b/sysutils/xfce4-wavelan-plugin/files/patch-panel-plugin__wi_bsd.c
index f16b3dd2be1a..7fd8da6dbcc8 100644
--- a/sysutils/xfce4-wavelan-plugin/files/patch-panel-plugin__wi_bsd.c
+++ b/sysutils/xfce4-wavelan-plugin/files/patch-panel-plugin__wi_bsd.c
@@ -1,26 +1,112 @@
--- ./panel-plugin/wi_bsd.c.orig 2012-04-09 16:45:20.000000000 +0000
-+++ ./panel-plugin/wi_bsd.c 2014-01-31 09:31:51.000000000 +0000
-@@ -52,10 +52,6 @@
++++ ./panel-plugin/wi_bsd.c 2014-05-20 21:29:11.000000000 +0000
+@@ -3,6 +3,8 @@
+ * (OpenBSD support)
+ * 2008 Pietro Cerutti <gahr@gahr.ch>
+ * (FreeBSD > 700000 adaptation)
++ * 2014 J.R. Oldroyd <fbsd@opal.com>
++ * (Enhance FreeBSD support)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+@@ -26,14 +28,9 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+-#if !defined(__FreeBSD_kernel__) && defined(__FreeBSD__)
+-#define __FreeBSD_kernel__ __FreeBSD__
+-#endif
+-#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version)
+-#define __FreeBSD_kernel_version __FreeBSD_version
+-#endif
++#include <sys/param.h>
+
+-#if defined(__NetBSD__) || defined(__FreeBSD_kernel__) || defined(__FreeBSD_kernel_kernel__) || defined(__OpenBSD__)
++#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
+
+ #include <sys/types.h>
+ #include <sys/cdefs.h>
+@@ -44,20 +41,14 @@
+
+ #include <net/if.h>
+ #include <net/if_media.h>
+-#ifdef __FreeBSD_kernel__
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ #include <netinet/in.h>
+ #include <netinet/if_ether.h>
+ #include <sys/endian.h>
+-#if __FreeBSD_kernel_version >= 700000
#include <sys/types.h>
#include <sys/sysctl.h>
#include <net80211/ieee80211_ioctl.h>
--#else
+ #else
-#include <net/if_var.h>
-#include <net/ethernet.h>
-#include <dev/wi/if_wavelan_ieee.h>
- #endif
- #else
+-#endif
+-#else
#ifdef __NetBSD__
-@@ -111,8 +107,6 @@
+ #include <net80211/ieee80211.h>
+ #include <net80211/ieee80211_ioctl.h>
+@@ -107,13 +98,9 @@
+ };
+
+ static int _wi_carrier(const struct wi_device *);
+-#if defined(__FreeBSD_kernel__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
static int _wi_vendor(const struct wi_device *, char *, size_t);
- #if __FreeBSD_kernel_version > 700000
+-#if __FreeBSD_kernel_version > 700000
static int _wi_getval(const struct wi_device *, struct ieee80211req_scan_result *);
-#else
-static int _wi_getval(const struct wi_device *, struct wi_req *);
- #endif
+-#endif
#endif
static int _wi_netname(const struct wi_device *, char *, size_t);
-@@ -319,46 +313,6 @@
+ static int _wi_quality(const struct wi_device *, int *);
+@@ -160,7 +147,7 @@
+
+ strlcpy(stats->ws_qunit, "dBm", 4);
+ /* check vendor (independent of carrier state) */
+-#if defined(__FreeBSD_kernel__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ if ((result = _wi_vendor(device, stats->ws_vendor, WI_MAXSTRLEN)) != WI_OK)
+ return(result);
+ #endif
+@@ -294,12 +281,10 @@
+ }
+ #endif
+
+-/* seems only FreeBSD supports this operation */
+-#if defined(__FreeBSD_kernel__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ static int
+ _wi_vendor(const struct wi_device *device, char *buffer, size_t len)
+ {
+-#if defined(__FreeBSD_kernel__) && __FreeBSD_kernel_version >= 700000
+ /*
+ * We use sysctl to get a device description
+ */
+@@ -316,59 +301,30 @@
+ dev_number = (int)strtol(c, NULL, 10);
+ *c = '\0';
+
++ /*
++ * Also, wlan doesn't present dev.wlan.N.%desc, need to use
++ * underlying driver name, instead: dev.ath.0.%desc, so we
++ * need to get the parent's name.
++ */
++ if(strcmp(dev_name, "wlan") == 0) {
++ snprintf(mib, sizeof(mib), "net.%s.%d.%%parent", dev_name, dev_number);
++ if(sysctlbyname(mib, dev_name, &len, NULL, 0) == -1)
++ return (WI_NOSUCHDEV);
++
++ c = dev_name;
++ while(!isdigit(*c)) c++;
++ dev_number = (int)strtol(c, NULL, 10);
++ *c = '\0';
++ len = WI_MAXSTRLEN;
++ }
++
snprintf(mib, sizeof(mib), "dev.%s.%d.%%desc", dev_name, dev_number);
if(sysctlbyname(mib, buffer, &len, NULL, 0) == -1)
return (WI_NOSUCHDEV);
@@ -64,88 +150,101 @@
-
- snprintf(buffer, len, "%s (ID %d, version %d.%d)", vendor,
- wr.wi_val[0], wr.wi_val[2], wr.wi_val[3]);
- #endif
+-#endif
return(WI_OK);
-@@ -393,21 +347,6 @@
+ }
+-#endif /* wi_vendor */
+
+-/* NetBSD and FreeBSD 6.x uses old wi_* API */
+-#if defined(__NetBSD__) || defined(__FreeBSD_kernel__)
+-/* FreeBSD 7.x use its own new iee80211 API */
+-#if defined(__FreeBSD_kernel__) && __FreeBSD_kernel_version >= 700000
+ static int
+ _wi_getval(const struct wi_device *device, struct ieee80211req_scan_result *scan)
+ {
+@@ -393,7 +349,9 @@
return(WI_OK);
}
-#else
--static int
--_wi_getval(const struct wi_device *device, struct wi_req *wr)
--{
-- struct ifreq ifr;
--
-- bzero((void*)&ifr, sizeof(ifr));
-- strlcpy(ifr.ifr_name, device->interface, sizeof(ifr.ifr_name));
-- ifr.ifr_data = (void*)wr;
--
-- if (ioctl(device->socket, SIOCGWAVELAN, &ifr) < 0)
-- return(WI_NOSUCHDEV);
--
-- return(WI_OK);
--}
++#endif
++
++#if defined(__NetBSD__)
+ static int
+ _wi_getval(const struct wi_device *device, struct wi_req *wr)
+ {
+@@ -409,10 +367,11 @@
+ return(WI_OK);
+ }
#endif
++
static int
_wi_netname(const struct wi_device *device, char *buffer, size_t len)
-@@ -423,18 +362,6 @@
+ {
+-#if defined(__FreeBSD_kernel__) && __FreeBSD_kernel_version >= 700000
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ struct ieee80211req ireq;
+
+ memset(&ireq, 0, sizeof(ireq));
+@@ -423,7 +382,7 @@
ireq.i_len = len;
if (ioctl(device->socket, SIOCG80211, &ireq) < 0)
return WI_NOSUCHDEV;
-#else
-- struct wi_req wr;
-- int result;
--
-- bzero((void *)&wr, sizeof(wr));
-- wr.wi_len = WI_MAX_DATALEN;
-- wr.wi_type = WI_RID_CURRENT_SSID;
--
-- if ((result = _wi_getval(device, &wr)) != WI_OK)
-- return(result);
--
-- strlcpy(buffer, (char *)&wr.wi_val[1], MIN(len, le16toh(wr.wi_val[0]) + 1));
- #endif
++#elif defined(__NetBSD__)
+ struct wi_req wr;
+ int result;
- return(WI_OK);
-@@ -452,21 +379,6 @@
+@@ -443,7 +402,7 @@
+ static int
+ _wi_quality(const struct wi_device *device, int *quality)
+ {
+-#if defined(__FreeBSD_kernel__) && __FreeBSD_kernel_version >= 700000
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ struct ieee80211req_scan_result req;
+ int result;
+ bzero(&req, sizeof(req));
+@@ -451,8 +410,16 @@
+ if((result = _wi_getval(device, &req)) != WI_OK)
return (result);
- *quality = req.isr_rssi;
+- *quality = req.isr_rssi;
-#else
-- struct wi_req wr;
-- int result;
--
-- bzero((void *)&wr, sizeof(wr));
-- wr.wi_len = WI_MAX_DATALEN;
-- wr.wi_type = WI_RID_COMMS_QUALITY;
--
-- if ((result = _wi_getval(device, &wr)) != WI_OK)
-- return(result);
--
-- /* according to various implementation (conky, ifconfig) :
-- wi_val[0] = quality, wi_val[1] = signal, wi_val[2] = noise
-- but my ral only shows a value for signal, and it seems it's a dB value */
-- *quality = le16toh(wr.wi_val[1]);
- #endif
++ /*
++ * FreeBSD's wlan stats:
++ * signal (in dBm) = rssi * 2 + noise;
++ * quality_bars = 4 * (signal - noise);
++ * or
++ * quality_bars = rssi * 8;
++ * but, per wi_query(), above, we need to return strength in dBm, so...
++ */
++ *quality = req.isr_rssi * 2 + req.isr_noise;
++#elif defined(__NetBSD__)
+ struct wi_req wr;
+ int result;
- return(WI_OK);
-@@ -488,18 +400,6 @@
+@@ -475,7 +442,7 @@
+ static int
+ _wi_rate(const struct wi_device *device, int *rate)
+ {
+-#if defined(__FreeBSD_kernel__) && __FreeBSD_kernel_version >= 700000
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ struct ieee80211req_scan_result req;
+ int result, i, high;
+ bzero(&req, sizeof(req));
+@@ -488,7 +455,7 @@
high = req.isr_rates[i] & IEEE80211_RATE_VAL;
*rate = high / 2;
-#else
-- struct wi_req wr;
-- int result;
--
-- bzero((void *)&wr, sizeof(wr));
-- wr.wi_len = WI_MAX_DATALEN;
-- wr.wi_type = WI_RID_CUR_TX_RATE;
--
-- if ((result = _wi_getval(device, &wr)) != WI_OK)
-- return(result);
--
-- *rate = le16toh(wr.wi_val[0]);
- #endif
++#elif defined(__NetBSD__)
+ struct wi_req wr;
+ int result;
+@@ -505,5 +472,4 @@
return(WI_OK);
+ }
+
+-#endif /* defined(__NetBSD__) || defined(__FreeBSD_kernel__) */
+ #endif
diff --git a/sysutils/xfce4-wavelan-plugin/pkg-plist b/sysutils/xfce4-wavelan-plugin/pkg-plist
index 5782bdbaba84..85662dabbcea 100644
--- a/sysutils/xfce4-wavelan-plugin/pkg-plist
+++ b/sysutils/xfce4-wavelan-plugin/pkg-plist
@@ -1,4 +1,3 @@
-lib/xfce4/panel/plugins/libwavelan.la
lib/xfce4/panel/plugins/libwavelan.so
share/locale/ar/LC_MESSAGES/xfce4-wavelan-plugin.mo
share/locale/ast/LC_MESSAGES/xfce4-wavelan-plugin.mo