summaryrefslogtreecommitdiff
path: root/wmiistatus.c
diff options
context:
space:
mode:
authorMichael Stapelberg <michael+git@stapelberg.de>2009-01-25 19:43:02 +0100
committerMichael Stapelberg <michael+git@stapelberg.de>2009-01-25 19:43:02 +0100
commita9bf807cddceaf0dcaf774cf4f020607e77f84cc (patch)
tree06bc6c04668d116296d16e02592117424fb8491d /wmiistatus.c
parent5aa763929774349c7b5b1927b1ba15c9d7ff74dd (diff)
Beautify wireless code
Diffstat (limited to 'wmiistatus.c')
-rw-r--r--wmiistatus.c42
1 files changed, 16 insertions, 26 deletions
diff --git a/wmiistatus.c b/wmiistatus.c
index 696f766..2f87d92 100644
--- a/wmiistatus.c
+++ b/wmiistatus.c
@@ -100,7 +100,7 @@ static void cleanup_rbar_dir() {
/*
* Creates the specified file in wmii's /rbar directory with
* correct modes and initializes colors if colormode is enabled
- * '
+ *
*/
static void create_file(const char *name) {
char pathbuf[strlen(wmii_path)+256+1];
@@ -200,7 +200,7 @@ void die(const char *fmt, ...) {
}
/*
- * Skip the given character for maximum 'amount' times, returns
+ * Skip the given character for exactly 'amount' times, returns
* a pointer to the first non-'character' character in 'input'.
*
*/
@@ -298,34 +298,24 @@ static char *get_wireless_info() {
(void)read(fd, buf, sizeof(buf));
(void)close(fd);
- interfaces = skip_character(buf, '\n', 2) + 1;
- while (interfaces < buf+strlen(buf)) {
+ interfaces = skip_character(buf, '\n', 1) + 1;
+ while ((interfaces = skip_character(interfaces, '\n', 1)+1) < buf+strlen(buf)) {
while (isspace((int)*interfaces))
interfaces++;
- if (strncmp(interfaces, wlan_interface, strlen(wlan_interface)) == 0) {
- int quality;
- /* Skip status field (0000) */
- interfaces += strlen(wlan_interface) + 2;
- interfaces = skip_character(interfaces, ' ', 1);
- while (isspace((int)*interfaces))
- interfaces++;
- quality = atoi(interfaces);
- /* For some reason, I get 255 sometimes */
- if ((quality == 255) || (quality == 0)) {
+ if (!BEGINS_WITH(interfaces, wlan_interface))
+ continue;
+ int quality;
+ if (sscanf(interfaces, "%*[^:]: 0000 %d", &quality) != 1)
+ continue;
+ /* for some reason, I get 255 sometimes */
+ if ((quality == 255) || (quality == 0)) {
if (use_colors)
- (void)snprintf(part, sizeof(part), "%s%s", concat("#FF0000 ", wmii_normcolors), " W: down");
+ (void)snprintf(part, sizeof(part), "%s%s",
+ concat("#FF0000 ", wmii_normcolors), " W: down");
else (void)snprintf(part, sizeof(part), "W: down");
-
- } else {
- const char *ip_address;
- (void)snprintf(part, sizeof(part), "W: (%03d%%) ", quality);
- ip_address = get_ip_address(wlan_interface);
- strcpy(part+strlen(part), ip_address);
- }
-
- return part;
- }
- interfaces = skip_character(interfaces, '\n', 1) + 1;
+ } else (void)snprintf(part, sizeof(part), "W: (%03d%%) %s",
+ quality, get_ip_address(wlan_interface));
+ return part;
}
return part;