[PATCH 4/5] [programs/xcopy] Return code 1 for no files is never returned

Jason Edmeades us at edmeades.me.uk
Sun Jun 24 15:44:13 CDT 2018


Found whilst fixing bug#44967

Testing, and confirmed on the internet (*1) shows xcopy never
returns 1 to indicate no files were copied.

(*1) e.g. https://superuser.com/questions/1180180/is-it-possible-to-get-an-errorlevel-1-from-xcopy-in-windows-10

Signed-off-by: Jason Edmeades <us at edmeades.me.uk>
---
 programs/xcopy/tests/xcopy.c | 4 +---
 programs/xcopy/xcopy.c       | 7 ++++---
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/programs/xcopy/tests/xcopy.c b/programs/xcopy/tests/xcopy.c
index 7ca32d6c33..0991d49769 100644
--- a/programs/xcopy/tests/xcopy.c
+++ b/programs/xcopy/tests/xcopy.c
@@ -97,17 +97,15 @@ static void test_parms_syntax(void)
     DeleteFileA("xcopytest\\xcopy1"); */
 
     rc = runcmd("xcopy /D/S xcopytest xcopytest2\\");
-    todo_wine
     ok(rc == 0, "xcopy /D/S test failed rc=%u\n", rc);
     ok(GetFileAttributesA("xcopytest2") == INVALID_FILE_ATTRIBUTES,
        "xcopy copied empty directory incorrectly\n");
 
     rc = runcmd("xcopy /D/S/E xcopytest xcopytest2\\");
-    todo_wine {
     ok(rc == 0, "xcopy /D/S/E test failed rc=%u\n", rc);
+    todo_wine
     ok(GetFileAttributesA("xcopytest2") != INVALID_FILE_ATTRIBUTES,
        "xcopy failed to copy empty directory\n");
-    }
     RemoveDirectoryA("xcopytest2");
 }
 
diff --git a/programs/xcopy/xcopy.c b/programs/xcopy/xcopy.c
index 461104a8da..97b0538e57 100644
--- a/programs/xcopy/xcopy.c
+++ b/programs/xcopy/xcopy.c
@@ -31,12 +31,14 @@
 
 /*
  * Notes:
- * Apparently, valid return codes are:
+ * Documented valid return codes are:
  *   0 - OK
- *   1 - No files found to copy
+ *   1 - No files found to copy  (*1)
  *   2 - CTRL+C during copy
  *   4 - Initialization error, or invalid source specification
  *   5 - Disk write error
+ *
+ * (*1) Testing shows return code 1 is never returned
  */
 
 
@@ -1165,7 +1167,6 @@ int wmain (int argc, WCHAR *argvW[])
     } else if (!(flags & OPT_NOCOPY)) {
         XCOPY_wprintf(XCOPY_LoadMessage(STRING_COPY), filesCopied);
     }
-    if (rc == RC_OK && filesCopied == 0) rc = RC_NOFILES;
     return rc;
 
 }
-- 
2.17.1




More information about the wine-devel mailing list