Dominique Pelle wrote:
> Bram Moolenaar wrote: > > > Patch 7.2.076 > > Problem: rename(from, to) deletes the file if "from" and "to" are not > > equal > > but still refer to the same file. E.g., on a FAT32 filesystem > > under Unix. > > Solution: Go through another file name. > > Files: src/fileio.c > > > > > > *** ../vim-7.2.075/src/fileio.c Fri Nov 28 21:26:50 2008 > > --- src/fileio.c Tue Dec 30 16:04:44 2008 > > *************** > > *** 6119,6124 **** > > --- 6119,6165 ---- > > if (mch_stat((char *)from, &st) < 0) > > return -1; > > > > + #ifdef UNIX > > + { > > + struct stat st_to; > > + char tempname[MAXPATHL + 1]; > > + > > + /* It's possible for the source and destination to be the same file. > > + * This happens when "from" and "to" differ in case and are on a > > FAT32 > > + * filesystem. In that case go through a temp file name. */ > > + if (mch_stat((char *)to, &st_to) >= 0 > > + && st.st_dev == st_to.st_dev > > + && st.st_ino == st_to.st_ino) > > + { > [...] > > Will the stat() technique to find whether 2 files are identical work on > all FAT file systems? > > I think remembering that FAT file systems don't have the concept of > inodes, unlike Unix file systems, so stat() either leaves st_ino as 0, > or synthesizes a fake inode number. I will try it later when I have time. Inodes must work on any file system. It is a basic concept in Unix. If st_ino doesn't have a valid value that you should not use that file system, many tools will not work. -- People who want to share their religious views with you almost never want you to share yours with them. /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org /// --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---