diff options
author | Stefan Hoffmann <stefan991@gmail.com> | 2014-05-27 17:50:55 +0200 |
---|---|---|
committer | Stefan Hoffmann <stefan991@gmail.com> | 2014-06-27 13:59:28 +0200 |
commit | d8ec5ef88d77e4074c7376fda21276c2fc724f5d (patch) | |
tree | 157fb5b77f234be4ac335ecdf9ceee61bdc034d2 /src/nvim/buffer.c | |
parent | 4a22fb06b98fedd0e95d2bb4529ac1d74c418ff4 (diff) | |
download | rneovim-d8ec5ef88d77e4074c7376fda21276c2fc724f5d.tar.gz rneovim-d8ec5ef88d77e4074c7376fda21276c2fc724f5d.tar.bz2 rneovim-d8ec5ef88d77e4074c7376fda21276c2fc724f5d.zip |
FileID: remove `INVALID_DEVICE_ID` macro
Diffstat (limited to 'src/nvim/buffer.c')
-rw-r--r-- | src/nvim/buffer.c | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 67cd5a3094..21e54bda93 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -79,12 +79,6 @@ # include "buffer.c.generated.h" #endif -#ifdef UNIX -# define dev_T dev_t -#else -# define dev_T unsigned -#endif - static char *msg_loclist = N_("[Location List]"); static char *msg_qflist = N_("[Quickfix List]"); static char *e_auabort = N_("E855: Autocommands caused command to abort"); @@ -1301,11 +1295,11 @@ buflist_new ( /* We can use inode numbers when the file exists. Works better * for hard links. */ FileInfo file_info; - if (sfname == NULL || !os_get_file_info((char *)sfname, &file_info)) { - file_info.stat.st_dev = INVALID_DEVICE_ID; - } + bool file_info_valid = (sfname != NULL && + os_get_file_info((char *)sfname, &file_info)); if (ffname != NULL && !(flags & BLN_DUMMY) - && (buf = buflist_findname_file_info(ffname, &file_info)) != NULL) { + && (buf = buflist_findname_file_info(ffname, &file_info, + file_info_valid)) != NULL) { free(ffname); if (lnum != 0) buflist_setfpos(buf, curwin, lnum, (colnr_T)0, FALSE); @@ -1432,9 +1426,9 @@ buflist_new ( hash_init(&buf->b_s.b_keywtab_ic); buf->b_fname = buf->b_sfname; - if (file_info.stat.st_dev == INVALID_DEVICE_ID) + if (!file_info_valid) { buf->b_dev_valid = FALSE; - else { + } else { buf->b_dev_valid = TRUE; buf->b_dev = file_info.stat.st_dev; buf->b_ino = file_info.stat.st_ino; @@ -1659,10 +1653,8 @@ buf_T *buflist_findname_exp(char_u *fname) buf_T *buflist_findname(char_u *ffname) { FileInfo file_info; - if (!os_get_file_info((char *)ffname, &file_info)) { - file_info.stat.st_dev = INVALID_DEVICE_ID; - } - return buflist_findname_file_info(ffname, &file_info); + bool file_info_valid = os_get_file_info((char *)ffname, &file_info); + return buflist_findname_file_info(ffname, &file_info, file_info_valid); } /* @@ -1670,13 +1662,14 @@ buf_T *buflist_findname(char_u *ffname) * getting it twice for the same file. * Returns NULL if not found. */ -static buf_T *buflist_findname_file_info(char_u *ffname, FileInfo *file_info) +static buf_T *buflist_findname_file_info(char_u *ffname, FileInfo *file_info, + bool file_info_valid) { buf_T *buf; for (buf = firstbuf; buf != NULL; buf = buf->b_next) { if ((buf->b_flags & BF_DUMMY) == 0 - && !otherfile_buf(buf, ffname, file_info)) { + && !otherfile_buf(buf, ffname, file_info, file_info_valid)) { return buf; } } @@ -2193,6 +2186,7 @@ setfname ( { buf_T *obuf = NULL; FileInfo file_info; + bool file_info_valid = false; if (ffname == NULL || *ffname == NUL) { /* Removing the name. */ @@ -2200,7 +2194,6 @@ setfname ( free(buf->b_sfname); buf->b_ffname = NULL; buf->b_sfname = NULL; - file_info.stat.st_dev = INVALID_DEVICE_ID; } else { fname_expand(buf, &ffname, &sfname); /* will allocate ffname */ if (ffname == NULL) /* out of memory */ @@ -2211,11 +2204,9 @@ setfname ( * - if the buffer is loaded, fail * - if the buffer is not loaded, delete it from the list */ - if (!os_get_file_info((char *)ffname, &file_info)) { - file_info.stat.st_dev = INVALID_DEVICE_ID; - } + file_info_valid = os_get_file_info((char *)ffname, &file_info); if (!(buf->b_flags & BF_DUMMY)) { - obuf = buflist_findname_file_info(ffname, &file_info); + obuf = buflist_findname_file_info(ffname, &file_info, file_info_valid); } if (obuf != NULL && obuf != buf) { if (obuf->b_ml.ml_mfp != NULL) { /* it's loaded, fail */ @@ -2241,7 +2232,7 @@ setfname ( buf->b_sfname = sfname; } buf->b_fname = buf->b_sfname; - if (file_info.stat.st_dev == INVALID_DEVICE_ID) { + if (!file_info_valid) { buf->b_dev_valid = FALSE; } else { buf->b_dev_valid = TRUE; @@ -2380,10 +2371,11 @@ void buflist_altfpos(win_T *win) */ int otherfile(char_u *ffname) { - return otherfile_buf(curbuf, ffname, NULL); + return otherfile_buf(curbuf, ffname, NULL, false); } -static int otherfile_buf(buf_T *buf, char_u *ffname, FileInfo *file_info_p) +static int otherfile_buf(buf_T *buf, char_u *ffname, + FileInfo *file_info_p, bool file_info_valid) { /* no name is different */ if (ffname == NULL || *ffname == NUL || buf->b_ffname == NULL) { @@ -2392,13 +2384,18 @@ static int otherfile_buf(buf_T *buf, char_u *ffname, FileInfo *file_info_p) if (fnamecmp(ffname, buf->b_ffname) == 0) { return FALSE; } + if (file_info_p != NULL && !file_info_valid) { + // file_id not valid, assume files are different. + return TRUE; + } { FileInfo file_info; /* If no struct stat given, get it now */ if (file_info_p == NULL) { - if (!buf->b_dev_valid || !os_get_file_info((char *)ffname, &file_info)) { - file_info.stat.st_dev = INVALID_DEVICE_ID; + if (!os_get_file_info((char *)ffname, &file_info)) { + // could not get file_id to compare, assume files are different. + return TRUE; } file_info_p = &file_info; } |