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; |
