summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2009-11-17 16:13:15 +0000
committerBram Moolenaar <Bram@vim.org>2009-11-17 16:13:15 +0000
commitf05da21900ee28e679a69439fd1c2ec94367e1d7 (patch)
tree94fa61ec2def86333b84eaa7bae85115f8373620 /src
parent2d7ff056e13e66c135c67935f32e15a26b8dfd80 (diff)
updated for version 7.2-300v7.2.300
Diffstat (limited to 'src')
-rwxr-xr-xsrc/auto/configure52
-rw-r--r--src/config.h.in3
-rw-r--r--src/configure.in10
-rw-r--r--src/fileio.c8
-rw-r--r--src/memfile.c5
-rw-r--r--src/memline.c9
-rw-r--r--src/version.c2
7 files changed, 88 insertions, 1 deletions
diff --git a/src/auto/configure b/src/auto/configure
index eb683c14a5..7230ce3956 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -15174,6 +15174,58 @@ else
$as_echo "yes" >&6; }
fi
+{ $as_echo "$as_me:$LINENO: checking for FD_CLOEXEC" >&5
+$as_echo_n "checking for FD_CLOEXEC... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+int
+main ()
+{
+ int flag = FD_CLOEXEC;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }; cat >>confdefs.h <<\_ACEOF
+#define HAVE_FD_CLOEXEC 1
+_ACEOF
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ { $as_echo "$as_me:$LINENO: result: not usable" >&5
+$as_echo "not usable" >&6; }
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
{ $as_echo "$as_me:$LINENO: checking for rename" >&5
$as_echo_n "checking for rename... " >&6; }
cat >conftest.$ac_ext <<_ACEOF
diff --git a/src/config.h.in b/src/config.h.in
index 0d39b43880..2b2730eb4d 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -388,3 +388,6 @@
/* Define if you want XSMP interaction as well as vanilla swapfile safety */
#undef USE_XSMP_INTERACT
+
+/* Define if fcntl()'s F_SETFD command knows about FD_CLOEXEC */
+#undef HAVE_FD_CLOEXEC
diff --git a/src/configure.in b/src/configure.in
index f994677b82..727bfd1bb5 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -2855,6 +2855,16 @@ else
AC_MSG_RESULT(yes)
fi
+dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
+AC_MSG_CHECKING(for FD_CLOEXEC)
+AC_TRY_COMPILE(
+[#if HAVE_FCNTL_H
+# include <fcntl.h>
+#endif],
+[ int flag = FD_CLOEXEC;],
+ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
+ AC_MSG_RESULT(not usable))
+
dnl rename needs to be checked separately to work on Nextstep with cc
AC_MSG_CHECKING(for rename)
AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
diff --git a/src/fileio.c b/src/fileio.c
index fa07afe1f9..b0b341a2e2 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2254,6 +2254,14 @@ failed:
if (!read_buffer && !read_stdin)
close(fd); /* errors are ignored */
+#ifdef HAVE_FD_CLOEXEC
+ else
+ {
+ int fdflags = fcntl(fd, F_GETFD);
+ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
+ fcntl(fd, F_SETFD, fdflags | FD_CLOEXEC);
+ }
+#endif
vim_free(buffer);
#ifdef HAVE_DUP
diff --git a/src/memfile.c b/src/memfile.c
index 0b3cdd9be1..bd03e65a6d 100644
--- a/src/memfile.c
+++ b/src/memfile.c
@@ -1343,6 +1343,11 @@ mf_do_open(mfp, fname, flags)
}
else
{
+#ifdef HAVE_FD_CLOEXEC
+ int fdflags = fcntl(mfp->mf_fd, F_GETFD);
+ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
+ fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC);
+#endif
#ifdef HAVE_SELINUX
mch_copy_sec(fname, mfp->mf_fname);
#endif
diff --git a/src/memline.c b/src/memline.c
index facdeb62e3..480e93cf64 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -382,7 +382,7 @@ ml_open(buf)
dp->db_index[0] = --dp->db_txt_start; /* at end of block */
dp->db_free -= 1 + INDEX_SIZE;
dp->db_line_count = 1;
- *((char_u *)dp + dp->db_txt_start) = NUL; /* emtpy line */
+ *((char_u *)dp + dp->db_txt_start) = NUL; /* empty line */
return OK;
@@ -490,6 +490,13 @@ ml_setname(buf)
EMSG(_("E301: Oops, lost the swap file!!!"));
return;
}
+#ifdef HAVE_FD_CLOEXEC
+ {
+ int fdflags = fcntl(mfp->mf_fd, F_GETFD);
+ if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
+ fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC);
+ }
+#endif
}
if (!success)
EMSG(_("E302: Could not rename swap file"));
diff --git a/src/version.c b/src/version.c
index 1460a8db2b..a889332ba3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -682,6 +682,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 300,
+/**/
299,
/**/
298,