cp: fix recursion check to not waste bytes remembering names of dirs
This commit is contained in:
parent
8a5fab6333
commit
0f214ecef0
@ -114,7 +114,7 @@ int copy_file(const char *source, const char *dest, int flags)
|
|||||||
|
|
||||||
if (S_ISDIR(source_stat.st_mode)) {
|
if (S_ISDIR(source_stat.st_mode)) {
|
||||||
DIR *dp;
|
DIR *dp;
|
||||||
const char *existing_name;
|
const char *tp;
|
||||||
struct dirent *d;
|
struct dirent *d;
|
||||||
mode_t saved_umask = 0;
|
mode_t saved_umask = 0;
|
||||||
|
|
||||||
@ -124,11 +124,11 @@ int copy_file(const char *source, const char *dest, int flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Did we ever create source ourself before? */
|
/* Did we ever create source ourself before? */
|
||||||
existing_name = is_in_ino_dev_hashtable(&source_stat);
|
tp = is_in_ino_dev_hashtable(&source_stat);
|
||||||
if (existing_name) {
|
if (tp) {
|
||||||
/* We did! it's a recursion! man the lifeboats... */
|
/* We did! it's a recursion! man the lifeboats... */
|
||||||
bb_error_msg("recursion detected, omitting directory '%s'",
|
bb_error_msg("recursion detected, omitting directory '%s'",
|
||||||
existing_name);
|
source);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,8 +222,7 @@ int copy_file(const char *source, const char *dest, int flags)
|
|||||||
int dst_fd;
|
int dst_fd;
|
||||||
|
|
||||||
if (ENABLE_FEATURE_PRESERVE_HARDLINKS && !FLAGS_DEREF) {
|
if (ENABLE_FEATURE_PRESERVE_HARDLINKS && !FLAGS_DEREF) {
|
||||||
char *link_target;
|
const char *link_target;
|
||||||
|
|
||||||
link_target = is_in_ino_dev_hashtable(&source_stat);
|
link_target = is_in_ino_dev_hashtable(&source_stat);
|
||||||
if (link_target) {
|
if (link_target) {
|
||||||
if (link(link_target, dest) < 0) {
|
if (link(link_target, dest) < 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user