summaryrefslogtreecommitdiff
path: root/lib/libutil
diff options
context:
space:
mode:
authorScott Long <scottl@FreeBSD.org>2020-11-15 20:24:59 +0000
committerScott Long <scottl@FreeBSD.org>2020-11-15 20:24:59 +0000
commit8e1031086d40b9bd3fa255d92cc45573e3afed16 (patch)
treee3cb8206851bd27dac89f9e7d562fe4c364931d2 /lib/libutil
parentfc7cf7241f89a3d3ccc20cb49c5bf61e154b7a1b (diff)
Notes
Diffstat (limited to 'lib/libutil')
-rw-r--r--lib/libutil/Makefile5
-rw-r--r--lib/libutil/getlocalbase.3110
-rw-r--r--lib/libutil/getlocalbase.c89
-rw-r--r--lib/libutil/libutil.h6
4 files changed, 2 insertions, 208 deletions
diff --git a/lib/libutil/Makefile b/lib/libutil/Makefile
index df3fb622b374..5ea2addd5d34 100644
--- a/lib/libutil/Makefile
+++ b/lib/libutil/Makefile
@@ -12,8 +12,7 @@ PACKAGE= runtime
LIB= util
SHLIB_MAJOR= 9
-SRCS= _secure_path.c auth.c expand_number.c flopen.c fparseln.c \
- getlocalbase.c gr_util.c \
+SRCS= _secure_path.c auth.c expand_number.c flopen.c fparseln.c gr_util.c \
hexdump.c humanize_number.c kinfo_getfile.c \
kinfo_getallproc.c kinfo_getproc.c kinfo_getvmmap.c \
kinfo_getvmobject.c kld.c \
@@ -31,7 +30,7 @@ CFLAGS+= -DINET6
CFLAGS+= -I${.CURDIR} -I${SRCTOP}/lib/libc/gen/
-MAN+= expand_number.3 flopen.3 fparseln.3 getlocalbase.3 hexdump.3 \
+MAN+= expand_number.3 flopen.3 fparseln.3 hexdump.3 \
humanize_number.3 kinfo_getallproc.3 kinfo_getfile.3 \
kinfo_getproc.3 kinfo_getvmmap.3 kinfo_getvmobject.3 kld.3 \
login_auth.3 login_cap.3 \
diff --git a/lib/libutil/getlocalbase.3 b/lib/libutil/getlocalbase.3
deleted file mode 100644
index 1c26be485dff..000000000000
--- a/lib/libutil/getlocalbase.3
+++ /dev/null
@@ -1,110 +0,0 @@
-.\"
-.\" SPDX-License-Identifier: BSD-2-Clause-FreeBSD
-.\"
-.\" Copyright 2020 Scott Long
-.\"
-.\" 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 AUTHOR 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 AUTHOR 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.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd Oct 28, 2020
-.Dt GETLOCALBASE 3
-.Os
-.Sh NAME
-.Nm getlocalbase
-.Nd "return the path to the local software directory"
-.Sh LIBRARY
-.Lb libutil
-.Sh SYNOPSIS
-.In libutil.h
-.Ft ssize_t
-.Fn getlocalbase "char *path" "size_t len"
-.Sh DESCRIPTION
-The
-.Fn getlocalbase
-function returns the path to the local software base directory.
-Normally this is the
-.Pa /usr/local
-directory.
-First the
-.Ev LOCALBASE
-environment variable is checked.
-If that doesn't exist then the
-.Va user.localbase
-sysctl is checked.
-If that also doesn't exist then the value of the
-.Dv _PATH_LOCALBASE
-compile-time variable is used.
-If that is undefined then the default of
-.Pa /usr/local
-is used.
-.Pp
-The
-.Fa path
-argument points to a caller-supplied buffer to hold the resulting pathname.
-The
-.Fa len
-argument is the length of the caller-supplied buffer.
-.Sh IMPLEMENTATION NOTES
-Calls to
-.Fn getlocalpath
-will perform a setugid check on the running binary before checking the
-environment.
-.Sh RETURN VALUES
-If the request completes without error, the size of the string copied into the
-buffer, including the terminating NUL, is returned.
-If an error occurred or the buffer was too small to hold the string,
-.Fn getlocalbase
-returns -1 and sets
-.Em errno
-to indicate the error condition.
-.Sh ENVIRONMENT
-The
-.Fn getlocalbase
-library function retrieves the
-.Ev LOCALBASE
-environment variable.
-.Sh ERRORS
-The
-.Fn getlocalbase
-function will fail and set
-.Va errno
-for the following conditions:
-.Bl -tag -width Er
-.It Bq Er EINVAL
-One of the passed in parameters is NULL or zero.
-.It Bq Er ENOMEM
-There isn't enough space in the passed in buffer to hold the pathname string.
-.El
-.Sh SEE ALSO
-.Xr env 1 ,
-.Xr src.conf 5 ,
-.Xr sysctl 8
-.Sh HISTORY
-The
-.Nm
-library function first appeared in
-.Fx 13.0 .
-.Sh AUTHORS
-This
-manual page was written by
-.An Scott Long Aq Mt scottl@FreeBSD.org .
diff --git a/lib/libutil/getlocalbase.c b/lib/libutil/getlocalbase.c
deleted file mode 100644
index 150c05f0b950..000000000000
--- a/lib/libutil/getlocalbase.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause
- *
- * Copyright 2020 Scott Long <scottl@freebsd.org>
- *
- * 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 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>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/errno.h>
-#include <sys/sysctl.h>
-#include <sys/limits.h>
-#include <stdlib.h>
-#include <paths.h>
-#include <libutil.h>
-#include <string.h>
-#include <unistd.h>
-
-ssize_t
-getlocalbase(char *path, size_t pathlen)
-{
- ssize_t tmplen;
- const char *tmppath;
-
- if ((pathlen == 0) || (path == NULL)) {
- errno = EINVAL;
- return (-1);
- }
-
- /* It's unlikely that the buffer would be this big */
- if (pathlen > SSIZE_MAX) {
- errno = ENOMEM;
- return (-1);
- }
-
- tmppath = NULL;
- tmplen = (size_t)pathlen;
- if (issetugid() == 0)
- tmppath = getenv("LOCALBASE");
-
- if ((tmppath == NULL) &&
- (sysctlbyname("user.localbase", path, (size_t *)&tmplen, NULL,
- 0) == 0)) {
- return (tmplen);
- }
-
- if (tmppath == NULL)
-#ifdef _PATH_LOCALBASE
- tmppath = _PATH_LOCALBASE;
-#else
- tmppath = "/usr/local";
-#endif
-
- tmplen = strlcpy(path, tmppath, pathlen);
- if ((tmplen < 0) || (tmplen >= (ssize_t)pathlen)) {
- errno = ENOMEM;
- return (-1);
- }
-
- /* It's unlikely that the buffer would be this big */
- if (tmplen > SSIZE_MAX) {
- errno = ENOMEM;
- return (-1);
- }
-
- return ((ssize_t)tmplen);
-}
diff --git a/lib/libutil/libutil.h b/lib/libutil/libutil.h
index 1c72f599f7dd..2ac5e975a2d7 100644
--- a/lib/libutil/libutil.h
+++ b/lib/libutil/libutil.h
@@ -65,11 +65,6 @@ typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
-#ifndef _SSIZE_T_DECLARED
-typedef __ssize_t ssize_t;
-#define _SSIZE_T_DECLARED
-#endif
-
#ifndef _UID_T_DECLARED
typedef __uid_t uid_t;
#define _UID_T_DECLARED
@@ -103,7 +98,6 @@ int flopen(const char *_path, int _flags, ...);
int flopenat(int _dirfd, const char *_path, int _flags, ...);
int forkpty(int *_amaster, char *_name,
struct termios *_termp, struct winsize *_winp);
-ssize_t getlocalbase(char *path, size_t pathlen);
void hexdump(const void *_ptr, int _length, const char *_hdr, int _flags);
int humanize_number(char *_buf, size_t _len, int64_t _number,
const char *_suffix, int _scale, int _flags);