(copy_dir_dir): refactoring: get rid of goto dont_mkdir.
authorAndrew Borodin <aborodin@vmail.ru>
Sun, 25 Nov 2012 09:49:20 +0000 (25 13:49 +0400)
committerAndrew Borodin <aborodin@vmail.ru>
Thu, 29 Nov 2012 10:45:18 +0000 (29 14:45 +0400)
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
src/filemanager/file.c

index 7d0cdfb..79ec70c 100644 (file)
@@ -1945,6 +1945,7 @@ copy_dir_dir (FileOpTotalContext * tctx, FileOpContext * ctx, const char *s, con
     struct link *lp;
     char *d;
     vfs_path_t *src_vpath, *dst_vpath, *dest_dir_vpath = NULL;
+    gboolean do_mkdir = TRUE;
 
     d = g_strdup (_d);
 
@@ -2059,40 +2060,42 @@ copy_dir_dir (FileOpTotalContext * tctx, FileOpContext * ctx, const char *s, con
         }
         /* Dive into subdir if exists */
         if (toplevel && ctx->dive_into_subdirs)
-        {
             dest_dir = mc_build_filename (d, x_basename (s), NULL);
-        }
         else
         {
             dest_dir = d;
             d = NULL;
-            dest_dir_vpath = vfs_path_from_str (dest_dir);
-            goto dont_mkdir;
+            do_mkdir = FALSE;
         }
     }
+
     dest_dir_vpath = vfs_path_from_str (dest_dir);
-    while (my_mkdir (dest_dir_vpath, (cbuf.st_mode & ctx->umask_kill) | S_IRWXU) != 0)
+
+    if (do_mkdir)
     {
-        if (ctx->skip_all)
-            return_status = FILE_SKIPALL;
-        else
+        while (my_mkdir (dest_dir_vpath, (cbuf.st_mode & ctx->umask_kill) | S_IRWXU) != 0)
         {
-            return_status = file_error (_("Cannot create target directory \"%s\"\n%s"), dest_dir);
-            if (return_status == FILE_SKIPALL)
-                ctx->skip_all = TRUE;
+            if (ctx->skip_all)
+                return_status = FILE_SKIPALL;
+            else
+            {
+                return_status =
+                    file_error (_("Cannot create target directory \"%s\"\n%s"), dest_dir);
+                if (return_status == FILE_SKIPALL)
+                    ctx->skip_all = TRUE;
+            }
+            if (return_status != FILE_RETRY)
+                goto ret;
         }
-        if (return_status != FILE_RETRY)
-            goto ret;
-    }
 
-    lp = g_new0 (struct link, 1);
-    mc_stat (dest_dir_vpath, &buf);
-    lp->vfs = vfs_path_get_by_index (dest_dir_vpath, -1)->class;
-    lp->ino = buf.st_ino;
-    lp->dev = buf.st_dev;
-    dest_dirs = g_slist_prepend (dest_dirs, lp);
+        lp = g_new0 (struct link, 1);
+        mc_stat (dest_dir_vpath, &buf);
+        lp->vfs = vfs_path_get_by_index (dest_dir_vpath, -1)->class;
+        lp->ino = buf.st_ino;
+        lp->dev = buf.st_dev;
+        dest_dirs = g_slist_prepend (dest_dirs, lp);
+    }
 
-  dont_mkdir:
     if (ctx->preserve_uidgid)
     {
         while (mc_chown (dest_dir_vpath, cbuf.st_uid, cbuf.st_gid) != 0)