History log of /freebsd-10.1-release/bin/mv/mv.c
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 272461 02-Oct-2014 gjb

Copy stable/10@r272459 to releng/10.1 as part of
the 10.1-RELEASE process.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

# 256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


# 248597 21-Mar-2013 pjd

- Make 'flags' argument to chflags(2), fchflags(2) and lchflags(2) of type
u_long. Before this change it was of type int for syscalls, but prototypes
in sys/stat.h and documentation for chflags(2) and fchflags(2) (but not
for lchflags(2)) stated that it was u_long. Now some related functions
use u_long type for flags (strtofflags(3), fflagstostr(3)).
- Make path argument of type 'const char *' for consistency.

Discussed on: arch
Sponsored by: The FreeBSD Foundation


# 243072 15-Nov-2012 eadler

Follow the behavior as specified in POSIX:

if (exists AND (NOT f_option) AND
((not_writable AND input_is_terminal) OR i_option))
prompt

in particular, add the test for input_is_terminal

PR: bin/173039
Submitted by: Mark Johnston <markjdb@gmail.com>
Approved by: cperciva
MFC after: 3 days


# 239951 31-Aug-2012 jhb

Add a -h flag similar to the -h flag for ln to force mv(1) to treat a
symbolic link to a directory for the target as a symbolic link instead of
a directory. This makes it possible to atomically update a symbolic
link using rename().

Reviewed by: gj
MFC after: 2 weeks


# 226961 31-Oct-2011 ed

Put some static keywords in the source code.

For these simple utilities, it doesn't harm to make all global variables
static. In fact, this allows the compiler to perform better forms of
optimisation and analysis.


# 225954 03-Oct-2011 ivoras

Don't chop IO into small pieces, follow cp(1) and just use MAXPHYS.


# 196841 04-Sep-2009 trasz

Add NFSv4 ACL support to mv(1).

Reviewed by: rwatson


# 180604 18-Jul-2008 delphij

Staticify symbols that will not be used in other
places.


# 174935 27-Dec-2007 dds

- Roll-back attempts to mimic rename(2) atomicity introduced in 1.47,
and follow the letter of the POSIX specification.

- Moving a directory to an existing non-empty directory will now fail,
as required.

- Improve consistency and remove some style bugs of earlier versions.

This version passes all tests of tools/regression/bin/mv/regress.sh 1.6

Reviewed by: bde
MFC after: 1 month


# 174709 17-Dec-2007 dds

Calling any function from vfork other than exec* and _exit yields
undefined behavior.

Noted by: alfred


# 174667 16-Dec-2007 dds

Eliminate gcc "variable clobbered" warnings by declaring the variables
living across the vfork as volatile.

Noted by: kan


# 174664 16-Dec-2007 dds

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


# 149790 05-Sep-2005 csjp

Attempt to complete the userspace integration of POSIX.1e extended ACLs.
This includes adding support for ACLs into cp(1) and mv(1) userspace
utilities.

For mv(1), if _PC_ACL_EXTENDED is in effect for the source AND destination
operands, the destination file's ACLs shall reflect the source.

For cp(1), if _PC_ACL_EXTENDED is in effect for both source and destination
operands, and -p has been specified, the ACLs from the source shall be
preserved on the destination.

MFC after: 1 month


# 146418 19-May-2005 mux

Correct a few places where we called warn() when warnx() should have
been used.

Submitted by: "Liam J. Foy" <liamfoy@sepulcrum.org>
Obtained from: DragonFlyBSD


# 139969 10-Jan-2005 imp

