From 1e166c13aaabe8d2aad1d604c77020a14dc577cd Mon Sep 17 00:00:00 2001 From: open-license-manager <rillf@maildrop.cc> Date: 周二, 16 9月 2014 06:22:21 +0800 Subject: [PATCH] refactorings --- src/library/os/linux/os-linux.c | 57 +++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 41 insertions(+), 16 deletions(-) diff --git a/src/library/os/linux/os-linux.c b/src/library/os/linux/os-linux.c index b791859..2373985 100644 --- a/src/library/os/linux/os-linux.c +++ b/src/library/os/linux/os-linux.c @@ -1,4 +1,6 @@ +#ifndef _GNU_SOURCE #define _GNU_SOURCE /* To get defns of NI_MAXSERV and NI_MAXHOST */ +#endif #include <arpa/inet.h> #include <sys/socket.h> #include <netdb.h> @@ -20,7 +22,7 @@ #include <sys/ioctl.h> #include <sys/stat.h> #include "../os.h" -#include "../../base/public-key.h" +#include "public-key.h" #include <openssl/evp.h> #include <openssl/bio.h> @@ -30,6 +32,10 @@ #include <mntent.h> #include <dirent.h> #include <stdio.h> + +#include <dbus-1.0/dbus/dbus.h> +#include <sys/utsname.h> + static int ifname_position(char *ifnames, char * ifname, int ifnames_max) { int i, position; @@ -44,23 +50,23 @@ } -FUNCTION_RETURN getAdapterInfos(AdapterInfo * adapterInfos, +FUNCTION_RETURN getAdapterInfos(OsAdapterInfo * adapterInfos, size_t * adapter_info_size) { - FUNCTION_RETURN f_return = OK; + FUNCTION_RETURN f_return = FUNC_RET_OK; struct ifaddrs *ifaddr, *ifa; - int family, i, n, if_name_position; + int family, i, n, if_name_position; unsigned int if_num, if_max; //char host[NI_MAXHOST]; char *ifnames; if (getifaddrs(&ifaddr) == -1) { perror("getifaddrs"); - return ERROR; + return FUNC_RET_ERROR; } if (adapterInfos != NULL) { - memset(adapterInfos, 0, (*adapter_info_size) * sizeof(AdapterInfo)); + memset(adapterInfos, 0, (*adapter_info_size) * sizeof(OsAdapterInfo)); } /* count the maximum number of interfaces */ @@ -113,7 +119,7 @@ sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6), host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST); - */ + #ifdef _DEBUG s = getnameinfo(ifa->ifa_addr, sizeof(struct sockaddr_in), host, NI_MAXHOST, @@ -123,7 +129,7 @@ } printf("\t\taddress: <%s>\n", host); #endif - +*/ if (adapterInfos != NULL && if_name_position < *adapter_info_size) { struct sockaddr_in *s1 = (struct sockaddr_in*) ifa->ifa_addr; in_addr_t iaddr = s1->sin_addr.s_addr; @@ -156,9 +162,9 @@ *adapter_info_size = if_num; if (adapterInfos == NULL) { - f_return = OK; + f_return = FUNC_RET_OK; } else if (*adapter_info_size < if_num) { - f_return = BUFFER_TOO_SMALL; + f_return = FUNC_RET_BUFFER_TOO_SMALL; } freeifaddrs(ifaddr); free(ifnames); @@ -235,7 +241,7 @@ aFile = setmntent("/proc/mounts", "r"); if (aFile == NULL) { /*proc not mounted*/ - return ERROR; + return FUNC_RET_ERROR; } currentDrive = 0; @@ -277,7 +283,7 @@ if (diskInfos == NULL) { *disk_info_size = currentDrive; free(tmpDrives); - result = OK; + result = FUNC_RET_OK; } else if (*disk_info_size >= currentDrive) { disk_by_uuid_dir = opendir("/dev/disk/by-uuid"); if (disk_by_uuid_dir == NULL) { @@ -285,9 +291,9 @@ printf("Open /dev/disk/by-uuid fail"); #endif free(statDrives); - return ERROR; + return FUNC_RET_ERROR; } - result = OK; + result = FUNC_RET_OK; *disk_info_size = currentDrive; while ((dir = readdir(disk_by_uuid_dir)) != NULL) { strcpy(cur_dir, "/dev/disk/by-uuid/"); @@ -331,7 +337,7 @@ closedir(disk_by_label); } } else { - result = BUFFER_TOO_SMALL; + result = FUNC_RET_BUFFER_TOO_SMALL; } /* FILE *mounts = fopen(_PATH_MOUNTED, "r"); @@ -382,7 +388,7 @@ identifier[i * 2] = cpuinfo[i] & 0xFF; identifier[i * 2 + 1] = (cpuinfo[i] & 0xFF00) >> 8; } - return OK; + return FUNC_RET_OK; } VIRTUALIZATION getVirtualization() { @@ -408,3 +414,22 @@ return NONE; } +FUNCTION_RETURN getMachineName(unsigned char identifier[6]) { + static struct utsname u; + + if (uname(&u) < 0) { + return FUNC_RET_ERROR; + } + memcpy(identifier, u.nodename, 6); + return FUNC_RET_OK; +} + +FUNCTION_RETURN getOsSpecificIdentifier(unsigned char identifier[6]) { + char* dbus_id = dbus_get_local_machine_id(); + if (dbus_id == NULL) { + return FUNC_RET_ERROR; + } + memcpy(identifier, dbus_id, 6); + dbus_free(dbus_id); + return FUNC_RET_OK; +} -- Gitblit v1.9.1