Alexander Kabaev wrote:
On Sun, 16 Dec 2007 14:14:31 +0000 (UTC)
Diomidis Spinellis <[EMAIL PROTECTED]> wrote:

dds         2007-12-16 14:14:31 UTC

  FreeBSD src repository

  Modified files:
bin/mv mv.c Log:
  When moving a directory across devices to a place where a directory
  with the same name exists, delete that directory first, before
performing the copy.  This ensures that mv(1) across devices follows
the semantics of rename(2), as required by POSIX.
This change could introduce the potential of data loss, even if the
  copy fails, violating the atomicity properties of rename(2).  This
is (mostly) mitigated by first renaming the destination and
obliterating it only after a succesfull copy.
The above logic also led to the introduction of code that will
cleanup the results of a partial copy, if a cross-device copy fails.
PR: bin/118367
  MFC after:      1 month
Revision Changes Path
  1.47      +83 -23    src/bin/mv/mv.c

http://cvsweb.FreeBSD.org/src/bin/mv/mv.c.diff?r1=1.46&r2=1.47

This breaks make buildworld on amd64 at least:


/usr/src/bin/mv/mv.c: In function 'copy': /usr/src/bin/mv/mv.c:361:
warning: variable 'rval' might be clobbered by 'longjmp' or 'vfork'
/usr/src/bin/mv/mv.c:361: warning:variable 'i' might be clobbered by
'longjmp' or 'vfork'


Thanks - sorry - I fixed it in 1.48.

--
Diomidis Spinellis
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to