summary refs log tree commit diff stats
path: root/plugins
diff options
context:
space:
mode:
authorPatrick Griffis <tingping@tingping.se>2016-03-06 22:59:02 -0500
committerPatrick Griffis <tingping@tingping.se>2016-03-06 23:10:04 -0500
commited029357d1fdc055f7f374fb606b1b52fcc31dca (patch)
treec911e7385099691b1165fdbafa2000234602205f /plugins
parent10fa3b1878d917ed39024eb9367793dbb39fc5f6 (diff)
sysinfo: Clean up ifdefs and handle unsupported CPU
Mentioned in #1624
Diffstat (limited to 'plugins')
-rw-r--r--plugins/sysinfo/unix/parse.c83
1 files changed, 49 insertions, 34 deletions
diff --git a/plugins/sysinfo/unix/parse.c b/plugins/sysinfo/unix/parse.c
index f41f89a7..f7419e24 100644
--- a/plugins/sysinfo/unix/parse.c
+++ b/plugins/sysinfo/unix/parse.c
@@ -40,32 +40,37 @@ int xs_parse_cpu(char *model, char *vendor, double *freq)
 #if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__alpha__) || defined(__ia64__) || defined(__parisc__) || defined(__sparc__)
 	char buffer[bsize];
 #endif
-#if defined(__powerpc__)
-	char *pos = NULL;
-#endif
-	FILE *fp = fopen("/proc/cpuinfo", "r");
+	FILE *fp;
+
+	fp = fopen("/proc/cpuinfo", "r");
 	if(fp == NULL)
 		return 1;
-	
-	#if defined(__i386__) || defined(__x86_64__)
+
+#if defined(__i386__) || defined(__x86_64__)
+
 	while(fgets(buffer, bsize, fp) != NULL)
 	{
 		find_match_char(buffer, "model name", model);
 		find_match_char(buffer, "vendor_id", vendor);
 		find_match_double(buffer, "cpu MHz", freq);
 	}
-	#endif
-	#ifdef __powerpc__
-	while(fgets(buffer, bsize, fp) != NULL)
+
+#elif defined(__powerpc__)
 	{
-		find_match_char(buffer, "cpu", model);
-		find_match_char(buffer, "machine", vendor);
-		find_match_double(buffer, "clock", freq);
+		char *pos;
+
+		while(fgets(buffer, bsize, fp) != NULL)
+		{
+			find_match_char(buffer, "cpu", model);
+			find_match_char(buffer, "machine", vendor);
+			find_match_double(buffer, "clock", freq);
+		}
+		pos = strstr(model, ",");
+		if (pos != NULL)
+		    *pos = '\0';
 	}
-	pos = strstr(model, ",");
-	if (pos != NULL) *pos = '\0';
-	#endif
-	#ifdef __alpha__
+#elif defined( __alpha__)
+
 	while(fgets(buffer, bsize, fp) != NULL)
 	{
 		find_match_char(buffer, "cpu model", model);
@@ -73,37 +78,47 @@ int xs_parse_cpu(char *model, char *vendor, double *freq)
 		find_match_double(buffer, "cycle frequency [Hz]", freq);
 	}
 	*freq = *freq / 1000000;
-	#endif
-	#ifdef __ia64__
+
+#elif defined(__ia64__)
+
 	while(fgets(buffer, bsize, fp) != NULL)
 	{
 		find_match_char(buffer, "model", model);
 		find_match_char(buffer, "vendor", vendor);
 		find_match_double(buffer, "cpu MHz", freq);
 	}
-	#endif
-	#ifdef __parisc__
+
+#elif defined(__parisc__)
+
 	while(fgets(buffer, bsize, fp) != NULL)
 	{
 		find_match_char(buffer, "cpu  ", model);
 		find_match_char(buffer, "cpu family", vendor);
 		find_match_double(buffer, "cpu MHz", freq);
 	}
-	#endif
-	#ifdef __sparc__
-	DIR *dir;
-	struct dirent *entry;
-	FILE *fp2;
-	while(fgets(buffer, bsize, fp) != NULL)
-	{
-		find_match_char(buffer, "cpu	", model);
-		find_match_char(buffer, "type	", vendor);
-		find_match_double_hex(buffer, "Cpu0ClkTck", freq);
-	}
-	*freq = *freq / 1000000;
-	#endif
+
+#elif defined(__sparc__)
+    {
+	    DIR *dir;
+	    struct dirent *entry;
+	    FILE *fp2;
+
+	    while(fgets(buffer, bsize, fp) != NULL)
+	    {
+		    find_match_char(buffer, "cpu	", model);
+		    find_match_char(buffer, "type	", vendor);
+		    find_match_double_hex(buffer, "Cpu0ClkTck", freq);
+	    }
+	    *freq = *freq / 1000000;
+    }
+#else
+
+    fclose(fp);
+    return 1; /* Unsupported */
+
+#endif
+
 	fclose(fp);
-	
 	return 0;
 }