diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2017-07-04 23:50:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-07-04 23:50:57 +0200 |
| commit | 69f0847ccc79acabb1cad5b1b54c906973946d81 (patch) | |
| tree | f44ee09707eacbe75c8e3ff1be4ad53e0f5080ef /src/nvim/main.c | |
| parent | 1b70a1da0438018475a73e23015421b2212b34df (diff) | |
| parent | ce30998221a53e208a6a68b4b0a3f76db9a5eac3 (diff) | |
| download | rneovim-69f0847ccc79acabb1cad5b1b54c906973946d81.tar.gz rneovim-69f0847ccc79acabb1cad5b1b54c906973946d81.tar.bz2 rneovim-69f0847ccc79acabb1cad5b1b54c906973946d81.zip | |
Merge #6959 from ZyX-I/pvs-fixes
Diffstat (limited to 'src/nvim/main.c')
| -rw-r--r-- | src/nvim/main.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c index 19a661d7db..7dcf00c26b 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -57,6 +57,7 @@ #include "nvim/os/input.h" #include "nvim/os/os.h" #include "nvim/os/time.h" +#include "nvim/os/fileio.h" #include "nvim/event/loop.h" #include "nvim/os/signal.h" #include "nvim/event/process.h" @@ -766,16 +767,26 @@ static void command_line_scan(mparm_T *parmp) version(); mch_exit(0); } else if (STRICMP(argv[0] + argv_idx, "api-info") == 0) { - msgpack_sbuffer* b = msgpack_sbuffer_new(); - msgpack_packer* p = msgpack_packer_new(b, msgpack_sbuffer_write); - Object md = DICTIONARY_OBJ(api_metadata()); - msgpack_rpc_from_object(md, p); + FileDescriptor fp; + const int fof_ret = file_open_fd(&fp, OS_STDOUT_FILENO, true); + msgpack_packer *p = msgpack_packer_new(&fp, msgpack_file_write); + + if (fof_ret != 0) { + emsgf(_("E5421: Failed to open stdin: %s"), os_strerror(fof_ret)); + } - for (size_t i = 0; i < b->size; i++) { - putchar(b->data[i]); + if (p == NULL) { + emsgf(_(e_outofmem)); } + Object md = DICTIONARY_OBJ(api_metadata()); + msgpack_rpc_from_object(md, p); + msgpack_packer_free(p); + const int ff_ret = file_flush(&fp); + if (ff_ret < 0) { + msgpack_file_write_error(ff_ret); + } mch_exit(0); } else if (STRICMP(argv[0] + argv_idx, "headless") == 0) { parmp->headless = true; |