/*- or .\"- or #- to begin license clauses.


# 127958 06-Apr-2004 markm

Remove clause 3 from the UCB licenses.

OK'ed by: imp, core


# 127272 21-Mar-2004 pjd

When symbolic link is pointed onto a mount point, it can't be moved
to a different file system.
Patch in PR was incorrect.

PR: bin/64430
Submitted by: Samuel Tardieu
MFC after: 3 days


# 114763 05-May-2003 obrien

Centralize _PATH_* definitions.

Submitted by: Tim Kientzle <kientzle@acm.org> (embellished by me)


# 114433 01-May-2003 obrien

Quiet warnings about copyright[].


# 99678 09-Jul-2002 johan

Update usage for the addition of -n in rev 1.35 of mv.c.

Approved by: obrien, sheldonh (mentor).


# 98280 16-Jun-2002 tjr

When trying to emulate a cross-device move operation with cp and rm, add
a "--" argument after the options so filenames with leading dashes are
handled correctly.

PR: 39318
Submitted by: Serge van den Boom <svdb@stack.nl>
MFC after: 1 week


# 96806 17-May-2002 jmallett

Remove local definition of _PATH_CP, and use <paths.h>, _PATH_CP is in the
CURRENT <paths.h>.


# 92974 22-Mar-2002 obrien

Update SCM ID.


# 92935 22-Mar-2002 obrien

Add the -n option, which automatically answers "no" to the overwrite question.


# 91085 22-Feb-2002 markm

Warnings fixes.


# 90644 13-Feb-2002 imp

Move user_from_uid to pwd.h
Move group_from_gid to grp.h
Remove from stdlib.h
Make the prototypes match the code
Fix rm and mv to include new files.

NetBSD has these defined in those files, and others too that I've not
done.

Approved by: terminal room kabal
Reviewed by: jhb, phk


# 90114 02-Feb-2002 imp

missed a few registers


# 90110 02-Feb-2002 imp

o __P has been reoved
o Old-style K&R declarations have been converted to new C89 style
o register has been removed
o prototype for main() has been removed (gcc3 makes it an error)
o int main(int argc, char *argv[]) is the preferred main definition.
o Attempt to not break style(9) conformance for declarations more than
they already are.


# 79452 09-Jul-2001 brian

Fix the type of the NULL arg to execl()

Idea from: Theo de Raadt <deraadt@openbsd.org>


# 77409 29-May-2001 imp

Use PATH_MAX in preference to MAXPATHLEN.


# 76878 20-May-2001 kris

Silence WARNS=2 and BDECFLAGS on alpha and i386, except for mode_t
warnings.

MFC after: 1 week


# 63680 20-Jul-2000 sada

Don't emit a warning message if fchflags() returns EOPNOTSUPP

Requested by: FUJISHIMA Satsuki <k5@cheerful.com>
Obtained from: OpenBSD


# 63225 15-Jul-2000 sada

To make inherit file flags when mv(1) moves file between directories
on different file systems.

PR: bin/12375
Submitted by: Takashi SHIRAI <shirai@nintendo.co.jp>
No response by: steve
No problem with: building 5-current world


# 62963 11-Jul-2000 dwmalone

Use lstat(2) instead of stat(2) when deciding if we should fastcopy
a file. This fixes moving symlinks across partitions.

PR: 17847
Reviewed by: bde


# 50544 29-Aug-1999 mharo

add verbose flag


# 50471 27-Aug-1999 peter

$Id$ -> $FreeBSD$


# 40301 13-Oct-1998 des

Calls one or more of malloc(), warn(), err(), syslog(), execlp() or
execvp() in the child branch of a vfork(). Changed to use fork()
instead.

Some of these (mv, find, apply, xargs) might benefit greatly from
being rewritten to use vfork() properly.

PR: Loosely related to bin/8252
Approved by: jkh and bde


# 37245 28-Jun-1998 bde

Fixed printf format errors.


# 36785 09-Jun-1998 imp

Make sure we don't overflow the path buffer. Exit if we do.
Obtained from or inspired by: A similar change in OpenBSD by theo


# 36383 25-May-1998 steve

Don't append a '/' to the destination directory if there
is already one there.

PR: 3025


# 36049 15-May-1998 charnier

Correct use of .Nm. Add rcsid.


# 31664 10-Dec-1997 eivind

Merge from OpenBSD:
> Error out if someone tries to mv a mount point. Old behavior was to
> move all files contained in the mounted filesystem to the dest. dir
> which could be quite nasty. Personally, I think rename(2) should
> return EPERM or EINVAL instead of EXDEV.

Obtained from: OpenBSD mv.c rev 1.6 by Todd Miller <millert@openbsd.org>


# 30727 26-Oct-1997 helbig

Synchronize usage() and man page.
Pointed out by bde.


# 30106 04-Oct-1997 wosch

mv(1) is too silent if used with the option -i. It should
print which input mv(1) expect (y/n) and print a warning if the
file was not overwritten.


# 29933 28-Sep-1997 wosch

Endless loop.

$ touch from to
$ echo -n loop | mv -i from to
overwrite to?
^C


# 24348 28-Mar-1997 imp

compare return value from getopt against -1 rather than EOF, per the final
posix standard on the topic.


# 23525 08-Mar-1997 guido

Make mv more robust. A race has been fixed, as well as an extra warning
added when sbits are cleared.
Fixes PR 1351 and 1377 (I hope).


# 22988 22-Feb-1997 peter

Revert $FreeBSD$ to $Id$


# 21673 14-Jan-1997 jkh

Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.


# 20420 14-Dec-1996 steve

-Wall cleaning.


# 14305 01-Mar-1996 wosch

delete unused label endarg
correct indent of last new code
fix usage string, option -f before option -i (alphabetic order)


# 14166 20-Feb-1996 wosch

option -f and -i are exclusive (Posix)
respond `Y' is equal to `y'
update usage string
prompt only if source exist


# 14156 19-Feb-1996 pst

-- is implemented in getopt(3)
-? is an unnecessary case statement and not useful


# 14154 18-Feb-1996 wosch

delete my last commit
Submitted by: pst, ache


# 14144 18-Feb-1996 wosch

option -f and -i are exclusive
all flag variables initialized with zero
respond `Y' is equal to `y'
update usage string
prompt only if source exist

ignore -i option if file descriptor stdin not refers to a valid
terminal type device


# 11298 07-Oct-1995 bde

Handle trailing slashes in source filenames correctly. E.g., rewrite
`mv foo/ ../..' to `mv foo/ ../../foo/', not to `mv foo/ ../../'. The
latter caused a panic. Before the trailing slash changes in the kernel,
the trailing slashes caused the rename() for this mv to fail earlier, so
there was no panic in 2.0.

Fixes part of PR 760.


# 3044 24-Sep-1994 dg

Added $Id$


# 1557 26-May-1994 rgrimes

This commit was generated by cvs2svn to compensate for changes in r1556,
which included commits to RCS files with non-trunk default branches.


# 1556 26-May-1994 rgrimes

BSD 4.4 Lite bin Sources