added ip address function

This commit is contained in:
Aaron Marcher
2016-06-08 09:42:32 +02:00
committed by Aaron Marcher (drkhsh)
parent 5a943fa59c
commit 67203c6660
3 changed files with 47 additions and 2 deletions

View File

@ -2,8 +2,11 @@
/* global libraries */
#include <alsa/asoundlib.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include <ifaddrs.h>
#include <locale.h>
#include <netdb.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@ -11,6 +14,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <sys/socket.h>
#include <time.h>
#include <unistd.h>
#include <X11/Xlib.h>
@ -204,6 +208,47 @@ entropy(const char *null)
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 */
char *
ram_perc(const char *null)
@ -257,7 +302,6 @@ temp(const char *file)
return smprintf("%d°C", temperature / 1000);
}
/* alsa volume percentage */
char *
vol_perc(const char *soundcard)