mirror of
https://github.com/vim/vim.git
synced 2025-09-28 04:24:06 -04:00
patch 7.4.2189
Problem: Cannot detect encoding in a fifo. Solution: Extend the stdin way of detecting encoding to fifo. Add a test for detecting encoding on stdin and fifo. (Ken Takata)
This commit is contained in:
14
src/fileio.c
14
src/fileio.c
@@ -212,6 +212,7 @@ filemess(
|
||||
* stdin)
|
||||
* READ_DUMMY read into a dummy buffer (to check if file contents changed)
|
||||
* READ_KEEP_UNDO don't clear undo info or read it from a file
|
||||
* READ_FIFO read from fifo/socket instead of a file
|
||||
*
|
||||
* return FAIL for failure, OK otherwise
|
||||
*/
|
||||
@@ -231,6 +232,7 @@ readfile(
|
||||
int filtering = (flags & READ_FILTER);
|
||||
int read_stdin = (flags & READ_STDIN);
|
||||
int read_buffer = (flags & READ_BUFFER);
|
||||
int read_fifo = (flags & READ_FIFO);
|
||||
int set_options = newfile || read_buffer
|
||||
|| (eap != NULL && eap->read_edit);
|
||||
linenr_T read_buf_lnum = 1; /* next line to read from curbuf */
|
||||
@@ -431,7 +433,7 @@ readfile(
|
||||
}
|
||||
}
|
||||
|
||||
if (!read_stdin && !read_buffer)
|
||||
if (!read_stdin && !read_buffer && !read_fifo)
|
||||
{
|
||||
#ifdef UNIX
|
||||
/*
|
||||
@@ -489,7 +491,7 @@ readfile(
|
||||
if (check_readonly && !readonlymode)
|
||||
curbuf->b_p_ro = FALSE;
|
||||
|
||||
if (newfile && !read_stdin && !read_buffer)
|
||||
if (newfile && !read_stdin && !read_buffer && !read_fifo)
|
||||
{
|
||||
/* Remember time of file. */
|
||||
if (mch_stat((char *)fname, &st) >= 0)
|
||||
@@ -1101,6 +1103,7 @@ retry:
|
||||
* and we can't do it internally or with iconv().
|
||||
*/
|
||||
if (fio_flags == 0 && !read_stdin && !read_buffer && *p_ccv != NUL
|
||||
&& !read_fifo
|
||||
# ifdef USE_ICONV
|
||||
&& iconv_fd == (iconv_t)-1
|
||||
# endif
|
||||
@@ -1149,7 +1152,7 @@ retry:
|
||||
/* Set "can_retry" when it's possible to rewind the file and try with
|
||||
* another "fenc" value. It's FALSE when no other "fenc" to try, reading
|
||||
* stdin or fixed at a specific encoding. */
|
||||
can_retry = (*fenc != NUL && !read_stdin && !keep_dest_enc);
|
||||
can_retry = (*fenc != NUL && !read_stdin && !read_fifo && !keep_dest_enc);
|
||||
#endif
|
||||
|
||||
if (!skip_read)
|
||||
@@ -1166,6 +1169,7 @@ retry:
|
||||
&& curbuf->b_ffname != NULL
|
||||
&& curbuf->b_p_udf
|
||||
&& !filtering
|
||||
&& !read_fifo
|
||||
&& !read_stdin
|
||||
&& !read_buffer);
|
||||
if (read_undo_file)
|
||||
@@ -2666,7 +2670,7 @@ failed:
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_AUTOCMD
|
||||
if (!read_stdin && !read_buffer)
|
||||
if (!read_stdin && !read_fifo && (!read_buffer || sfname != NULL))
|
||||
{
|
||||
int m = msg_scroll;
|
||||
int n = msg_scrolled;
|
||||
@@ -2685,7 +2689,7 @@ failed:
|
||||
if (filtering)
|
||||
apply_autocmds_exarg(EVENT_FILTERREADPOST, NULL, sfname,
|
||||
FALSE, curbuf, eap);
|
||||
else if (newfile)
|
||||
else if (newfile || (read_buffer && sfname != NULL))
|
||||
{
|
||||
apply_autocmds_exarg(EVENT_BUFREADPOST, NULL, sfname,
|
||||
FALSE, curbuf, eap);
|
||||
|
Reference in New Issue
Block a user