diff options
author | Niklas Halle <niklas@niklashalle.net> | 2020-05-24 13:05:34 +0200 |
---|---|---|
committer | Niklas Halle <niklas@niklashalle.net> | 2020-05-24 13:05:34 +0200 |
commit | 8f33ab3bf8b7d5a256c1d996e572fa67a5578b4f (patch) | |
tree | 44c55b4679f8546f940df7191f191ed290c57f6f /02_exercise/process.c | |
parent | bed31a7634701b2c19ef8eef3ccb3039c03b1cda (diff) | |
parent | 7a9c301d10e001b92846b6b1e64136c10c4bb247 (diff) | |
download | betriebssysteme-8f33ab3bf8b7d5a256c1d996e572fa67a5578b4f.tar.gz betriebssysteme-8f33ab3bf8b7d5a256c1d996e572fa67a5578b4f.zip |
Merge remote-tracking branch 'origin/MOAR_CMAKE' into dev/niklas
Diffstat (limited to '02_exercise/process.c')
-rw-r--r-- | 02_exercise/process.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/02_exercise/process.c b/02_exercise/process.c index 8f6589d..fb55236 100644 --- a/02_exercise/process.c +++ b/02_exercise/process.c @@ -1,8 +1,8 @@ -#include <wait.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <wait.h> #include "array.h" #include "process.h" @@ -11,29 +11,33 @@ int parse_command(char const *line, char const *end, process *p) { char *part; char **local_parts; - if (arrayInit(part) != 0 || arrayInit(local_parts) != 0) { fprintf(stderr, "Failed to prepare new part / parts array whilst parsing line"); return -1; } for (size_t i = 0; line + i < end; ++i) { - char c = line[i]; - if (c == '\t' || c == ' ' || c == '\0') { + char c; + switch (c = line[i]) { + default: + arrayPush(part) = c; + break; + case ' ': + case '\t': + case '\0': if (arrayLen(part) == 0) continue; arrayPush(part) = '\0'; arrayPush(local_parts) = part; arrayInit(part); - } else { - arrayPush(part) = c; } } if (arrayLen(part) == 0) { arrayRelease(part); } else { + arrayPush(part) = '\0'; arrayPush(local_parts) = part; } |