forked from aniani/vim
patch 8.0.1819: swap file warning for file with non-existing directory
Problem: Swap file warning for a file in a non-existing directory, if there is another with the same file name. (Juergen Weigert) Solution: When expanding the file name fails compare the file names.
This commit is contained in:
@@ -4648,8 +4648,8 @@ b0_magic_wrong(ZERO_BL *b0p)
|
|||||||
* == 0 == 0 OK FAIL TRUE
|
* == 0 == 0 OK FAIL TRUE
|
||||||
*
|
*
|
||||||
* current file doesn't exist, inode for swap unknown, both file names not
|
* current file doesn't exist, inode for swap unknown, both file names not
|
||||||
* available -> probably same file
|
* available -> compare file names
|
||||||
* == 0 == 0 FAIL FAIL FALSE
|
* == 0 == 0 FAIL FAIL fname_c != fname_s
|
||||||
*
|
*
|
||||||
* Note that when the ino_t is 64 bits, only the last 32 will be used. This
|
* Note that when the ino_t is 64 bits, only the last 32 will be used. This
|
||||||
* can't be changed without making the block 0 incompatible with 32 bit
|
* can't be changed without making the block 0 incompatible with 32 bit
|
||||||
@@ -4693,14 +4693,15 @@ fnamecmp_ino(
|
|||||||
retval_c = vim_FullName(fname_c, buf_c, MAXPATHL, TRUE);
|
retval_c = vim_FullName(fname_c, buf_c, MAXPATHL, TRUE);
|
||||||
retval_s = vim_FullName(fname_s, buf_s, MAXPATHL, TRUE);
|
retval_s = vim_FullName(fname_s, buf_s, MAXPATHL, TRUE);
|
||||||
if (retval_c == OK && retval_s == OK)
|
if (retval_c == OK && retval_s == OK)
|
||||||
return (STRCMP(buf_c, buf_s) != 0);
|
return STRCMP(buf_c, buf_s) != 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Can't compare inodes or file names, guess that the files are different,
|
* Can't compare inodes or file names, guess that the files are different,
|
||||||
* unless both appear not to exist at all.
|
* unless both appear not to exist at all, then compare with the file name
|
||||||
|
* in the swap file.
|
||||||
*/
|
*/
|
||||||
if (ino_s == 0 && ino_c == 0 && retval_c == FAIL && retval_s == FAIL)
|
if (ino_s == 0 && ino_c == 0 && retval_c == FAIL && retval_s == FAIL)
|
||||||
return FALSE;
|
return STRCMP(fname_c, fname_s) != 0;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
#endif /* CHECK_INODE */
|
#endif /* CHECK_INODE */
|
||||||
|
@@ -82,3 +82,18 @@ func Test_swap_group()
|
|||||||
call delete('Xtest')
|
call delete('Xtest')
|
||||||
endtry
|
endtry
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_missing_dir()
|
||||||
|
call mkdir('Xswapdir')
|
||||||
|
exe 'set directory=' . getcwd() . '/Xswapdir'
|
||||||
|
|
||||||
|
call assert_equal('', glob('foo'))
|
||||||
|
call assert_equal('', glob('bar'))
|
||||||
|
edit foo/x.txt
|
||||||
|
" This should not give a warning for an existing swap file.
|
||||||
|
split bar/x.txt
|
||||||
|
only
|
||||||
|
|
||||||
|
set directory&
|
||||||
|
call delete('Xswapdir', 'rf')
|
||||||
|
endfunc
|
||||||
|
@@ -761,6 +761,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 */
|
||||||
|
/**/
|
||||||
|
1819,
|
||||||
/**/
|
/**/
|
||||||
1818,
|
1818,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user