From 8402d701a9739bb207fe1edb8e682b3a95de4e51 Mon Sep 17 00:00:00 2001 From: michael Date: Fri, 23 Jan 2009 08:10:04 +0000 Subject: wifi ioctl() fixed (ticket #144) git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@978 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- plugin_wireless.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/plugin_wireless.c b/plugin_wireless.c index 2983ce1..25adf26 100644 --- a/plugin_wireless.c +++ b/plugin_wireless.c @@ -54,12 +54,13 @@ #include #include #include +#include +#include #include #include #include #include -#include #include "debug.h" #include "plugin.h" @@ -119,11 +120,19 @@ int do_ioctl(const int sock, /* Socket to the kernel */ const int request, /* WE ID */ struct iwreq *pwrq) { /* Fixed part of the request */ + int ret; + /* Set device name */ strncpy(pwrq->ifr_name, ifname, IFNAMSIZ); /* Do the request */ - return (ioctl(sock, request, pwrq)); + ret = ioctl(sock, request, pwrq); + if (ret < 0) { + debug("ioctl(0x%04x) failed: %d '%s'", request, errno, strerror(errno)); + } + + return ret; + } int get_range_info(const int sock, const char *ifname, struct iw_range *range) @@ -455,7 +464,7 @@ static int get_stats(const char *dev, const char *key) } req.u.data.pointer = (caddr_t) & stats; - req.u.data.length = 0; + req.u.data.length = sizeof(stats); req.u.data.flags = 1; /* Clear updated flag */ if (do_ioctl(sock, dev, SIOCGIWSTATS, &req) < 0) { -- cgit v1.2.3