Added getbootfile(3), for an easy C interface to the kern.bootfile MIB
variable. This one's even documented!
This commit is contained in:
parent
98f78f2786
commit
53d733f050
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=3040
@ -1,24 +1,25 @@
|
||||
# From: @(#)Makefile.inc 8.3 (Berkeley) 4/16/94
|
||||
# $Id$
|
||||
# $Id: Makefile.inc,v 1.10 1994/09/23 00:37:43 wollman Exp $
|
||||
|
||||
# machine-independent gen sources
|
||||
.PATH: ${.CURDIR}/${MACHINE}/gen ${.CURDIR}/gen
|
||||
|
||||
SRCS+= alarm.c assert.c clock.c closedir.c confstr.c crypt.c ctermid.c \
|
||||
daemon.c devname.c disklabel.c err.c errlst.c \
|
||||
exec.c fnmatch.c frexp.c fstab.c fts.c getbsize.c getcap.c getcwd.c \
|
||||
getdomainname.c getgrent.c getgrouplist.c gethostname.c getloadavg.c \
|
||||
getlogin.c getmntinfo.c getnetgrent.c getosreldate.c getpagesize.c \
|
||||
getpass.c getpwent.c getttyent.c getusershell.c glob.c initgroups.c \
|
||||
isatty.c msgctl.c msgget.c msgrcv.c msgsnd.c nice.c nlist.c \
|
||||
ntp_gettime.c opendir.c pause.c popen.c psignal.c pwcache.c raise.c \
|
||||
readdir.c rewinddir.c scandir.c seekdir.c semconfig.c semctl.c \
|
||||
semget.c semop.c setdomainname.c sethostname.c setjmperr.c setmode.c \
|
||||
shmat.c shmctl.c shmdt.c shmget.c siginterrupt.c siglist.c signal.c \
|
||||
exec.c fnmatch.c frexp.c fstab.c fts.c getbootfile.c getbsize.c \
|
||||
getcap.c getcwd.c getdomainname.c getgrent.c getgrouplist.c \
|
||||
gethostname.c getloadavg.c getlogin.c getmntinfo.c getnetgrent.c \
|
||||
getosreldate.c getpagesize.c getpass.c getpwent.c getttyent.c \
|
||||
getusershell.c getvfsent.c glob.c initgroups.c isatty.c msgctl.c \
|
||||
msgget.c msgrcv.c msgsnd.c nice.c nlist.c ntp_gettime.c opendir.c \
|
||||
pause.c popen.c psignal.c pwcache.c raise.c readdir.c rewinddir.c \
|
||||
scandir.c seekdir.c semconfig.c semctl.c semget.c semop.c \
|
||||
setdomainname.c sethostname.c setjmperr.c setmode.c shmat.c \
|
||||
shmctl.c shmdt.c shmget.c siginterrupt.c siglist.c signal.c \
|
||||
sigsetjmp.c sigsetops.c sleep.c sysconf.c sysctl.c syslog.c \
|
||||
telldir.c termios.c time.c times.c timezone.c ttyname.c ttyslot.c \
|
||||
ualarm.c uname.c unvis.c usleep.c utime.c valloc.c vis.c wait.c \
|
||||
wait3.c waitpid.c getvfsent.c
|
||||
wait3.c waitpid.c
|
||||
|
||||
# *rand48 family, from 1.1.5
|
||||
SRCS+= _rand48.c drand48.c erand48.c jrand48.c lcong48.c lrand48.c \
|
||||
@ -36,8 +37,8 @@ errlst.o errlst.po:
|
||||
.endif
|
||||
|
||||
MAN3+= gen/alarm.3 gen/clock.3 gen/confstr.3 gen/crypt.3 gen/ctermid.3 \
|
||||
gen/daemon.3 gen/devname.3 gen/directory.3 gen/err.3 \
|
||||
gen/exec.3 gen/fnmatch.3 gen/frexp.3 gen/fts.3 gen/getbsize.3 \
|
||||
gen/daemon.3 gen/devname.3 gen/directory.3 gen/err.3 gen/exec.3 \
|
||||
gen/fnmatch.3 gen/frexp.3 gen/fts.3 gen/getbsize.3 gen/getbootfile.3 \
|
||||
gen/getcap.3 gen/getcwd.3 gen/getdiskbyname.3 gen/getfsent.3 \
|
||||
gen/getgrent.3 gen/getgrouplist.3 gen/gethostname.3 gen/getloadavg.3 \
|
||||
gen/getmntinfo.3 gen/getnetgrent.3 gen/getpagesize.3 gen/getpass.3 \
|
||||
|
71
lib/libc/gen/getbootfile.3
Normal file
71
lib/libc/gen/getbootfile.3
Normal file
@ -0,0 +1,71 @@
|
||||
.\" Copyright (c) 1983, 1991, 1993
|
||||
.\" 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. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. 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.
|
||||
.\"
|
||||
.\" From: @(#)gethostname.3 8.1 (Berkeley) 6/4/93
|
||||
.\" $Id$
|
||||
.\"
|
||||
.Dd September 23, 1994
|
||||
.Dt GETBOOTFILE 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm getbootfile
|
||||
.Nd get kernel boot file name
|
||||
.Sh SYNOPSIS
|
||||
.Fd #include <paths.h>
|
||||
.Ft const char *
|
||||
.Fn getbootfile void
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm getbootfile
|
||||
function retrieves the full pathname of the file from which the
|
||||
current kernel was loaded, and returns a static pointer to the name.
|
||||
A read/write interface to this information is available via the
|
||||
.Xr sysctl 2
|
||||
MIB variable
|
||||
.Dq Li kern.bootfile .
|
||||
.Sh RETURN VALUES
|
||||
If the call succeeds a string giving the pathname is returned. If it
|
||||
fails, a a null pointer is returned and an error code is
|
||||
placed in the global location
|
||||
.Va errno .
|
||||
.Sh SEE ALSO
|
||||
.Xr sysctl 2
|
||||
.Sh BUGS
|
||||
If the boot blocks have not been modified to pass this information into
|
||||
the kernel at boot time, the static string
|
||||
.Dq Pa /kernel
|
||||
is returned instead of the real boot file.
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
function call appeared in
|
||||
.Tn FreeBSD
|
||||
2.0.
|
55
lib/libc/gen/getbootfile.c
Normal file
55
lib/libc/gen/getbootfile.c
Normal file
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (c) 1989, 1993
|
||||
* 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. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. 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.
|
||||
*/
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
/*static char sccsid[] = "From: @(#)gethostname.c 8.1 (Berkeley) 6/4/93";*/
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
const char *
|
||||
getbootfile(void)
|
||||
{
|
||||
static char name[MAXPATHLEN];
|
||||
size_t size = sizeof name;
|
||||
int mib[2];
|
||||
|
||||
mib[0] = CTL_KERN;
|
||||
mib[1] = KERN_BOOTFILE;
|
||||
if (sysctl(mib, 2, name, &size, NULL, 0) == -1)
|
||||
return (0);
|
||||
return (name);
|
||||
}
|
Loading…
Reference in New Issue
Block a user