On Mon, Mar 24, 2003 at 06:55:11PM +0000, Richard Dawe wrote: > Hello. > > Alain Williams wrote: > > Please find below a patch to the 'mv' program. > [snip] > > Which version of fileutils or coreutils is the patch against? > > The current development version is coreutils 4.5.11. coreutils is a combined > package of fileutils, sh-utils, textutils. You can get the latest version > here: > > http://fetish.sf.net/coreutils-4.5.11.tar.gz > or: http://fetish.sf.net/coreutils-4.5.11.tar.bz2
Please find appended the patch against 4.5.11, there is now also a patch for coreutils.texi. Cheers --- copy.h.orig Sat Jan 4 10:32:54 2003 +++ copy.h Mon Mar 24 11:31:04 2003 @@ -132,6 +132,14 @@ if USE_MODE is nonzero. */ mode_t mode; + /* Dont attempt to set permission bits on the destination. + Useful when the destination file system does not support this. */ + int dont_chmod_bits; + + /* Dont attempt to set owner/group on the destination. + Useful when the destination file system does not support this. */ + int dont_owner_and_group; + /* Control creation of sparse files. */ enum Sparse_type sparse_mode; --- copy.c.orig Sun Mar 2 06:05:56 2003 +++ copy.c Mon Mar 24 11:45:50 2003 @@ -1446,7 +1446,7 @@ /* There's no need to preserve timestamps or permissions. */ preserve_metadata = 0; - if (x->preserve_ownership) + if (x->preserve_ownership && ! x->dont_owner_and_group) { /* Preserve the owner and group of the just-`copied' symbolic link, if possible. */ @@ -1511,7 +1511,8 @@ /* Avoid calling chown if we know it's not necessary. */ if (x->preserve_ownership - && (new_dst || !SAME_OWNER_AND_GROUP (src_sb, dst_sb))) + && (new_dst || !SAME_OWNER_AND_GROUP (src_sb, dst_sb)) + && !(x->dont_owner_and_group)) { ran_chown = 1; if (DO_CHOWN (chown, dst_path, src_sb.st_uid, src_sb.st_gid)) @@ -1542,7 +1543,8 @@ return delayed_fail; if ((x->preserve_mode || new_dst) - && (x->copy_as_regular || S_ISREG (src_type) || S_ISDIR (src_type))) + && (x->copy_as_regular || S_ISREG (src_type) || S_ISDIR (src_type)) + && !(x->dont_chmod_bits)) { if (chmod (dst_path, get_dest_mode (x, src_mode))) { --- mv.c.orig Sun Nov 17 09:34:09 2002 +++ mv.c Mon Mar 24 12:12:14 2003 @@ -84,6 +84,8 @@ {"backup", optional_argument, NULL, 'b'}, {"force", no_argument, NULL, 'f'}, {"interactive", no_argument, NULL, 'i'}, + {"no-mode", no_argument, NULL, 'M'}, + {"no-owner", no_argument, NULL, 'O'}, {"reply", required_argument, NULL, REPLY_OPTION}, {"strip-trailing-slashes", no_argument, NULL, STRIP_TRAILING_SLASHES_OPTION}, {"suffix", required_argument, NULL, 'S'}, @@ -135,6 +137,8 @@ x->symbolic_link = 0; x->set_mode = 0; x->mode = 0; + x->dont_chmod_bits = 0; + x->dont_owner_and_group = 0; x->stdin_tty = isatty (STDIN_FILENO); /* Find out the current file creation mask, to knock the right bits @@ -334,6 +338,8 @@ existing destination file\n\ --strip-trailing-slashes remove any trailing slashes from each SOURCE\n\ argument\n\ + -M, --no-mode don't try to preserve mode on copy\n\ + -O, --no-owner don't try to preserve user & group on copy\n\ -S, --suffix=SUFFIX override the usual backup suffix\n\ "), stdout); fputs (_("\ @@ -393,7 +399,7 @@ errors = 0; - while ((c = getopt_long (argc, argv, "bfiuvS:V:", long_options, NULL)) != -1) + while ((c = getopt_long (argc, argv, "bfiuvS:V:MO", long_options, NULL)) != -1) { switch (c) { @@ -438,6 +444,12 @@ make_backups = 1; backup_suffix_string = optarg; break; + case 'M': // don't try to preserve mode on copy + x.dont_chmod_bits = 1; + break; + case 'O': // don't try to preserve user & group on copy + x.dont_owner_and_group = 1; + break; case_GETOPT_HELP_CHAR; case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS); default: --- coreutils.texi.orig Thu Mar 13 13:15:50 2003 +++ coreutils.texi Tue Mar 25 10:04:36 2003 @@ -6485,6 +6485,11 @@ own the file, or have write permission on its directory.) If the response does not begin with @samp{y} or @samp{Y}, the file is skipped. +The @code{-M} (@code{--no-mode}) and @code{-O} (@code{--no-owner}) options +are provided for when the target directory is on a file system that does not +support explicit file permissions or ownership; where @command{mv} would print +error messages that are, essentially, meaningless. + @emph{Warning}: If you try to move a symlink that points to a directory, and you specify the symlink with a trailing slash, then @command{mv} doesn't move the symlink but instead moves the directory referenced @@ -6555,6 +6560,18 @@ Append @var{suffix} to each backup file made with @option{-b}. @xref{Backup options}. [EMAIL PROTECTED] -M [EMAIL PROTECTED] --no-mode [EMAIL PROTECTED] -M [EMAIL PROTECTED] --no-mode +Do not attempt to set the mode on the file once copied. + [EMAIL PROTECTED] -O [EMAIL PROTECTED] --no-owner [EMAIL PROTECTED] -O [EMAIL PROTECTED] --no-owner +Do not attempt to set the owner/group on the file once copied. + @itemx @[EMAIL PROTECTED]@var{directory}} @opindex --target-directory @cindex target directory -- Alain Williams #include <std_disclaimer.h> _______________________________________________ Bug-fileutils mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-fileutils