From 1d691ca14918feabe04eb4dbb007d3f0a1c4664e Mon Sep 17 00:00:00 2001 From: Josh Coalson Date: Tue, 10 Oct 2006 00:38:28 +0000 Subject: [PATCH] add grabbag__file_are_same() --- include/share/grabbag/file.h | 3 +++ src/share/grabbag/file.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/include/share/grabbag/file.h b/include/share/grabbag/file.h index e7d02cf..ed755ec 100644 --- a/include/share/grabbag/file.h +++ b/include/share/grabbag/file.h @@ -45,6 +45,9 @@ 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 */ +FLAC__bool grabbag__file_are_same(const char *f1, const char *f2); + /* attempts to make writable before unlinking */ FLAC__bool grabbag__file_remove_file(const char *filename); diff --git a/src/share/grabbag/file.c b/src/share/grabbag/file.c index 7d7cb5e..7bdf2ae 100644 --- a/src/share/grabbag/file.c +++ b/src/share/grabbag/file.c @@ -108,6 +108,12 @@ FLAC__bool grabbag__file_change_stats(const char *filename, FLAC__bool read_only return true; } +FLAC__bool grabbag__file_are_same(const char *f1, const char *f2) +{ + struct stat s1, s2; + return f1 && f2 && stat(f1, &s1) == 0 && stat(f2, &s2) == 0 && s1.st_ino == s2.st_ino; +} + FLAC__bool grabbag__file_remove_file(const char *filename) { return grabbag__file_change_stats(filename, /*read_only=*/false) && 0 == unlink(filename); -- 2.7.4