buf->b_fname = buf->b_sfname;
#ifdef UNIX
if (st.st_dev == (dev_T)-1)
- buf->b_dev = -1;
+ buf->b_dev_valid = FALSE;
else
{
+ buf->b_dev_valid = TRUE;
buf->b_dev = st.st_dev;
buf->b_ino = st.st_ino;
}
buf->b_fname = buf->b_sfname;
#ifdef UNIX
if (st.st_dev == (dev_T)-1)
- buf->b_dev = -1;
+ buf->b_dev_valid = FALSE;
else
{
+ buf->b_dev_valid = TRUE;
buf->b_dev = st.st_dev;
buf->b_ino = st.st_ino;
}
/* If no struct stat given, get it now */
if (stp == NULL)
{
- if (buf->b_dev < 0 || mch_stat((char *)ffname, &st) < 0)
+ if (!buf->b_dev_valid || mch_stat((char *)ffname, &st) < 0)
st.st_dev = (dev_T)-1;
stp = &st;
}
if (buf->b_fname != NULL && mch_stat((char *)buf->b_fname, &st) >= 0)
{
+ buf->b_dev_valid = TRUE;
buf->b_dev = st.st_dev;
buf->b_ino = st.st_ino;
}
else
- buf->b_dev = -1;
+ buf->b_dev_valid = FALSE;
}
/*
buf_T *buf;
struct stat *stp;
{
- return (buf->b_dev >= 0
+ return (buf->b_dev_valid
&& stp->st_dev == buf->b_dev
&& stp->st_ino == buf->b_ino);
}
# endif
buf_setino(buf);
}
- else if (buf->b_dev < 0)
+ else if (!buf->b_dev_valid)
/* Set the inode when creating a new file. */
buf_setino(buf);
#endif
char_u *b_fname; /* current file name */
#ifdef UNIX
- dev_t b_dev; /* device number (-1 if not set) */
+ int b_dev_valid; /* TRUE when b_dev has a valid number */
+ dev_t b_dev; /* device number */
ino_t b_ino; /* inode number */
#endif
#ifdef FEAT_CW_EDITOR