diff options
Diffstat (limited to 'libbb/copy_file.c')
-rw-r--r-- | libbb/copy_file.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libbb/copy_file.c b/libbb/copy_file.c index 044bc3c20..c0928a5a8 100644 --- a/libbb/copy_file.c +++ b/libbb/copy_file.c | |||
@@ -105,12 +105,18 @@ int FAST_FUNC copy_file(const char *source, const char *dest, int flags) | |||
105 | return -1; | 105 | return -1; |
106 | } | 106 | } |
107 | } else { | 107 | } else { |
108 | #if ENABLE_PLATFORM_POSIX || ENABLE_FEATURE_EXTRA_FILE_DATA | ||
108 | if (source_stat.st_dev == dest_stat.st_dev | 109 | if (source_stat.st_dev == dest_stat.st_dev |
109 | && source_stat.st_ino == dest_stat.st_ino | 110 | && source_stat.st_ino == dest_stat.st_ino |
111 | # if ENABLE_FEATURE_EXTRA_FILE_DATA | ||
112 | /* ignore invalid inode numbers */ | ||
113 | && source_stat.st_ino != 0 | ||
114 | # endif | ||
110 | ) { | 115 | ) { |
111 | bb_error_msg("'%s' and '%s' are the same file", source, dest); | 116 | bb_error_msg("'%s' and '%s' are the same file", source, dest); |
112 | return -1; | 117 | return -1; |
113 | } | 118 | } |
119 | #endif | ||
114 | if (flags & FILEUTILS_NO_OVERWRITE) /* cp -n */ | 120 | if (flags & FILEUTILS_NO_OVERWRITE) /* cp -n */ |
115 | return 0; | 121 | return 0; |
116 | dest_exists = 1; | 122 | dest_exists = 1; |