aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2016-05-28 19:01:15 -0400
committerJustin M. Keyes <justinkz@gmail.com>2016-05-28 19:01:15 -0400
commitff00e289cf7d9966ae350a758ebb47b48d697c44 (patch)
tree489453d429ba4fc3af05d8d1e31da16c6cf56a93
parent7e65cc22ea288fc2375ce6872320197f04cd0035 (diff)
parent8c127c77a6f3c9d3c82f5cff23650efcfb8ca26e (diff)
downloadrneovim-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.in1
-rw-r--r--src/nvim/ex_cmds2.c34
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
}
}