From d94c253b07d75ab5c368dbd7a0cc3035b019ccfd Mon Sep 17 00:00:00 2001 From: Kiyoshi Aman Date: Fri, 15 Mar 2019 20:53:44 -0500 Subject: {usr.sbin/{link,unlink} => usr.bin}: move existing (un)link implementations into usr.bin since there's no reason for them to be in sbin --- usr.bin/link/link.8 | 64 +++++++++++++++++++++++++++++++++++ usr.bin/link/link.c | 96 ++++++++++++++++++++++++++++++----------------------- 2 files changed, 119 insertions(+), 41 deletions(-) create mode 100644 usr.bin/link/link.8 (limited to 'usr.bin/link') diff --git a/usr.bin/link/link.8 b/usr.bin/link/link.8 new file mode 100644 index 0000000..9b994ed --- /dev/null +++ b/usr.bin/link/link.8 @@ -0,0 +1,64 @@ +.\" $NetBSD: link.8,v 1.8 2017/07/04 07:08:42 wiz Exp $ +.\" +.\" Copyright (c) 1999 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Klaus Klein. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd July 18, 1999 +.Dt LINK 8 +.Os +.Sh NAME +.Nm link +.Nd call the +.Fn link +function +.Sh SYNOPSIS +.Nm +.Ar file1 +.Ar file2 +.Sh DESCRIPTION +The +.Nm +utility performs the function call +.Fn link file1 file2 . +.Pp +.Ar file1 +must be the pathname of an existing file, and +.Ar file2 +is the pathname of the new link to +.Ar file1 +to be created. +.Sh EXIT STATUS +.Ex -std link +.Sh SEE ALSO +.Xr ln 1 , +.Xr link 2 , +.Xr unlink 8 +.Sh STANDARDS +The +.Nm +utility conforms to +.St -xcu5 . diff --git a/usr.bin/link/link.c b/usr.bin/link/link.c index ed48857..6a45cc1 100644 --- a/usr.bin/link/link.c +++ b/usr.bin/link/link.c @@ -1,57 +1,71 @@ -/* - * link.c -- Create a link between two paths, per link(1p). +/* $NetBSD: link.c,v 1.5 2011/08/30 19:18:17 joerg Exp $ */ + +/*- + * Copyright (c) 1999 The NetBSD Foundation, Inc. + * All rights reserved. * - * Copyright (c) 2019 Kiyoshi Aman, all rights reserved. + * This code is derived from software contributed to The NetBSD Foundation + * by Klaus Klein. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. - * * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. Neither the name of the copyright holder nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -#define _POSIX_C_SOURCE 200112L +#include +#ifndef lint +__COPYRIGHT( +"@(#) Copyright (c) 1999\ + The NetBSD Foundation, Inc. All rights reserved."); +__RCSID("$NetBSD: link.c,v 1.5 2011/08/30 19:18:17 joerg Exp $"); +#endif -#include +#include #include #include -#include -#include - -int main(int argc, char **argv) { - int error = 0; - if ((argc < 3) || (argc > 3)) { - fprintf(stderr, "Usage: %s file1 file2\n\nCreates a hard link for file1 which points to file2.\n", argv[0]); - exit(EXIT_FAILURE); - } - if ((error = link(argv[1], argv[2])) != 0) { - char msg[128]; - strerror_r(errno, msg, 128); - fprintf(stderr, "Could not create link: %s\n", msg); - } else { - return EXIT_SUCCESS; - } +#include + +__dead static void usage(void); + +int +main(int argc, char *argv[]) +{ + + (void)setlocale(LC_ALL, ""); + + if (argc != 3) + usage(); + + if (link(argv[1], argv[2]) != 0) { + perror("link"); + exit(EXIT_FAILURE); + } + + exit(EXIT_SUCCESS); + /* NOTREACHED */ +} + +static void +usage(void) +{ + + (void)fprintf(stderr, "usage: link file1 file2\n"); + exit(EXIT_FAILURE); } -- cgit v1.2.3-60-g2f50