}
} else {
if (source_stat.st_dev == dest_stat.st_dev &&
- source_stat.st_ino == dest_stat.st_ino) {
- bb_error_msg("`%s' and `%s' are the same file", source, dest);
- return -1;
- }
+ source_stat.st_ino == dest_stat.st_ino)
+ {
+ bb_error_msg("`%s' and `%s' are the same file", source, dest);
+ return -1;
+ }
dest_exists = 1;
}
umask(saved_umask);
}
- add_to_ino_dev_hashtable(&dest_stat, source);
-
/* Recursively copy files in SOURCE. */
if ((dp = opendir(source)) == NULL) {
bb_perror_msg("unable to open directory `%s'", source);
new_source = concat_subpath_file(source, d->d_name);
if(new_source == NULL)
continue;
- if (is_in_ino_dev_hashtable(&dest_stat, &new_source)) {
- bb_error_msg("cannot copy a directory, `%s', into itself, `%s'", new_source, dest);
- continue;
- }
new_dest = concat_path_file(dest, d->d_name);
if (copy_file(new_source, new_dest, flags) < 0)
status = -1;
}
#ifdef CONFIG_FEATURE_PRESERVE_HARDLINKS
- add_to_ino_dev_hashtable(&source_stat, dest);
+ if (! S_ISDIR(source_stat.st_mode)) {
+ add_to_ino_dev_hashtable(&source_stat, dest);
+ }
#endif
end: