diff options
Diffstat (limited to 'src/nvim/os/shell.c')
-rw-r--r-- | src/nvim/os/shell.c | 85 |
1 files changed, 36 insertions, 49 deletions
diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c index 2974245857..f0d446b4c5 100644 --- a/src/nvim/os/shell.c +++ b/src/nvim/os/shell.c @@ -1,36 +1,35 @@ // This is an open source non-commercial project. Dear PVS-Studio, please check // it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com -#include <string.h> #include <assert.h> #include <stdbool.h> #include <stdlib.h> - +#include <string.h> #include <uv.h> #include "nvim/ascii.h" -#include "nvim/fileio.h" -#include "nvim/lib/kvec.h" -#include "nvim/log.h" -#include "nvim/event/loop.h" +#include "nvim/charset.h" #include "nvim/event/libuv_process.h" +#include "nvim/event/loop.h" #include "nvim/event/rstream.h" #include "nvim/ex_cmds.h" +#include "nvim/fileio.h" +#include "nvim/lib/kvec.h" +#include "nvim/log.h" +#include "nvim/main.h" +#include "nvim/memline.h" +#include "nvim/memory.h" +#include "nvim/message.h" #include "nvim/misc1.h" +#include "nvim/option_defs.h" #include "nvim/os/shell.h" #include "nvim/os/signal.h" #include "nvim/path.h" -#include "nvim/types.h" -#include "nvim/main.h" -#include "nvim/vim.h" -#include "nvim/message.h" -#include "nvim/memory.h" -#include "nvim/ui.h" #include "nvim/screen.h" -#include "nvim/memline.h" -#include "nvim/option_defs.h" -#include "nvim/charset.h" #include "nvim/strings.h" +#include "nvim/types.h" +#include "nvim/ui.h" +#include "nvim/vim.h" #define DYNAMIC_BUFFER_INIT { NULL, 0, 0 } #define NS_1_SECOND 1000000000U // 1 second, in nanoseconds @@ -47,8 +46,7 @@ typedef struct { # include "os/shell.c.generated.h" #endif -static void save_patterns(int num_pat, char_u **pat, int *num_file, - char_u ***file) +static void save_patterns(int num_pat, char_u **pat, int *num_file, char_u ***file) { *file = xmalloc((size_t)num_pat * sizeof(char_u *)); for (int i = 0; i < num_pat; i++) { @@ -99,22 +97,21 @@ static bool have_dollars(int num, char_u **file) /// copied into *file. /// /// @returns OK for success or FAIL for error. -int os_expand_wildcards(int num_pat, char_u **pat, int *num_file, - char_u ***file, int flags) +int os_expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file, int flags) FUNC_ATTR_NONNULL_ARG(3) FUNC_ATTR_NONNULL_ARG(4) { int i; size_t len; - char_u *p; + char_u *p; bool dir; char_u *extra_shell_arg = NULL; ShellOpts shellopts = kShellOptExpand | kShellOptSilent; int j; - char_u *tempname; - char_u *command; - FILE *fd; - char_u *buffer; + char_u *tempname; + char_u *command; + FILE *fd; + char_u *buffer; #define STYLE_ECHO 0 // use "echo", the default #define STYLE_GLOB 1 // use "glob", for csh #define STYLE_VIMGLOB 2 // use "vimglob", for Posix sh @@ -215,7 +212,7 @@ int os_expand_wildcards(int num_pat, char_u **pat, int *num_file, } if (is_fish_shell) { - len += sizeof("egin;"" end") - 1; + len += sizeof("egin;" " end") - 1; } command = xmalloc(len); @@ -319,9 +316,9 @@ int os_expand_wildcards(int num_pat, char_u **pat, int *num_file, if (shell_style == STYLE_PRINT) { extra_shell_arg = (char_u *)"-G"; // Use zsh NULL_GLOB option - // If we use -f then shell variables set in .cshrc won't get expanded. - // vi can do it, so we will too, but it is only necessary if there is a "$" - // in one of the patterns, otherwise we can still use the fast option. + // If we use -f then shell variables set in .cshrc won't get expanded. + // vi can do it, so we will too, but it is only necessary if there is a "$" + // in one of the patterns, otherwise we can still use the fast option. } else if (shell_style == STYLE_GLOB && !have_dollars(num_pat, pat)) { extra_shell_arg = (char_u *)"-f"; // Use csh fast option } @@ -409,7 +406,7 @@ int os_expand_wildcards(int num_pat, char_u **pat, int *num_file, } p = skipwhite(p); // skip to next entry } - // file names are separated with NL + // file names are separated with NL } else if (shell_style == STYLE_BT || shell_style == STYLE_VIMGLOB) { buffer[len] = NUL; // make sure the buffer ends in NUL p = buffer; @@ -422,7 +419,7 @@ int os_expand_wildcards(int num_pat, char_u **pat, int *num_file, } p = skipwhite(p); // skip leading white space } - // file names are separated with NUL + // file names are separated with NUL } else { // Some versions of zsh use spaces instead of NULs to separate // results. Only do this when there is no NUL before the end of the @@ -705,22 +702,14 @@ int os_call_shell(char_u *cmd, ShellOpts opts, char_u *extra_args) /// returned buffer is not NULL) /// @return the return code of the process, -1 if the process couldn't be /// started properly -int os_system(char **argv, - const char *input, - size_t len, - char **output, +int os_system(char **argv, const char *input, size_t len, char **output, size_t *nread) FUNC_ATTR_NONNULL_ARG(1) { return do_os_system(argv, input, len, output, nread, true, false); } -static int do_os_system(char **argv, - const char *input, - size_t len, - char **output, - size_t *nread, - bool silent, - bool forward_output) +static int do_os_system(char **argv, const char *input, size_t len, char **output, size_t *nread, + bool silent, bool forward_output) { out_data_decide_throttle(0); // Initialize throttle decider. out_data_ring(NULL, 0); // Initialize output ring-buffer. @@ -851,8 +840,7 @@ static void dynamic_buffer_ensure(DynamicBuffer *buf, size_t desired) buf->data = xrealloc(buf->data, buf->cap); } -static void system_data_cb(Stream *stream, RBuffer *buf, size_t count, - void *data, bool eof) +static void system_data_cb(Stream *stream, RBuffer *buf, size_t count, void *data, bool eof) { DynamicBuffer *dbuf = data; @@ -1015,8 +1003,7 @@ end: ui_flush(); } -static void out_data_cb(Stream *stream, RBuffer *buf, size_t count, void *data, - bool eof) +static void out_data_cb(Stream *stream, RBuffer *buf, size_t count, void *data, bool eof) { size_t cnt; char *ptr = rbuffer_read_ptr(buf, &cnt); @@ -1049,10 +1036,10 @@ static size_t tokenize(const char_u *const str, char **const argv) FUNC_ATTR_NONNULL_ARG(1) { size_t argc = 0; - const char *p = (const char *) str; + const char *p = (const char *)str; while (*p != NUL) { - const size_t len = word_length((const char_u *) p); + const size_t len = word_length((const char_u *)p); if (argv != NULL) { // Fill the slot @@ -1060,7 +1047,7 @@ static size_t tokenize(const char_u *const str, char **const argv) } argc++; - p = (const char *) skipwhite((char_u *) (p + len)); + p = (const char *)skipwhite((char_u *)(p + len)); } return argc; @@ -1115,7 +1102,7 @@ static void read_input(DynamicBuffer *buf) dynamic_buffer_ensure(buf, buf->len + len); buf->data[buf->len++] = NUL; } else { - char_u *s = vim_strchr(lp + written, NL); + char_u *s = vim_strchr(lp + written, NL); len = s == NULL ? l : (size_t)(s - (lp + written)); dynamic_buffer_ensure(buf, buf->len + len); memcpy(buf->data + buf->len, lp + written, len); |