in grabbag__file_are_same() check that st_dev is same also
authorJosh Coalson <jcoalson@users.sourceforce.net>
Fri, 13 Oct 2006 04:27:06 +0000 (04:27 +0000)
committerJosh Coalson <jcoalson@users.sourceforce.net>
Fri, 13 Oct 2006 04:27:06 +0000 (04:27 +0000)
include/share/grabbag/file.h
src/share/grabbag/file.c

index ed755ec..e5918ee 100644 (file)
@@ -45,7 +45,8 @@ const char *grabbag__file_get_basename(const char *srcpath);
  */
 FLAC__bool grabbag__file_change_stats(const char *filename, FLAC__bool read_only);
 
-/* returns true iff stat() succeeds for both files and they have the same inode */
+/* returns true iff stat() succeeds for both files and they have the same device and inode */
+/*@@@ this does not work on windows so for that the function just returns !strcmp(f1,f2) */
 FLAC__bool grabbag__file_are_same(const char *f1, const char *f2);
 
 /* attempts to make writable before unlinking */
index f0fae6d..9c15788 100644 (file)
@@ -114,7 +114,7 @@ FLAC__bool grabbag__file_are_same(const char *f1, const char *f2)
        return f1 && f2 && 0 == strcmp(f1, f2); /*@@@@@@ need better method than strcmp */
 #else
        struct stat s1, s2;
-       return f1 && f2 && stat(f1, &s1) == 0 && stat(f2, &s2) == 0 && s1.st_ino == s2.st_ino;
+       return f1 && f2 && stat(f1, &s1) == 0 && stat(f2, &s2) == 0 && s1.st_ino == s2.st_ino && s1.st_dev == s2.st_dev;
 #endif
 }