diff --git a/daemon/cpmv.c b/daemon/cpmv.c index 516fa978e..f91c9afcb 100644 --- a/daemon/cpmv.c +++ b/daemon/cpmv.c @@ -42,6 +42,12 @@ do_cp_a (const char *src, const char *dest) return cpmv_cmd (str_cp, "-a", src, dest); } +int +do_cp_r (const char *src, const char *dest) +{ + return cpmv_cmd (str_cp, "-rP", src, dest); +} + int do_mv (const char *src, const char *dest) { diff --git a/generator/actions.ml b/generator/actions.ml index b0b4be7bc..a22d43d26 100644 --- a/generator/actions.ml +++ b/generator/actions.ml @@ -11146,6 +11146,28 @@ about the contents of this file, see L. See also C." }; + { defaults with + name = "cp_r"; + style = RErr, [Pathname "src"; Pathname "dest"], []; + proc_nr = Some 401; + tests = [ + InitScratchFS, Always, TestResultString ( + [["mkdir"; "/cp_r1"]; + ["mkdir"; "/cp_r2"]; + ["write"; "/cp_r1/file"; "file content"]; + ["cp_r"; "/cp_r1"; "/cp_r2"]; + ["cat"; "/cp_r2/cp_r1/file"]], "file content") + ]; + shortdesc = "copy a file or directory recursively"; + longdesc = "\ +This copies a file or directory from C to C +recursively using the C command. + +Most users should use C instead. This command +is useful when you don't want to preserve permissions, because +the target filesystem does not support it (primarily when +writing to DOS FAT filesystems)." }; + ] (* Non-API meta-commands available only in guestfish. diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR index d411bb7c1..066cbfe90 100644 --- a/src/MAX_PROC_NR +++ b/src/MAX_PROC_NR @@ -1 +1 @@ -400 +401