cp,mv: fix -t DIR option
When the '-t DIR' option is used the loop over the remaining arguments should terminate when a NULL pointer is reached. function old new delta mv_main 585 590 +5 cp_main 492 496 +4 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 9/0) Total: 9 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
294d0c85ad
commit
a84bbc5425
@ -252,7 +252,7 @@ int cp_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* else: last is DIR from "t -DIR" */
|
/* else: last is DIR from "-t DIR" */
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
#if ENABLE_FEATURE_CP_LONG_OPTIONS
|
#if ENABLE_FEATURE_CP_LONG_OPTIONS
|
||||||
@ -274,7 +274,7 @@ int cp_main(int argc, char **argv)
|
|||||||
if (copy_file(*argv, dest, flags) < 0) {
|
if (copy_file(*argv, dest, flags) < 0) {
|
||||||
status = EXIT_FAILURE;
|
status = EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
if (*++argv == last) {
|
if (!*++argv || *argv == last) {
|
||||||
/* possibly leaking dest... */
|
/* possibly leaking dest... */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ int mv_main(int argc, char **argv)
|
|||||||
/* else: fall through into "do { move SRC to DIR/SRC } while" loop */
|
/* else: fall through into "do { move SRC to DIR/SRC } while" loop */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* else: last is DIR from "t -DIR" */
|
/* else: last is DIR from "-t DIR" */
|
||||||
|
|
||||||
do {
|
do {
|
||||||
dest = concat_path_file(last, bb_get_last_path_component_strip(*argv));
|
dest = concat_path_file(last, bb_get_last_path_component_strip(*argv));
|
||||||
@ -185,7 +185,7 @@ int mv_main(int argc, char **argv)
|
|||||||
if (dest != last) {
|
if (dest != last) {
|
||||||
free((void *) dest);
|
free((void *) dest);
|
||||||
}
|
}
|
||||||
} while (*++argv != last);
|
} while (*++argv && *argv != last);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
16
testsuite/mv/mv-files-to-dir-2
Normal file
16
testsuite/mv/mv-files-to-dir-2
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
echo file number one > file1
|
||||||
|
echo file number two > file2
|
||||||
|
ln -s file2 link1
|
||||||
|
mkdir dir1
|
||||||
|
TZ=UTC0 touch -d '2000-01-30 05:24:08' dir1/file3
|
||||||
|
mkdir there
|
||||||
|
busybox mv -t there file1 file2 link1 dir1
|
||||||
|
test -f there/file1
|
||||||
|
test -f there/file2
|
||||||
|
test -f there/dir1/file3
|
||||||
|
test -L there/link1
|
||||||
|
test xfile2 = x`readlink there/link1`
|
||||||
|
test ! -e file1
|
||||||
|
test ! -e file2
|
||||||
|
test ! -e link1
|
||||||
|
test ! -e dir1/file3
|
Loading…
Reference in New Issue
Block a user