diff options
Diffstat (limited to 'src/nvim/os/shell.h')
-rw-r--r-- | src/nvim/os/shell.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/nvim/os/shell.h b/src/nvim/os/shell.h new file mode 100644 index 0000000000..776c36d384 --- /dev/null +++ b/src/nvim/os/shell.h @@ -0,0 +1,45 @@ +#ifndef NEOVIM_OS_SHELL_H +#define NEOVIM_OS_SHELL_H + +#include <stdbool.h> + +#include "types.h" + +// Flags for mch_call_shell() second argument +typedef enum { + kShellOptFilter = 1, ///< filtering text + kShellOptExpand = 2, ///< expanding wildcards + kShellOptCooked = 4, ///< set term to cooked mode + kShellOptDoOut = 8, ///< redirecting output + kShellOptSilent = 16, ///< don't print error returned by command + kShellOptRead = 32, ///< read lines and insert into buffer + kShellOptWrite = 64, ///< write lines from buffer + kShellOptHideMess = 128, ///< previously a global variable from os_unix.c +} ShellOpts; + +/// Builds the argument vector for running the shell configured in `sh` +/// ('shell' option), optionally with a command that will be passed with `shcf` +/// ('shellcmdflag'). +/// +/// @param cmd Command string. If NULL it will run an interactive shell. +/// @param extra_shell_opt Extra argument to the shell. If NULL it is ignored +/// @return A newly allocated argument vector. It must be freed with +/// `shell_free_argv` when no longer needed. +char ** shell_build_argv(char_u *cmd, char_u *extra_shell_arg); + +/// Releases the memory allocated by `shell_build_argv`. +/// +/// @param argv The argument vector. +void shell_free_argv(char **argv); + +/// Calls the user shell for running a command, interactive session or +/// wildcard expansion. It uses the shell set in the `sh` option. +/// +/// @param cmd The command to be executed. If NULL it will run an interactive +/// shell +/// @param opts Various options that control how the shell will work +/// @param extra_shell_arg Extra argument to be passed to the shell +int os_call_shell(char_u *cmd, ShellOpts opts, char_u *extra_shell_arg); + +#endif // NEOVIM_OS_SHELL_H + |