aboutsummaryrefslogtreecommitdiff
path: root/apps/systemcmds
diff options
context:
space:
mode:
authorpx4dev <px4@purgatory.org>2013-03-04 21:46:55 -0800
committerpx4dev <px4@purgatory.org>2013-03-04 21:46:55 -0800
commitb526bab1748f8a74202caf42966a5a719bba28ad (patch)
tree0cced4d0ee3b3c4628932c9f0c02d48f81b50459 /apps/systemcmds
parent42694a5736f0b4493318f0d1c03cab70752ddec7 (diff)
downloadpx4-firmware-b526bab1748f8a74202caf42966a5a719bba28ad.tar.gz
px4-firmware-b526bab1748f8a74202caf42966a5a719bba28ad.tar.bz2
px4-firmware-b526bab1748f8a74202caf42966a5a719bba28ad.zip
Remove extra spaces from mixers before processing them. This gives us some more working space on IO for mixer processing.
Diffstat (limited to 'apps/systemcmds')
-rw-r--r--apps/systemcmds/mixer/mixer.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/apps/systemcmds/mixer/mixer.c b/apps/systemcmds/mixer/mixer.c
index e2f7b5bd5..55c4f0836 100644
--- a/apps/systemcmds/mixer/mixer.c
+++ b/apps/systemcmds/mixer/mixer.c
@@ -117,7 +117,23 @@ load(const char *devname, const char *fname)
if ((strlen(line) < 2) || !isupper(line[0]) || (line[1] != ':'))
continue;
- /* XXX an optimisation here would be to strip extra whitespace */
+ /* compact whitespace in the buffer */
+ char *t, *f;
+ for (f = buf; *f != '\0'; f++) {
+ /* scan for space characters */
+ if (*f == ' ') {
+ /* look for additional spaces */
+ t = f + 1;
+ while (*t == ' ')
+ t++;
+ if (*t == '\0') {
+ /* strip trailing whitespace */
+ *f = '\0';
+ } else if (t > (f + 1)) {
+ memmove(f + 1, t, strlen(t) + 1);
+ }
+ }
+ }
/* if the line is too long to fit in the buffer, bail */
if ((strlen(line) + strlen(buf) + 1) >= sizeof(buf))