From 46c6af23c38ab5ebbae49fe90fdd04bf43ab48a4 Mon Sep 17 00:00:00 2001 From: _N0x Date: Sat, 23 Oct 2021 01:04:53 +0200 Subject: [PATCH] Added network ip info --- Makefile | 2 +- cstatbar.c | 40 +++++++++++++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 3c2432e..46dd09b 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ SRC = cstatbar.c OBJ = ${SRC:.c=.o} CC = cc -CFLAGS = -std=c99 -g +CFLAGS = -std=gnu99 -g LDFLAGS = -lX11 diff --git a/cstatbar.c b/cstatbar.c index 555bf48..ca2b07d 100644 --- a/cstatbar.c +++ b/cstatbar.c @@ -16,11 +16,18 @@ #include #include + +#include +#include +#include +#include +#include +#include #include "config.h" /* enums */ -enum Icon { IconDateTime, IconBattery, IconCPU, IconRAM, IconDisk, - IconNetSpeed, IconNetSpeedUp, IconNetSpeedDown, IconNetwork, IconMusic }; +enum Icon { ICON_DATETIME, ICON_BATTERY, ICON_CPU, ICON_RAM, ICON_DISK, + ICON_NETSPEED, ICON_NETSPEED_UP, ICON_NETSPEED_DOWN, ICON_NETWORK, ICON_MUSIC }; /* function declaration */ char *concat_string (int count, ...); @@ -62,12 +69,26 @@ char return result; } - -/* Read in the IP from /proc/net/fib_trie for g_if */ +// @TODO +/* Read in the IP and display it + * maybe from /proc/net/fib_trie ?*/ char *get_networkinfo () { - return NULL; + int fd; + struct ifreq ifr; + + fd = socket(AF_INET, SOCK_DGRAM, 0); + + ifr.ifr_addr.sa_family = AF_INET; + + strncpy(ifr.ifr_name, g_if, IFNAMSIZ-1); + + ioctl(fd, SIOCGIFADDR, &ifr); + + close(fd); + + return concat_string(4, interface, " [", inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr), "]"); } @@ -105,8 +126,8 @@ char sprintf(tt, "%d", (atoi(t2) - atoi(t1)) / 1024); return concat_string(9, - icons[IconNetSpeedUp], " ", tt, KBS, " ", - icons[IconNetSpeedDown], " ", rr, KBS); + icons[ICON_NETSPEED_UP], " ", tt, KBS, " ", + icons[ICON_NETSPEED_DOWN], " ", rr, KBS); } @@ -179,9 +200,10 @@ main (int argc, char *argv[]) setup(); while(1) { - char * ns = make_stat_item(IconNetSpeed, get_networkspeed()); + char * ns = make_stat_item(ICON_NETSPEED, get_networkspeed()); + char * ni = make_stat_item(ICON_NETWORK, get_networkinfo()); - set_xroot(ns); + set_xroot(concat_string(2, ns, ni)); sleep(cycletime); }