diff options
| author | Scott Long <scottl@FreeBSD.org> | 2020-11-15 20:24:59 +0000 |
|---|---|---|
| committer | Scott Long <scottl@FreeBSD.org> | 2020-11-15 20:24:59 +0000 |
| commit | 8e1031086d40b9bd3fa255d92cc45573e3afed16 (patch) | |
| tree | e3cb8206851bd27dac89f9e7d562fe4c364931d2 /lib/libutil | |
| parent | fc7cf7241f89a3d3ccc20cb49c5bf61e154b7a1b (diff) | |
Notes
Diffstat (limited to 'lib/libutil')
| -rw-r--r-- | lib/libutil/Makefile | 5 | ||||
| -rw-r--r-- | lib/libutil/getlocalbase.3 | 110 | ||||
| -rw-r--r-- | lib/libutil/getlocalbase.c | 89 | ||||
| -rw-r--r-- | lib/libutil/libutil.h | 6 |
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); |
