added ip address function
This commit is contained in:
parent
5a943fa59c
commit
67203c6660
3 changed files with 47 additions and 2 deletions
|
@ -17,6 +17,7 @@ static unsigned int update_interval = 1;
|
||||||
- datetime (date and time) [argument: format]
|
- datetime (date and time) [argument: format]
|
||||||
- disk_perc (disk usage in percent) [argument: mountpoint]
|
- disk_perc (disk usage in percent) [argument: mountpoint]
|
||||||
- entropy (available entropy) [argument: NULL]
|
- entropy (available entropy) [argument: NULL]
|
||||||
|
- ip (ip address) [argument: interface]
|
||||||
- ram_perc (ram usage in percent) [argument: NULL]
|
- ram_perc (ram usage in percent) [argument: NULL]
|
||||||
- temp (temperature in degrees) [argument: temperature file]
|
- temp (temperature in degrees) [argument: temperature file]
|
||||||
- vol_perc (alsa volume and mute status in percent) [argument: soundcard]
|
- vol_perc (alsa volume and mute status in percent) [argument: soundcard]
|
||||||
|
@ -30,6 +31,5 @@ static const struct arg args[] = {
|
||||||
{ ram_perc, "ram %3s | ", NULL },
|
{ ram_perc, "ram %3s | ", NULL },
|
||||||
{ vol_perc, "vol %4s | ", "default" },
|
{ vol_perc, "vol %4s | ", "default" },
|
||||||
{ disk_perc, "ssd %3s | ", "/" },
|
{ disk_perc, "ssd %3s | ", "/" },
|
||||||
{ entropy, "crypt %s | ", NULL },
|
|
||||||
{ datetime, "%s", "%y-%m-%d %H:%M:%S" },
|
{ datetime, "%s", "%y-%m-%d %H:%M:%S" },
|
||||||
};
|
};
|
||||||
|
|
46
slstatus.c
46
slstatus.c
|
@ -2,8 +2,11 @@
|
||||||
|
|
||||||
/* global libraries */
|
/* global libraries */
|
||||||
#include <alsa/asoundlib.h>
|
#include <alsa/asoundlib.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <ifaddrs.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
#include <netdb.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -11,6 +14,7 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/statvfs.h>
|
#include <sys/statvfs.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
@ -204,6 +208,47 @@ entropy(const char *null)
|
||||||
return smprintf("%d", entropy);
|
return smprintf("%d", entropy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ip address */
|
||||||
|
char *
|
||||||
|
ip(const char *interface)
|
||||||
|
{
|
||||||
|
struct ifaddrs *ifaddr, *ifa;
|
||||||
|
int s;
|
||||||
|
char host[NI_MAXHOST];
|
||||||
|
|
||||||
|
/* check if getting ip address works */
|
||||||
|
if (getifaddrs(&ifaddr) == -1)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Error getting IP address.");
|
||||||
|
return smprintf("n/a");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get the ip address */
|
||||||
|
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next)
|
||||||
|
{
|
||||||
|
if (ifa->ifa_addr == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
s = getnameinfo(ifa->ifa_addr, sizeof(struct sockaddr_in), host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
|
||||||
|
|
||||||
|
if ((strcmp(ifa->ifa_name, interface) == 0) && (ifa->ifa_addr->sa_family == AF_INET))
|
||||||
|
{
|
||||||
|
if (s != 0)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Error getting IP address.");
|
||||||
|
return smprintf("n/a");
|
||||||
|
}
|
||||||
|
return smprintf("%s", host);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* free the address */
|
||||||
|
freeifaddrs(ifaddr);
|
||||||
|
|
||||||
|
/* return n/a if nothing works */
|
||||||
|
return smprintf("n/a");
|
||||||
|
}
|
||||||
|
|
||||||
/* ram percentage */
|
/* ram percentage */
|
||||||
char *
|
char *
|
||||||
ram_perc(const char *null)
|
ram_perc(const char *null)
|
||||||
|
@ -257,7 +302,6 @@ temp(const char *file)
|
||||||
return smprintf("%d°C", temperature / 1000);
|
return smprintf("%d°C", temperature / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* alsa volume percentage */
|
/* alsa volume percentage */
|
||||||
char *
|
char *
|
||||||
vol_perc(const char *soundcard)
|
vol_perc(const char *soundcard)
|
||||||
|
|
|
@ -19,6 +19,7 @@ char *cpu_perc(const char *);
|
||||||
char *datetime(const char *);
|
char *datetime(const char *);
|
||||||
char *disk_perc(const char *);
|
char *disk_perc(const char *);
|
||||||
char *entropy(const char*);
|
char *entropy(const char*);
|
||||||
|
char *ip(const char *);
|
||||||
char *ram_perc(const char *);
|
char *ram_perc(const char *);
|
||||||
char *temp(const char *);
|
char *temp(const char *);
|
||||||
char *vol_perc(const char *);
|
char *vol_perc(const char *);
|
||||||
|
|
Loading…
Reference in a new issue