diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2016-05-28 19:01:15 -0400 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2016-05-28 19:01:15 -0400 |
commit | ff00e289cf7d9966ae350a758ebb47b48d697c44 (patch) | |
tree | 489453d429ba4fc3af05d8d1e31da16c6cf56a93 | |
parent | 7e65cc22ea288fc2375ce6872320197f04cd0035 (diff) | |
parent | 8c127c77a6f3c9d3c82f5cff23650efcfb8ca26e (diff) | |
download | rneovim-ff00e289cf7d9966ae350a758ebb47b48d697c44.tar.gz rneovim-ff00e289cf7d9966ae350a758ebb47b48d697c44.tar.bz2 rneovim-ff00e289cf7d9966ae350a758ebb47b48d697c44.zip |
Merge pull request #4832 from justinmk/do_source_fuss
do_source: less fuss about fopen_noinh_readbin
-rw-r--r-- | config/config.h.in | 1 | ||||
-rw-r--r-- | src/nvim/ex_cmds2.c | 34 |
2 files changed, 11 insertions, 24 deletions
diff --git a/config/config.h.in b/config/config.h.in index c2f52d8c7e..867278de0d 100644 --- a/config/config.h.in +++ b/config/config.h.in @@ -49,7 +49,6 @@ #cmakedefine UNIX #cmakedefine USE_FNAME_CASE -#define FEAT_CSCOPE #cmakedefine FEAT_TUI #ifndef UNIT_TESTING diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c index 5fe6209a0a..d167c28182 100644 --- a/src/nvim/ex_cmds2.c +++ b/src/nvim/ex_cmds2.c @@ -2481,32 +2481,31 @@ int source_level(void *cookie) return ((struct source_cookie *)cookie)->level; } - -#if (defined(WIN32) && defined(FEAT_CSCOPE)) || defined(HAVE_FD_CLOEXEC) -# define USE_FOPEN_NOINH -/* - * Special function to open a file without handle inheritance. - * When possible the handle is closed on exec(). - */ +/// Special function to open a file without handle inheritance. +/// If possible the handle is closed on exec(). static FILE *fopen_noinh_readbin(char *filename) { +#ifdef WIN32 + int fd_tmp = os_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0); +#else int fd_tmp = os_open(filename, O_RDONLY, 0); +#endif - if (fd_tmp < 0) + if (fd_tmp < 0) { return NULL; + } -# ifdef HAVE_FD_CLOEXEC +#ifdef HAVE_FD_CLOEXEC { int fdflags = fcntl(fd_tmp, F_GETFD); if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0) { (void)fcntl(fd_tmp, F_SETFD, fdflags | FD_CLOEXEC); } } -# endif +#endif return fdopen(fd_tmp, READBIN); } -#endif /* @@ -2560,11 +2559,7 @@ do_source ( /* Apply SourcePre autocommands, they may get the file. */ apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf); -#ifdef USE_FOPEN_NOINH cookie.fp = fopen_noinh_readbin((char *)fname_exp); -#else - cookie.fp = mch_fopen((char *)fname_exp, READBIN); -#endif if (cookie.fp == NULL && check_other) { /* * Try again, replacing file name ".vimrc" by "_vimrc" or vice versa, @@ -2573,15 +2568,8 @@ do_source ( p = path_tail(fname_exp); if ((*p == '.' || *p == '_') && (STRICMP(p + 1, "nvimrc") == 0 || STRICMP(p + 1, "exrc") == 0)) { - if (*p == '_') - *p = '.'; - else - *p = '_'; -#ifdef USE_FOPEN_NOINH + *p = (*p == '_') ? '.' : '_'; cookie.fp = fopen_noinh_readbin((char *)fname_exp); -#else - cookie.fp = mch_fopen((char *)fname_exp, READBIN); -#endif } } |