diff options
author | Joshua Theze <joshua.theze@gmail.com> | 2013-08-12 23:41:37 -0400 |
---|---|---|
committer | TingPing <tingping@tingping.se> | 2013-08-12 23:41:37 -0400 |
commit | 721a9965aab2b49f2b1632fd2f7018ca4a1de33d (patch) | |
tree | 86c64ae617b5dc4b04c8bc0777333ec7084c92dc /plugins/sysinfo/match.c | |
parent | 0b95c1c444fd87583ae87ea3c59e883b5bfbbd0e (diff) |
Fixed munging of whitespace in sysinfo's matching functions
Closes #712
Diffstat (limited to 'plugins/sysinfo/match.c')
-rw-r--r-- | plugins/sysinfo/match.c | 25 |
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) |