[PATCH 08/41] robocopy: add copy all subdirectories flag (/S)
Florian Eder
others.meder at gmail.com
Mon Sep 6 09:54:45 CDT 2021
Implements the /S switch, which copies all subdirectories of a directory
Signed-off-by: Florian Eder <others.meder at gmail.com>
---
However, /LEV has a higher priority than /S, so "/S /LEV:2" limits to depth 2
---
programs/robocopy/main.c | 10 +++++++++-
programs/robocopy/robocopy.h | 2 ++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/programs/robocopy/main.c b/programs/robocopy/main.c
index 747c242e7de..6ebb0e721c4 100644
--- a/programs/robocopy/main.c
+++ b/programs/robocopy/main.c
@@ -142,14 +142,22 @@ static void parse_arguments(int argc, WCHAR *argv[])
for (i = 1; i < argc; i++)
{
if (is_valid_robocopy_flag(argv[i]))
+ /* s - Copy Subdirectories */
+ if (!wcsicmp(argv[i], L"/s"))
+ {
+ options.copy_subdirectories = TRUE;
+ if (!options.user_limited_subdirectories_depth)
+ options.max_subdirectories_depth = 0;
+ }
/* lev - Limit depth of subdirectories */
- if (!wcsnicmp(argv[i], L"/lev:", 5))
+ else if (!wcsnicmp(argv[i], L"/lev:", 5))
{
long value = 0;
value = wcstol(&(argv[i][5]), NULL, 10);
if (value >= 0)
{
options.max_subdirectories_depth = (UINT)value;
+ options.user_limited_subdirectories_depth = TRUE;
}
}
else
diff --git a/programs/robocopy/robocopy.h b/programs/robocopy/robocopy.h
index 0e33effe331..4b322f8b6f9 100644
--- a/programs/robocopy/robocopy.h
+++ b/programs/robocopy/robocopy.h
@@ -36,6 +36,8 @@ struct robocopy_options {
WCHAR *source;
struct path_array* files;
UINT max_subdirectories_depth;
+ BOOL user_limited_subdirectories_depth;
+ BOOL copy_subdirectories;
};
/* Resource strings */
--
2.32.0
More information about the wine-devel
mailing list