diff options
author | Bram Moolenaar <Bram@vim.org> | 2010-01-19 16:22:03 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2010-01-19 16:22:03 +0100 |
commit | 6b29b0e809b14e41def8976190d24f0babddd95c (patch) | |
tree | d5e49f362a0c502d5ebbbb73d756d8206b450b92 /src/ex_cmds2.c | |
parent | 3d63e3f1607b7081744898b9b1021417e4580df8 (diff) | |
download | vim-git-6b29b0e809b14e41def8976190d24f0babddd95c.tar.gz |
updated for version 7.2.338v7.2.338
Problem: Part of FD_CLOEXEC change is missing.
Solution: Include source file skipped because of typo.
Diffstat (limited to 'src/ex_cmds2.c')
-rw-r--r-- | src/ex_cmds2.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c index 39ed496fc..6adb07188 100644 --- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -2802,20 +2802,35 @@ source_level(cookie) static char_u *get_one_sourceline __ARGS((struct source_cookie *sp)); -#if defined(WIN32) && defined(FEAT_CSCOPE) +#if (defined(WIN32) && defined(FEAT_CSCOPE)) || defined(HAVE_FD_CLOEXEC) +# define USE_FOPEN_NOINH static FILE *fopen_noinh_readbin __ARGS((char *filename)); /* * Special function to open a file without handle inheritance. + * When possible the handle is closed on exec(). */ static FILE * fopen_noinh_readbin(filename) char *filename; { - int fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0); + int fd_tmp = mch_open(filename, O_RDONLY +# ifdef WIN32 + O_BINARY | O_NOINHERIT +# endif + , 0); if (fd_tmp == -1) return NULL; + +# ifdef HAVE_FD_CLOEXEC + { + int fdflags = fcntl(fd_tmp, F_GETFD); + if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0) + fcntl(fd_tmp, F_SETFD, fdflags | FD_CLOEXEC); + } +# endif + return fdopen(fd_tmp, READBIN); } #endif @@ -2895,7 +2910,7 @@ do_source(fname, check_other, is_vimrc) apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf); #endif -#if defined(WIN32) && defined(FEAT_CSCOPE) +#ifdef USE_FOPEN_NOINH cookie.fp = fopen_noinh_readbin((char *)fname_exp); #else cookie.fp = mch_fopen((char *)fname_exp, READBIN); @@ -2916,7 +2931,7 @@ do_source(fname, check_other, is_vimrc) *p = '.'; else *p = '_'; -#if defined(WIN32) && defined(FEAT_CSCOPE) +#ifdef USE_FOPEN_NOINH cookie.fp = fopen_noinh_readbin((char *)fname_exp); #else cookie.fp = mch_fopen((char *)fname_exp, READBIN); |