aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/buffer.c3
-rw-r--r--src/nvim/fileio.c2
-rw-r--r--src/nvim/version.c2
-rw-r--r--src/nvim/vim.h4
4 files changed, 9 insertions, 2 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
index 504be8dde6..1534af478f 100644
--- a/src/nvim/buffer.c
+++ b/src/nvim/buffer.c
@@ -217,6 +217,9 @@ open_buffer (
# ifdef S_ISSOCK
|| S_ISSOCK(perm)
# endif
+# ifdef OPEN_CHR_FILES
+ || (S_ISCHR(perm) && is_dev_fd_file(curbuf->b_ffname))
+# endif
))
read_fifo = TRUE;
if (read_fifo)
diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c
index dcef09e21f..41117fdd3d 100644
--- a/src/nvim/fileio.c
+++ b/src/nvim/fileio.c
@@ -1974,7 +1974,7 @@ failed:
/// Do not accept "/dev/fd/[012]", opening these may hang Vim.
///
/// @param fname file name to check
-static bool is_dev_fd_file(char_u *fname)
+bool is_dev_fd_file(char_u *fname)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT
{
return STRNCMP(fname, "/dev/fd/", 8) == 0
diff --git a/src/nvim/version.c b/src/nvim/version.c
index ec4a804f2e..09ee23e58f 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -215,7 +215,7 @@ static const int included_patches[] = {
// 2232 NA
2231,
2230,
- // 2229,
+ 2229,
2228,
2227,
2226,
diff --git a/src/nvim/vim.h b/src/nvim/vim.h
index f29ccdd296..5d2c27a2f4 100644
--- a/src/nvim/vim.h
+++ b/src/nvim/vim.h
@@ -319,4 +319,8 @@ enum { FOLD_TEXT_LEN = 51 }; //!< buffer size for get_foldtext()
// Lowest number used for window ID. Cannot have this many windows per tab.
#define LOWEST_WIN_ID 1000
+#if defined(__FreeBSD__) && defined(S_ISCHR)
+# define OPEN_CHR_FILES
+#endif
+
#endif /* NVIM_VIM_H */