Module Name:    src
Committed By:   kamil
Date:           Sun Feb  2 21:49:44 UTC 2020

Modified Files:
        src/distrib/sets/lists/base: mi
        src/distrib/sets/lists/debug: mi
        src/distrib/sets/lists/man: mi
        src/usr.bin: Makefile
Added Files:
        src/usr.bin/realpath: Makefile realpath.1 realpath.c

Log Message:
Port realpath(1) from FreeBSD

realpath(1) wraps realpath(3) and returns resolved physical path.

This utility shipped with GNU and FreeBSD is sometimes
used in scripts in the wild.


To generate a diff of this commit:
cvs rdiff -u -r1.1226 -r1.1227 src/distrib/sets/lists/base/mi
cvs rdiff -u -r1.292 -r1.293 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.1678 -r1.1679 src/distrib/sets/lists/man/mi
cvs rdiff -u -r1.232 -r1.233 src/usr.bin/Makefile
cvs rdiff -u -r0 -r1.1 src/usr.bin/realpath/Makefile \
    src/usr.bin/realpath/realpath.1 src/usr.bin/realpath/realpath.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/base/mi
diff -u src/distrib/sets/lists/base/mi:1.1226 src/distrib/sets/lists/base/mi:1.1227
--- src/distrib/sets/lists/base/mi:1.1226	Sun Jan 19 20:41:17 2020
+++ src/distrib/sets/lists/base/mi	Sun Feb  2 21:49:44 2020
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1226 2020/01/19 20:41:17 riastradh Exp $
+# $NetBSD: mi,v 1.1227 2020/02/02 21:49:44 kamil Exp $
 #
 # Note:	Don't delete entries from here - mark them as "obsolete" instead,
 #	unless otherwise stated below.
@@ -923,6 +923,7 @@
 ./usr/bin/rcsmerge				base-rcs-bin
 ./usr/bin/rdist					base-netutil-bin
 ./usr/bin/readlink				base-util-bin
+./usr/bin/realpath				base-util-bin
 ./usr/bin/renice				base-util-bin
 ./usr/bin/reset					base-util-bin
 ./usr/bin/rev					base-util-bin

Index: src/distrib/sets/lists/debug/mi
diff -u src/distrib/sets/lists/debug/mi:1.292 src/distrib/sets/lists/debug/mi:1.293
--- src/distrib/sets/lists/debug/mi:1.292	Sun Jan 19 10:50:26 2020
+++ src/distrib/sets/lists/debug/mi	Sun Feb  2 21:49:44 2020
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.292 2020/01/19 10:50:26 martin Exp $
+# $NetBSD: mi,v 1.293 2020/02/02 21:49:44 kamil Exp $
 ./etc/mtree/set.debug                           comp-sys-root
 ./usr/lib					comp-sys-usr		compatdir
 ./usr/lib/i18n/libBIG5_g.a			comp-c-debuglib		debuglib,compatfile
@@ -735,6 +735,7 @@
 ./usr/libdata/debug/usr/bin/rcsmerge.debug	comp-rcs-debug		debug
 ./usr/libdata/debug/usr/bin/rdist.debug		comp-netutil-debug	debug
 ./usr/libdata/debug/usr/bin/readelf.debug	comp-util-debug		binutils,debug
+./usr/libdata/debug/usr/bin/realpath.debug	comp-util-debug		debug
 ./usr/libdata/debug/usr/bin/refer.debug		comp-groff-debug	groff,debug
 ./usr/libdata/debug/usr/bin/renice.debug	comp-util-debug		debug
 ./usr/libdata/debug/usr/bin/rev.debug		comp-util-debug		debug

