(do_copy): Give a better diagnostic when failing due
authorJim Meyering <jim@meyering.net>
Fri, 4 Jul 2003 10:01:35 +0000 (10:01 +0000)
committerJim Meyering <jim@meyering.net>
Fri, 4 Jul 2003 10:01:35 +0000 (10:01 +0000)
to nonexistent destination directory.  Reported by Dmitry Rutsky.
See http://bugs.debian.org/199730 for details.

src/cp.c

index 8a947be..a2cc551 100644 (file)
--- a/src/cp.c
+++ b/src/cp.c
@@ -541,18 +541,18 @@ do_copy (int n_files, char **file, const char *target_directory,
 
   if (!dest_is_dir)
     {
-      if (target_directory)
+      if (target_directory || 1 < n_files)
        {
-         error (0, 0, _("%s: specified target is not a directory"),
-                quote (dest));
-         usage (EXIT_FAILURE);
-       }
-
-      if (n_files > 1)
-       {
-         error (0, 0,
-        _("copying multiple files, but last argument %s is not a directory"),
-            quote (dest));
+         char const *msg;
+         if (new_dst)
+           msg = N_("%s: specified destination directory does not exist");
+         else if (target_directory)
+           msg = N_("%s: specified target is not a directory");
+         else /* n_files > 1 */
+           msg =
+         N_("copying multiple files, but last argument %s is not a directory");
+
+         error (0, 0, _(msg), quote (dest));
          usage (EXIT_FAILURE);
        }
     }