Re: bug in mv (fileutils) 4.1

Jim Meyering <[email protected]>
Newsgroups gmane.comp.gnu.fileutils.bugs
Message-ID <[email protected]>
> 	export POSIXLY_CORRECT=1
> 	mkdir mv_test
> 	cd mv_test
> 	mkdir a c
> 	ln -s a b
> 	mv -v b/ c
> 	alias mv
> 	which mv
>
> I expected, as is written, that the directory a will be moved into
> directory c (the symbolic link b to directory a will be dereferenced),
> but the link b has been moved. There is no alias for mv, mv resides in
> /bin.

Whoops.
I forgot a minor detail :-)
Your report exposed a bug in mv.c:

mv (coreutils-4.5.3) mistakenly strips trailing slashes
from the SOURCE name in some cases.  Here's a fix:

Index: mv.c
===================================================================
RCS file: /fetish/cu/src/mv.c,v
retrieving revision 1.140
diff -u -p -u -p -r1.140 mv.c
--- mv.c	31 Aug 2002 08:52:10 -0000	1.140
+++ mv.c	17 Nov 2002 09:34:18 -0000
@@ -284,14 +284,11 @@ movefile (char *source, char *dest, int
   if (dest_is_dir || (dest_had_trailing_slash && !is_real_dir (source)))
     {
       /* DEST is a directory; build full target filename. */
-      char *src_basename;
-      char *new_dest;
-
-      strip_trailing_slashes (source);
-      src_basename = base_name (source);
-      new_dest = path_concat (dest, src_basename, NULL);
+      char const *src_basename = base_name (source);
+      char *new_dest = path_concat (dest, src_basename, NULL);
       if (new_dest == NULL)
 	xalloc_die ();
+      strip_trailing_slashes (new_dest);
       fail = do_move (source, new_dest, x);
       free (new_dest);
     }

Maybe now, my preceding message makes more sense,
since with the modified mv, your example evokes this diagnostic:

  $ ./mv b/ c
  ./mv: cannot move `b/' to `c/b': Not a directory
  [Exit 1]

Thanks again,
Jim

BTW, the latest sources are here:

  ftp://alpha.gnu.org/gnu/fetish/coreutils-4.5.3.tar.gz
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.