mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	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.
8c3169c58e
			
			
This commit is contained in:
		| @@ -3525,8 +3525,8 @@ static int 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 | ||||||
|  * |  * | ||||||
|  * Only the last 32 bits of the inode will be used. This can't be changed |  * Only the last 32 bits of the inode will be used. This can't be changed | ||||||
|  * without making the block 0 incompatible with 32 bit versions. |  * without making the block 0 incompatible with 32 bit versions. | ||||||
| @@ -3576,10 +3576,12 @@ fnamecmp_ino ( | |||||||
|  |  | ||||||
|   /* |   /* | ||||||
|    * 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; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -46,3 +46,18 @@ func Test_swap_directory() | |||||||
|   call delete("Xtest2", "rf") |   call delete("Xtest2", "rf") | ||||||
|   call delete("Xtest.je", "rf") |   call delete("Xtest.je", "rf") | ||||||
| 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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jan Edmund Lazo
					Jan Edmund Lazo