svn commit: r321092 - in stable/11/bin/ln: . tests
Ngie Cooper
ngie at FreeBSD.org
Mon Jul 17 21:11:22 UTC 2017
Author: ngie
Date: Mon Jul 17 21:11:21 2017
New Revision: 321092
URL: https://svnweb.freebsd.org/changeset/base/321092
Log:
MFC r320172,r320173:
r320172:
ln(1): fix -F behavior
When '-F' option is used, the target directory needs to be unlinked.
Currently, the modified target ("target/source") is being unlinked, and
since it doesn't yet exist, the original target isn't removed.
This is fixed by skipping the block where target is modified to
"target/source" when '-F' option is set.
Hence, a symbolic link (with the same name as of the original target) to
the source_file is produced.
Update the test for ln(1) to reflect fix for option '-F'
PR: 219943
r320173:
Don't expect :sF_flag to fail anymore
While here, also add a check to verify that the link target
is updated in the testcase
MFC with: r320172
PR: 219943
Modified:
stable/11/bin/ln/ln.c
stable/11/bin/ln/tests/ln_test.sh
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/bin/ln/ln.c
==============================================================================
--- stable/11/bin/ln/ln.c Mon Jul 17 21:10:08 2017 (r321091)
+++ stable/11/bin/ln/ln.c Mon Jul 17 21:11:21 2017 (r321092)
@@ -245,11 +245,11 @@ linkit(const char *source, const char *target, int isd
/*
* If the target is a directory (and not a symlink if hflag),
- * append the source's name.
+ * append the source's name, unless Fflag is set.
*/
- if (isdir ||
+ if (!Fflag && (isdir ||
(lstat(target, &sb) == 0 && S_ISDIR(sb.st_mode)) ||
- (!hflag && stat(target, &sb) == 0 && S_ISDIR(sb.st_mode))) {
+ (!hflag && stat(target, &sb) == 0 && S_ISDIR(sb.st_mode)))) {
if (strlcpy(bbuf, source, sizeof(bbuf)) >= sizeof(bbuf) ||
(p = basename(bbuf)) == NULL ||
snprintf(path, sizeof(path), "%s/%s", target, p) >=
Modified: stable/11/bin/ln/tests/ln_test.sh
==============================================================================
--- stable/11/bin/ln/tests/ln_test.sh Mon Jul 17 21:10:08 2017 (r321091)
+++ stable/11/bin/ln/tests/ln_test.sh Mon Jul 17 21:11:21 2017 (r321092)
@@ -160,10 +160,10 @@ sF_flag_head()
sF_flag_body()
{
- atf_expect_fail "B isn't being unlinked (bug 219943)"
atf_check mkdir A B
atf_check ln -sF A B
atf_check -o inline:'Symbolic Link\n' stat -f %SHT B
+ atf_check -o inline:'A\n' readlink B
}
atf_test_case sf_flag
More information about the svn-src-all
mailing list