cp: fix recursion check to not waste bytes remembering names of dirs
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 27 Aug 2007 17:02:19 +0000 (17:02 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 27 Aug 2007 17:02:19 +0000 (17:02 -0000)
libbb/copy_file.c

index b70d7b5..efb969f 100644 (file)
@@ -114,7 +114,7 @@ int copy_file(const char *source, const char *dest, int flags)
 
        if (S_ISDIR(source_stat.st_mode)) {
                DIR *dp;
-               const char *existing_name;
+               const char *tp;
                struct dirent *d;
                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? */
-               existing_name = is_in_ino_dev_hashtable(&source_stat);
-               if (existing_name) {
+               tp = is_in_ino_dev_hashtable(&source_stat);
+               if (tp) {
                        /* We did! it's a recursion! man the lifeboats... */
                        bb_error_msg("recursion detected, omitting directory '%s'",
-                                       existing_name);
+                                       source);
                        return -1;
                }
 
@@ -222,8 +222,7 @@ int copy_file(const char *source, const char *dest, int flags)
                int dst_fd;
 
                if (ENABLE_FEATURE_PRESERVE_HARDLINKS && !FLAGS_DEREF) {
-                       char *link_target;
-
+                       const char *link_target;
                        link_target = is_in_ino_dev_hashtable(&source_stat);
                        if (link_target) {
                                if (link(link_target, dest) < 0) {