1
0
forked from aniani/vim

updated for version 7.1-027

This commit is contained in:
Bram Moolenaar
2007-07-10 15:10:54 +00:00
parent 78f6f7eb95
commit fe1c56d6ae
3 changed files with 39 additions and 0 deletions

View File

@@ -44,6 +44,10 @@
/* Is there any system that doesn't have access()? */ /* Is there any system that doesn't have access()? */
#define USE_MCH_ACCESS #define USE_MCH_ACCESS
#if defined(sun) && defined(S_ISCHR)
# define OPEN_CHR_FILES
static int is_dev_fd_file(char_u *fname);
#endif
#ifdef FEAT_MBYTE #ifdef FEAT_MBYTE
static char_u *next_fenc __ARGS((char_u **pp)); static char_u *next_fenc __ARGS((char_u **pp));
# ifdef FEAT_EVAL # ifdef FEAT_EVAL
@@ -405,6 +409,10 @@ readfile(fname, sfname, from, lines_to_skip, lines_to_read, eap, flags)
# endif # endif
# ifdef S_ISSOCK # ifdef S_ISSOCK
&& !S_ISSOCK(perm) /* ... or socket */ && !S_ISSOCK(perm) /* ... or socket */
# endif
# ifdef OPEN_CHR_FILES
&& !(S_ISCHR(perm) && is_dev_fd_file(fname))
/* ... or a character special file named /dev/fd/<n> */
# endif # endif
) )
{ {
@@ -2265,6 +2273,13 @@ failed:
} }
# endif # endif
# endif # endif
# ifdef OPEN_CHR_FILES
if (S_ISCHR(perm)) /* or character special */
{
STRCAT(IObuff, _("[character special]"));
c = TRUE;
}
# endif
#endif #endif
if (curbuf->b_p_ro) if (curbuf->b_p_ro)
{ {
@@ -2464,6 +2479,25 @@ failed:
return OK; return OK;
} }
#ifdef OPEN_CHR_FILES
/*
* Returns TRUE if the file name argument is of the form "/dev/fd/\d\+",
* which is the name of files used for process substitution output by
* some shells on some operating systems, e.g., bash on SunOS.
* Do not accept "/dev/fd/[012]", opening these may hang Vim.
*/
static int
is_dev_fd_file(fname)
char_u *fname;
{
return (STRNCMP(fname, "/dev/fd/", 8) == 0
&& VIM_ISDIGIT(fname[8])
&& *skipdigits(fname + 9) == NUL
&& (fname[9] != NUL
|| (fname[8] != '0' && fname[8] != '1' && fname[8] != '2')));
}
#endif
#ifdef FEAT_MBYTE #ifdef FEAT_MBYTE
/* /*

View File

@@ -508,6 +508,9 @@ int mch_rename __ARGS((const char *src, const char *dest));
#if !defined(S_ISFIFO) && defined(S_IFIFO) #if !defined(S_ISFIFO) && defined(S_IFIFO)
# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#endif #endif
#if !defined(S_ISCHR) && defined(S_IFCHR)
# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#endif
/* Note: Some systems need both string.h and strings.h (Savage). However, /* Note: Some systems need both string.h and strings.h (Savage). However,
* some systems can't handle both, only use string.h in that case. */ * some systems can't handle both, only use string.h in that case. */

View File

@@ -666,6 +666,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
27,
/**/ /**/
26, 26,
/**/ /**/