ln: --no-target-directory implies --no-dereference
as in GNU coreutils Signed-off-by: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
4527273f1c
commit
71b268c7d9
@ -41,7 +41,6 @@
|
||||
|
||||
/* This is a NOEXEC applet. Be very careful! */
|
||||
|
||||
|
||||
#define LN_SYMLINK (1 << 0)
|
||||
#define LN_FORCE (1 << 1)
|
||||
#define LN_NODEREFERENCE (1 << 2)
|
||||
@ -63,7 +62,22 @@ int ln_main(int argc, char **argv)
|
||||
int (*link_func)(const char *, const char *);
|
||||
|
||||
opts = getopt32(argv, "^" "sfnbS:vT" "\0" "-1", &suffix);
|
||||
|
||||
/*
|
||||
-s, --symbolic make symbolic links instead of hard links
|
||||
-f, --force remove existing destination files
|
||||
-n, --no-dereference treat LINK_NAME as a normal file if it is a symbolic link to a directory
|
||||
-b like --backup but does not accept an argument
|
||||
--backup[=CONTROL] make a backup of each existing destination file
|
||||
-S, --suffix=SUFFIX override the usual backup suffix
|
||||
-v, --verbose
|
||||
-T, --no-target-directory
|
||||
-d, -F, --directory allow the superuser to attempt to hard link directories
|
||||
-i, --interactive prompt whether to remove destinations
|
||||
-L, --logical dereference TARGETs that are symbolic links
|
||||
-P, --physical make hard links directly to symbolic links
|
||||
-r, --relative create symbolic links relative to link location
|
||||
-t, --target-directory=DIRECTORY specify the DIRECTORY in which to create the links
|
||||
*/
|
||||
last = argv[argc - 1];
|
||||
argv += optind;
|
||||
argc -= optind;
|
||||
@ -86,8 +100,11 @@ int ln_main(int argc, char **argv)
|
||||
src = last;
|
||||
|
||||
if (is_directory(src,
|
||||
(opts & LN_NODEREFERENCE) ^ LN_NODEREFERENCE
|
||||
)
|
||||
/*followlinks:*/ !(opts & (LN_NODEREFERENCE|LN_LINKFILE))
|
||||
/* Why LN_LINKFILE does not follow links:
|
||||
* -T/--no-target-directory implies -n/--no-dereference
|
||||
*/
|
||||
)
|
||||
) {
|
||||
if (opts & LN_LINKFILE) {
|
||||
bb_error_msg_and_die("'%s' is a directory", src);
|
||||
|
Loading…
Reference in New Issue
Block a user