Index: src/distrib/sets/lists/man/mi
diff -u src/distrib/sets/lists/man/mi:1.1678 src/distrib/sets/lists/man/mi:1.1679
--- src/distrib/sets/lists/man/mi:1.1678	Wed Jan 29 18:39:04 2020
+++ src/distrib/sets/lists/man/mi	Sun Feb  2 21:49:44 2020
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1678 2020/01/29 18:39:04 maya Exp $
+# $NetBSD: mi,v 1.1679 2020/02/02 21:49:44 kamil Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -480,6 +480,7 @@
 ./usr/share/man/cat1/rcsmerge.0			man-rcs-catman		.cat
 ./usr/share/man/cat1/rdist.0			man-netutil-catman	.cat
 ./usr/share/man/cat1/readlink.0			man-util-catman		.cat
+./usr/share/man/cat1/realpath.0			man-util-catman		.cat
 ./usr/share/man/cat1/rehash.0			man-util-catman		.cat
 ./usr/share/man/cat1/repeat.0			man-util-catman		.cat
 ./usr/share/man/cat1/reset.0			man-util-catman		.cat
@@ -3726,6 +3727,7 @@
 ./usr/share/man/html1/rcsmerge.html		man-rcs-htmlman		html
 ./usr/share/man/html1/rdist.html		man-netutil-htmlman	html
 ./usr/share/man/html1/readlink.html		man-util-htmlman	html
+./usr/share/man/html1/realpath.html		man-util-htmlman	html
 ./usr/share/man/html1/rehash.html		man-util-htmlman	html
 ./usr/share/man/html1/repeat.html		man-util-htmlman	html
 ./usr/share/man/html1/reset.html		man-util-htmlman	html
@@ -6622,6 +6624,7 @@
 ./usr/share/man/man1/rcsmerge.1			man-rcs-man		.man
 ./usr/share/man/man1/rdist.1			man-netutil-man		.man
 ./usr/share/man/man1/readlink.1			man-util-man		.man
+./usr/share/man/man1/realpath.1			man-util-man		.man
 ./usr/share/man/man1/rehash.1			man-util-man		.man
 ./usr/share/man/man1/repeat.1			man-util-man		.man
 ./usr/share/man/man1/reset.1			man-util-man		.man

Index: src/usr.bin/Makefile
diff -u src/usr.bin/Makefile:1.232 src/usr.bin/Makefile:1.233
--- src/usr.bin/Makefile:1.232	Tue Jul 24 15:26:16 2018
+++ src/usr.bin/Makefile	Sun Feb  2 21:49:43 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.232 2018/07/24 15:26:16 christos Exp $
+#	$NetBSD: Makefile,v 1.233 2020/02/02 21:49:43 kamil Exp $
 #	from: @(#)Makefile	8.3 (Berkeley) 1/7/94
 
 .include <bsd.own.mk>
@@ -22,7 +22,7 @@ SUBDIR= apply asa at audio audiocfg \
 	nbperf nc netgroup netstat newgrp newsyslog nfsstat nice nl nohup \
 	pagesize passwd paste patch pathchk pkill pmap pr \
 	printenv printf progress pwait pwhash qsubst quota radioctl rdist \
-	renice rev revoke rfcomm_sppd rlogin rpcgen rpcinfo rs rsh \
+	realpath renice rev revoke rfcomm_sppd rlogin rpcgen rpcinfo rs rsh \
 	rup ruptime rusers rwall rwho \
 	script sdiff sdpquery sed seq shar shlock \
 	showmount shuffle sockstat sort sortinfo \

Added files:

