To: vim-dev@vim.org Subject: Patch 7.2.338 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.2.338 (after 7.2.300) Problem: Part of FD_CLOEXEC change is missing. Solution: Include source file skipped because of typo. Files: src/ex_cmds2.c *** ../vim-7.2.337/src/ex_cmds2.c 2010-01-19 16:12:53.000000000 +0100 --- src/ex_cmds2.c 2010-01-19 16:02:53.000000000 +0100 *************** *** 2802,2821 **** static char_u *get_one_sourceline __ARGS((struct source_cookie *sp)); ! #if defined(WIN32) && defined(FEAT_CSCOPE) static FILE *fopen_noinh_readbin __ARGS((char *filename)); /* * Special function to open a file without handle inheritance. */ static FILE * fopen_noinh_readbin(filename) char *filename; { ! int fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0); if (fd_tmp == -1) return NULL; return fdopen(fd_tmp, READBIN); } #endif --- 2802,2836 ---- static char_u *get_one_sourceline __ARGS((struct source_cookie *sp)); ! #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 ! # 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,2901 **** apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf); #endif ! #if defined(WIN32) && defined(FEAT_CSCOPE) cookie.fp = fopen_noinh_readbin((char *)fname_exp); #else cookie.fp = mch_fopen((char *)fname_exp, READBIN); --- 2910,2916 ---- apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf); #endif ! #ifdef USE_FOPEN_NOINH cookie.fp = fopen_noinh_readbin((char *)fname_exp); #else cookie.fp = mch_fopen((char *)fname_exp, READBIN); *************** *** 2916,2922 **** *p = '.'; else *p = '_'; ! #if defined(WIN32) && defined(FEAT_CSCOPE) cookie.fp = fopen_noinh_readbin((char *)fname_exp); #else cookie.fp = mch_fopen((char *)fname_exp, READBIN); --- 2931,2937 ---- *p = '.'; else *p = '_'; ! #ifdef USE_FOPEN_NOINH cookie.fp = fopen_noinh_readbin((char *)fname_exp); #else cookie.fp = mch_fopen((char *)fname_exp, READBIN); *** ../vim-7.2.337/src/version.c 2010-01-19 16:12:53.000000000 +0100 --- src/version.c 2010-01-19 16:20:08.000000000 +0100 *************** *** 683,684 **** --- 683,686 ---- { /* Add new patch number below this line */ + /**/ + 338, /**/ -- ~ ~ ~ ".signature" 4 lines, 50 characters written /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///