]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/copydir.c: Invert conditional to reduce nesting
authorAlejandro Colomar <alx@kernel.org>
Fri, 25 Aug 2023 20:23:24 +0000 (22:23 +0200)
committerAlejandro Colomar <alx@kernel.org>
Fri, 20 Oct 2023 19:05:33 +0000 (21:05 +0200)
Reviewed-by: Iker Pedrosa <ipedrosa@redhat.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/copydir.c

index bbee719ff26be3b5683f1cca184014caae19b535..4c1b78bea6ffc7bed7ad0e55bed4b8ca4d3df6e2 100644 (file)
@@ -314,51 +314,50 @@ static int copy_tree_impl (const struct path_info *src, const struct path_info *
                set_orig = true;
        }
        while ((0 == err) && (ent = readdir (dir)) != NULL) {
+               char    *src_name, *dst_name;
+               size_t  src_len, dst_len;
                /*
                 * Skip the "." and ".." entries
                 */
-               if ((strcmp (ent->d_name, ".") != 0) &&
-                   (strcmp (ent->d_name, "..") != 0)) {
-                       char *src_name;
-                       char *dst_name;
-                       size_t src_len = strlen (ent->d_name) + 2;
-                       size_t dst_len = strlen (ent->d_name) + 2;
-                       src_len += strlen (src->full_path);
-                       dst_len += strlen (dst->full_path);
-
-                       src_name = MALLOC(src_len, char);
-                       dst_name = MALLOC(dst_len, char);
-
-                       if ((NULL == src_name) || (NULL == dst_name)) {
-                               err = -1;
-                       } else {
-                               /*
-                                * Build the filename for both the source and
-                                * the destination files.
-                                */
-                               struct path_info src_entry, dst_entry;
-
-                               (void) snprintf (src_name, src_len, "%s/%s",
-                                                src->full_path, ent->d_name);
-                               (void) snprintf (dst_name, dst_len, "%s/%s",
-                                                dst->full_path, ent->d_name);
-
-                               src_entry.full_path = src_name;
-                               src_entry.dirfd = dirfd(dir);
-                               src_entry.name = ent->d_name;
-
-                               dst_entry.full_path = dst_name;
-                               dst_entry.dirfd = dst_fd;
-                               dst_entry.name = ent->d_name;
-
-                               err = copy_entry (&src_entry, &dst_entry,
-                                                 reset_selinux,
-                                                 old_uid, new_uid,
-                                                 old_gid, new_gid);
-                       }
-                       free (src_name);
-                       free (dst_name);
+               if (strcmp(ent->d_name, ".") == 0 ||
+                   strcmp(ent->d_name, "..") == 0)
+               {
+                       continue;
+               }
+
+               src_len = strlen (ent->d_name) + 2;
+               dst_len = strlen (ent->d_name) + 2;
+               src_len += strlen (src->full_path);
+               dst_len += strlen (dst->full_path);
+
+               src_name = MALLOC(src_len, char);
+               dst_name = MALLOC(dst_len, char);
+
+               if ((NULL == src_name) || (NULL == dst_name)) {
+                       err = -1;
+               } else {
+                       /*
+                        * Build the filename for both the source and
+                        * the destination files.
+                        */
+                       struct path_info src_entry, dst_entry;
+
+                       (void) snprintf (src_name, src_len, "%s/%s", src->full_path, ent->d_name);
+                       (void) snprintf (dst_name, dst_len, "%s/%s", dst->full_path, ent->d_name);
+
+                       src_entry.full_path = src_name;
+                       src_entry.dirfd = dirfd(dir);
+                       src_entry.name = ent->d_name;
+
+                       dst_entry.full_path = dst_name;
+                       dst_entry.dirfd = dst_fd;
+                       dst_entry.name = ent->d_name;
+
+                       err = copy_entry(&src_entry, &dst_entry, reset_selinux,
+                                        old_uid, new_uid, old_gid, new_gid);
                }
+               free (src_name);
+               free (dst_name);
        }
        (void) closedir (dir);
        (void) close (dst_fd);