Index: src/usr.bin/realpath/Makefile
diff -u /dev/null src/usr.bin/realpath/Makefile:1.1
--- /dev/null	Sun Feb  2 21:49:44 2020
+++ src/usr.bin/realpath/Makefile	Sun Feb  2 21:49:44 2020
@@ -0,0 +1,6 @@
+#	$NetBSD: Makefile,v 1.1 2020/02/02 21:49:44 kamil Exp $
+# $FreeBSD: head/bin/realpath/Makefile 298107 2016-04-16 07:45:30Z gjb $
+
+PROG=	realpath
+
+.include <bsd.prog.mk>
Index: src/usr.bin/realpath/realpath.1
diff -u /dev/null src/usr.bin/realpath/realpath.1:1.1
--- /dev/null	Sun Feb  2 21:49:44 2020
+++ src/usr.bin/realpath/realpath.1	Sun Feb  2 21:49:44 2020
@@ -0,0 +1,81 @@
+.\"	$NetBSD: realpath.1,v 1.1 2020/02/02 21:49:44 kamil Exp $
+.\"-
+.\" Copyright (c) 1990, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the Institute of Electrical and Electronics Engineers, Inc.
+.\"
+.\" 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 University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+.\"
+.\"     @(#)pwd.1	8.2 (Berkeley) 4/28/95
+.\" From: src/bin/pwd/pwd.1,v 1.11 2000/11/20 11:39:39 ru Exp
+.\" $FreeBSD: head/bin/realpath/realpath.1 314436 2017-02-28 23:42:47Z imp $
+.\"
+.Dd February 2, 2020
+.Dt REALPATH 1
+.Os
+.Sh NAME
+.Nm realpath
+.Nd return resolved physical path
+.Sh SYNOPSIS
+.Nm
+.Op Fl q
+.Op Ar path ...
+.Sh DESCRIPTION
+The
+.Nm
+utility uses the
+.Xr realpath 3
+function to resolve all symbolic links, extra
+.Ql /
+characters and references to
+.Pa /./
+and
+.Pa /../
+in
+.Ar path .
+If
+.Ar path
+is absent, the current working directory
+.Pq Sq Pa .\&
+is assumed.
+.Pp
+If
+.Fl q
+is specified, warnings will not be printed when
+.Xr realpath 3
+fails.
+.Sh EXIT STATUS
+.Ex -std
+.Sh SEE ALSO
+.Xr realpath 3
+.Sh HISTORY
+The
+.Nm
+utility first appeared in
+.Fx 4.3
+and was imported into
+.Nx 10 .
Index: src/usr.bin/realpath/realpath.c
diff -u /dev/null src/usr.bin/realpath/realpath.c:1.1
--- /dev/null	Sun Feb  2 21:49:44 2020
+++ src/usr.bin/realpath/realpath.c	Sun Feb  2 21:49:44 2020
@@ -0,0 +1,93 @@
+/*	$NetBSD: realpath.c,v 1.1 2020/02/02 21:49:44 kamil Exp $	*/
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1991, 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * 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 University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+ */
+
+#include <sys/cdefs.h>
+#if !defined(lint)
+#if 0
+__FBSDID("$FreeBSD: head/bin/realpath/realpath.c 326025 2017-11-20 19:49:47Z pfg $");
+#else
+__RCSID("$NetBSD: realpath.c,v 1.1 2020/02/02 21:49:44 kamil Exp $");
+#endif
+#endif /* not lint */
+
+#include <sys/param.h>
+
+#include <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static void usage(void) __dead;
+
+int
+main(int argc, char *argv[])
+{
+	char buf[PATH_MAX];
+	char *p;
+	const char *path;
+	int ch, qflag, rval;
+
+	setprogname(argv[0]);
+
+	qflag = 0;
+	while ((ch = getopt(argc, argv, "q")) != -1) {
+		switch (ch) {
+		case 'q':
+			qflag = 1;
+			break;
+		case '?':
+		default:
+			usage();
+		}
+	}
+	argc -= optind;
+	argv += optind;
+	path = *argv != NULL ? *argv++ : ".";
+	rval  = 0;
+	do {
+		if ((p = realpath(path, buf)) == NULL) {
+			if (!qflag)
+				warn("%s", path);
+			rval = 1;
+		} else
+			(void)printf("%s\n", p);
+	} while ((path = *argv++) != NULL);
+	exit(rval);
+}
+
+static void
+usage(void)
+{
+
+	(void)fprintf(stderr, "usage: %s [-q] [path ...]\n", getprogname());
+  	exit(1);
+}

Reply via email to