diff options
Diffstat (limited to 'src/os/shell.c')
-rw-r--r-- | src/os/shell.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/os/shell.c b/src/os/shell.c new file mode 100644 index 0000000000..b2248541b9 --- /dev/null +++ b/src/os/shell.c @@ -0,0 +1,23 @@ +#include <stdbool.h> + +#include "os/shell.h" +#include "types.h" +#include "ascii.h" + + +void shell_skip_word(char_u **ptr) +{ + char_u *p = *ptr; + bool inquote = false; + + // Move `p` to the end of shell word by advancing the pointer it while it's + // inside a quote or it's a non-whitespace character + while (*p && (inquote || (*p != ' ' && *p != TAB))) { + if (*p == '"') + // Found a quote character, switch the `inquote` flag + inquote = !inquote; + ++p; + } + + *ptr = p; +} |