From f546738d750dd45922ec852ccd1df8951a1b76e5 Mon Sep 17 00:00:00 2001 From: badaix Date: Tue, 1 Sep 2015 22:17:25 +0200 Subject: [PATCH] added uptime --- common/utils.h | 86 ++++++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/common/utils.h b/common/utils.h index 64fd228f..46de6eb1 100644 --- a/common/utils.h +++ b/common/utils.h @@ -34,19 +34,21 @@ #include #include #include +#include + // trim from start static inline std::string <rim(std::string &s) { - s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace)))); - return s; + s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace)))); + return s; } // trim from end static inline std::string &rtrim(std::string &s) { - s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun(std::isspace))).base(), s.end()); - return s; + s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun(std::isspace))).base(), s.end()); + return s; } // trim from both ends @@ -58,21 +60,21 @@ static inline std::string &trim(std::string &s) // trim from start static inline std::string ltrim_copy(const std::string &s) { - std::string str(s); - return ltrim(str); + std::string str(s); + return ltrim(str); } // trim from end static inline std::string rtrim_copy(const std::string &s) { - std::string str(s); - return rtrim(str); + std::string str(s); + return rtrim(str); } // trim from both ends static inline std::string trim_copy(const std::string &s) { - std::string str(s); + std::string str(s); return trim(str); } @@ -86,52 +88,54 @@ static std::string getHostName() } +static long uptime() +{ + struct sysinfo info; + sysinfo(&info); + return info.uptime; +} + + static std::string getMacAddress(int sock) { - struct ifreq ifr; - struct ifconf ifc; - char buf[1024]; - int success = 0; + struct ifreq ifr; + struct ifconf ifc; + char buf[1024]; + int success = 0; - if (sock < 0) + if (sock < 0) return ""; - ifc.ifc_len = sizeof(buf); - ifc.ifc_buf = buf; - if (ioctl(sock, SIOCGIFCONF, &ifc) == -1) + ifc.ifc_len = sizeof(buf); + ifc.ifc_buf = buf; + if (ioctl(sock, SIOCGIFCONF, &ifc) == -1) return ""; - struct ifreq* it = ifc.ifc_req; - const struct ifreq* const end = it + (ifc.ifc_len / sizeof(struct ifreq)); + struct ifreq* it = ifc.ifc_req; + const struct ifreq* const end = it + (ifc.ifc_len / sizeof(struct ifreq)); - for (; it != end; ++it) { - strcpy(ifr.ifr_name, it->ifr_name); - if (ioctl(sock, SIOCGIFFLAGS, &ifr) == 0) { - if (! (ifr.ifr_flags & IFF_LOOPBACK)) { // don't count loopback - if (ioctl(sock, SIOCGIFHWADDR, &ifr) == 0) { - success = 1; - break; - } - } - } - else { /* handle error */ } - } + for (; it != end; ++it) { + strcpy(ifr.ifr_name, it->ifr_name); + if (ioctl(sock, SIOCGIFFLAGS, &ifr) == 0) { + if (! (ifr.ifr_flags & IFF_LOOPBACK)) { // don't count loopback + if (ioctl(sock, SIOCGIFHWADDR, &ifr) == 0) { + success = 1; + break; + } + } + } + else { /* handle error */ } + } - if (!success) + if (!success) return ""; char mac[19]; - sprintf(mac, "%02x:%02x:%02x:%02x:%02x:%02x", - (unsigned char)ifr.ifr_hwaddr.sa_data[0], (unsigned char)ifr.ifr_hwaddr.sa_data[1], (unsigned char)ifr.ifr_hwaddr.sa_data[2], - (unsigned char)ifr.ifr_hwaddr.sa_data[3], (unsigned char)ifr.ifr_hwaddr.sa_data[4], (unsigned char)ifr.ifr_hwaddr.sa_data[5]); + sprintf(mac, "%02x:%02x:%02x:%02x:%02x:%02x", + (unsigned char)ifr.ifr_hwaddr.sa_data[0], (unsigned char)ifr.ifr_hwaddr.sa_data[1], (unsigned char)ifr.ifr_hwaddr.sa_data[2], + (unsigned char)ifr.ifr_hwaddr.sa_data[3], (unsigned char)ifr.ifr_hwaddr.sa_data[4], (unsigned char)ifr.ifr_hwaddr.sa_data[5]); return mac; } -/* std::ifstream t("/sys/class/net/eth0/address"); - std::string str((std::istreambuf_iterator(t)), - std::istreambuf_iterator()); - return trim(str); -} -*/ #endif