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