diff options
author | sheldonh <sheldonh@FreeBSD.org> | 1999-12-20 16:13:47 +0000 |
---|---|---|
committer | sheldonh <sheldonh@FreeBSD.org> | 1999-12-20 16:13:47 +0000 |
commit | 61c79b122e44f58607ac5f393bcf9b4a7a821178 (patch) | |
tree | ed04b5fbbf6e1897e6a52c236a7e251ae7ef66c5 /bin/ln | |
parent | fb59e40253fef0113a40fb946389c81e296d4068 (diff) | |
download | FreeBSD-src-61c79b122e44f58607ac5f393bcf9b4a7a821178.zip FreeBSD-src-61c79b122e44f58607ac5f393bcf9b4a7a821178.tar.gz |
Add link(1) and unlink(1) as special cases of ln(1) and rm(1)
respectively, in accordance with SUSv2.
This differs from the approach taken in NetBSD, but provides
less obscure error messages in at least the EISDIR case and
does not take up additional disk space for new binaries.
PR: 13071
PR: 13074
Requested by: James Howard <howardjp@wam.umd.edu>
Diffstat (limited to 'bin/ln')
-rw-r--r-- | bin/ln/Makefile | 3 | ||||
-rw-r--r-- | bin/ln/ln.1 | 18 | ||||
-rw-r--r-- | bin/ln/ln.c | 24 |
3 files changed, 41 insertions, 4 deletions
diff --git a/bin/ln/Makefile b/bin/ln/Makefile index b177ea8..bfbcef8 100644 --- a/bin/ln/Makefile +++ b/bin/ln/Makefile @@ -5,4 +5,7 @@ PROG= ln MAN1= ln.1 MAN7= symlink.7 +LINKS= ${BINDIR}/ln ${BINDIR}/link +MLINKS= ln.1 link.1 + .include <bsd.prog.mk> diff --git a/bin/ln/ln.1 b/bin/ln/ln.1 index ea9458f..bc8546c 100644 --- a/bin/ln/ln.1 +++ b/bin/ln/ln.1 @@ -39,7 +39,8 @@ .Dt LN 1 .Os BSD 4 .Sh NAME -.Nm ln +.Nm ln , +.Nm link .Nd make links .Sh SYNOPSIS .Nm ln @@ -50,6 +51,8 @@ .Op Fl fsv .Ar source_file ... .Op target_dir +.Nm link +.Ar source_file Ar target_file .Sh DESCRIPTION The .Nm @@ -122,6 +125,15 @@ makes links in .Ar target_dir to all the named source files. The links made will have the same name as the files being linked to. +.Pp +When the utility is called as +.Nm link , +exactly two arguments must be supplied, +neither of which may specify a directory. +No options may be supplied in this simple mode of operation, +which simply performs a +.Xr link 2 +operation using the two passed arguments. .Sh SEE ALSO .Xr link 2 , .Xr lstat 2 , @@ -138,3 +150,7 @@ An .Nm command appeared in .At v1 . +The simplified +.Nm link +command conforms to +.St -susv2 . diff --git a/bin/ln/ln.c b/bin/ln/ln.c index 48dbeae..dc2db0f 100644 --- a/bin/ln/ln.c +++ b/bin/ln/ln.c @@ -73,7 +73,24 @@ main(argc, argv) extern int optind; struct stat sb; int ch, exitval; - char *sourcedir; + char *p, *sourcedir; + + /* + * Test for the special case where the utility is called as + * "link", for which the functionality provided is greatly + * simplified. + */ + if ((p = rindex(argv[0], '/')) == NULL) + p = argv[0]; + else + ++p; + if (strcmp(p, "link") == 0) { + if (argc == 3) { + linkf = link; + exit(linkit(argv[1], argv[2], 0)); + } else + usage(); + } while ((ch = getopt(argc, argv, "fsv")) != -1) switch (ch) { @@ -167,8 +184,9 @@ linkit(target, source, isdir) void usage() { - (void)fprintf(stderr, "%s\n%s\n", + (void)fprintf(stderr, "%s\n%s\n%s\n", "usage: ln [-fsv] file1 file2", - " ln [-fsv] file ... directory"); + " ln [-fsv] file ... directory", + " link file1 file2"); exit(1); } |