summary refs log tree commit diff stats
path: root/plugins/sysinfo
diff options
context:
space:
mode:
authorJoshua Theze <joshua.theze@gmail.com>2013-08-12 23:41:37 -0400
committerTingPing <tingping@tingping.se>2013-08-12 23:41:37 -0400
commit721a9965aab2b49f2b1632fd2f7018ca4a1de33d (patch)
tree86c64ae617b5dc4b04c8bc0777333ec7084c92dc /plugins/sysinfo
parent0b95c1c444fd87583ae87ea3c59e883b5bfbbd0e (diff)
Fixed munging of whitespace in sysinfo's matching functions
Closes #712
Diffstat (limited to 'plugins/sysinfo')
-rw-r--r--plugins/sysinfo/match.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/plugins/sysinfo/match.c b/plugins/sysinfo/match.c
index 7d719738..2853aab6 100644
--- a/plugins/sysinfo/match.c
+++ b/plugins/sysinfo/match.c
@@ -65,14 +65,31 @@ char *pretty_freespace(const char *desc, unsigned long long *free_k, unsigned lo
         return result;
 }
 
+
 void remove_leading_whitespace(char *buffer)
 {
-	char *pos;
-        while((pos = memchr(buffer, 0x20, 1)))
+	char *buffer2 = NULL;
+	int i = 0, j = 0, ews = 0;
+
+	buffer2 = (char*)malloc(strlen(buffer) * sizeof(char));
+	if (buffer2 == NULL)
+		return;
+
+	memset (buffer2, (char)0, strlen(buffer));
+	while (i < strlen(buffer))
 	{
-		pos += 1;
-		strcpy(buffer, pos);
+		/* count tabs, spaces as whitespace. */
+		if (!(buffer[i] == (char)32 || buffer[i] == (char)9) || ews == 1)
+		{
+			ews = 1;
+			buffer2[j] = buffer[i];
+			j++;
+		}
+		i++;
 	}
+	memset (buffer, (char)0, strlen(buffer));
+	strcpy (buffer, buffer2);
+	free (buffer2);
 }
 
 char *decruft_filename(char *buffer)