diff options
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); } |