diff --git a/src/lib/libutil/Makefile b/src/lib/libutil/Makefile index 2c6cf13d..c921c284 100644 --- a/src/lib/libutil/Makefile +++ b/src/lib/libutil/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.17 1999/07/20 16:38:56 jakob Exp $ +# $OpenBSD: Makefile,v 1.18 1999/09/21 04:52:45 csapuntz Exp $ # $NetBSD: Makefile,v 1.8 1996/05/16 07:03:28 thorpej Exp $ LIB= util @@ -7,12 +7,12 @@ CFLAGS+=-DLIBC_SCCS HDRS= util.h scsi.h SRCS= getmaxpartitions.c getrawpartition.c login.c login_tty.c logout.c \ logwtmp.c opendev.c passwd.c pty.c readlabel.c scsi.c login_fbtab.c \ - uucplock.c fparseln.c + uucplock.c fparseln.c opendisk.c # XXX need login_fbtab.3 MAN= getmaxpartitions.3 getrawpartition.3 login.3 opendev.3 openpty.3 \ pw_init.3 pw_lock.3 readlabelfs.3 scsi.3 pw_getconf.3 uucplock.3 \ - fparseln.3 + fparseln.3 opendisk.3 MLINKS+=login.3 logout.3 MLINKS+=login.3 logwtmp.3 diff --git a/src/lib/libutil/login.3 b/src/lib/libutil/login.3 index eae46302..38f7e258 100644 --- a/src/lib/libutil/login.3 +++ b/src/lib/libutil/login.3 @@ -1,3 +1,5 @@ +.\" $OpenBSD: login.3,v 1.2 1999/09/21 04:52:45 csapuntz Exp $ +.\" .\" Copyright (c) 1995 .\" The Regents of the University of California. All rights reserved. .\" diff --git a/src/lib/libutil/login_fbtab.c b/src/lib/libutil/login_fbtab.c index 25b0e82c..724df60e 100644 --- a/src/lib/libutil/login_fbtab.c +++ b/src/lib/libutil/login_fbtab.c @@ -1,3 +1,5 @@ +/* $OpenBSD: login_fbtab.c,v 1.6 1999/09/21 04:52:45 csapuntz Exp $ */ + /************************************************************************ * Copyright 1995 by Wietse Venema. All rights reserved. * diff --git a/src/lib/libutil/opendisk.3 b/src/lib/libutil/opendisk.3 new file mode 100644 index 00000000..84f3dc21 --- /dev/null +++ b/src/lib/libutil/opendisk.3 @@ -0,0 +1,174 @@ +.\" $OpenBSD: opendisk.3,v 1.1 1999/09/21 04:52:45 csapuntz Exp $ +.\" $NetBSD: opendisk.3,v 1.4 1999/07/02 15:49:12 simonb Exp $ +.\" +.\" Copyright (c) 1997 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Luke Mewburn. +.\" +.\" 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 NetBSD +.\" Foundation, Inc. and its contributors. +.\" 4. Neither the name of The NetBSD Foundation 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 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 September 22, 1997 +.Dt OPENDISK 3 +.Os +.Sh NAME +.Nm opendisk +.Nd open a disk's +.Dq raw +partition +.Sh LIBRARY +.Lb libutil +.Sh SYNOPSIS +.Fd #include +.Ft int +.Fo opendisk +.Fa "const char *path" +.Fa "int flags" +.Fa "char *buf" +.Fa "size_t buflen" +.Fa "int iscooked" +.Fc +.Sh DESCRIPTION +.Fn opendisk +opens +.Fa path , +for reading and/or writing as specified by the argument +.Fa flags +using +.Xr open 2 , +and the file descriptor is returned to the caller. +.Fa buf +is used to store the resultant filename. +.Fa buflen +is the size, in bytes, of the array referenced by +.Fa buf +(usually +.Dv MAXPATHLEN +bytes). +If +.Fa iscooked +is non zero, the +.Dq cooked +partition (block device) is opened, rather than the +.Dq raw +partition (character device). +.Pp +.Fn opendisk +attempts to open the following variations of +.Fa path , +in order: +.Bl -tag -width "/dev/rpathX" +.It Pa path +The pathname as given. +.It Pa path Ns Em X +.Fa path +with a suffix of +.Sq Em X , +where +.Sq Em X +represents the raw partition of the device, as determined by +.Xr getrawpartition 3 , +usually +.Dq c . +.El +.Pp +If +.Fa iscooked +is zero, then the following two variations are attempted: +.Bl -tag -width "/dev/rpathX" +.It Pa /dev/rpath +.Fa path +with a prefix of +.Dq Pa /dev/r . +.It Pa /dev/rpath Ns Em X +.Fa path +with a prefix of +.Dq Pa /dev/r +and a suffix of +.Sq Em X +(q.v.). +.El +.Pp +Otherwise (i.e., +.Fa iscooked +is non-zero), the following variations are attempted: +.Bl -tag -width "/dev/rpathX" +.It Pa /dev/path +.Fa path +with a prefix of +.Dq Pa /dev/ . +.It Pa /dev/path Ns Em X +.Fa path +with a prefix of +.Dq Pa /dev/ +and a suffix of +.Sq Em X +(q.v.). +.El +.Sh RETURN VALUES +An open file descriptor, or -1 if the +.Xr open 2 +failed. +.Sh ERRORS +.Fn opendisk +may set +.Va errno +to one of the following values: +.Bl -tag -width Er +.It Bq Er EINVAL +.Dv O_CREAT +was set in +.Fa flags , +or +.Xr getrawpartition 3 +didn't return a valid partition. +.It Bq Er EFAULT +.Fa buf +was the +.Dv NULL +pointer. +.El +.Pp +The +.Fn opendisk +function +may also set +.Va errno +to any value specified by the +.Xr open 2 +function. +.Sh SEE ALSO +.Xr open 2 , +.Xr getrawpartition 3 +.Sh HISTORY +The +.Fn opendisk +function first appeared in +.Nx 1.3 . diff --git a/src/lib/libutil/opendisk.c b/src/lib/libutil/opendisk.c new file mode 100644 index 00000000..7afe2422 --- /dev/null +++ b/src/lib/libutil/opendisk.c @@ -0,0 +1,96 @@ +/* $OpenBSD: opendisk.c,v 1.1 1999/09/21 04:52:45 csapuntz Exp $ */ +/* $NetBSD: opendisk.c,v 1.4 1997/09/30 17:13:50 phil Exp $ */ + +/*- + * Copyright (c) 1997 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Luke Mewburn. + * + * 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 NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation 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 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. + */ + +#include +#include + +#include +#include +#include +#include +#include +#include + +int +opendisk(path, flags, buf, buflen, iscooked) + const char *path; + int flags; + char *buf; + size_t buflen; + int iscooked; +{ + int f, rawpart; + + if (buf == NULL) { + errno = EFAULT; + return (-1); + } + snprintf(buf, buflen, "%s", path); + + if ((flags & O_CREAT) != 0) { + errno = EINVAL; + return (-1); + } + + rawpart = getrawpartition(); + if (rawpart < 0) + return (-1); /* sysctl(3) in getrawpartition sets errno */ + + f = open(buf, flags); + if (f != -1 || errno != ENOENT) + return (f); + + snprintf(buf, buflen, "%s%c", path, 'a' + rawpart); + f = open(buf, flags); + if (f != -1 || errno != ENOENT) + return (f); + + if (strchr(path, '/') != NULL) + return (-1); + + snprintf(buf, buflen, "%s%s%s", _PATH_DEV, iscooked ? "" : "r", path); + f = open(buf, flags); + if (f != -1 || errno != ENOENT) + return (f); + + snprintf(buf, buflen, "%s%s%s%c", _PATH_DEV, iscooked ? "" : "r", path, + 'a' + rawpart); + f = open(buf, flags); + return (f); +} diff --git a/src/lib/libutil/pw_getconf.3 b/src/lib/libutil/pw_getconf.3 index 65bcee7b..b1a6dad9 100644 --- a/src/lib/libutil/pw_getconf.3 +++ b/src/lib/libutil/pw_getconf.3 @@ -1,3 +1,5 @@ +.\" $OpenBSD: pw_getconf.3,v 1.5 1999/09/21 04:52:46 csapuntz Exp $ +.\" .\" Copyright 1997 Niels Provos .\" All rights reserved. .\" diff --git a/src/lib/libutil/pw_init.3 b/src/lib/libutil/pw_init.3 index 6d0ac205..d5f05f7b 100644 --- a/src/lib/libutil/pw_init.3 +++ b/src/lib/libutil/pw_init.3 @@ -1,3 +1,5 @@ +.\" $OpenBSD: pw_init.3,v 1.3 1999/09/21 04:52:46 csapuntz Exp $ +.\" .\" Copyright (c) 1995 .\" The Regents of the University of California. All rights reserved. .\" diff --git a/src/lib/libutil/pw_lock.3 b/src/lib/libutil/pw_lock.3 index f84ccae3..b444709b 100644 --- a/src/lib/libutil/pw_lock.3 +++ b/src/lib/libutil/pw_lock.3 @@ -1,3 +1,5 @@ +.\" $OpenBSD: pw_lock.3,v 1.5 1999/09/21 04:52:46 csapuntz Exp $ +.\" .\" Copyright (c) 1995 .\" The Regents of the University of California. All rights reserved. .\" diff --git a/src/lib/libutil/uucplock.3 b/src/lib/libutil/uucplock.3 index adca519e..2e4408f3 100644 --- a/src/lib/libutil/uucplock.3 +++ b/src/lib/libutil/uucplock.3 @@ -1,3 +1,4 @@ +.\" $OpenBSD: uucplock.3,v 1.7 1999/09/21 04:52:46 csapuntz Exp $ .\" .\" All rights reserved. .\" @@ -21,7 +22,6 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $Id: uucplock.3,v 1.6 1999/07/09 13:35:28 aaron Exp $ .\" " .Dd March 30, 1997 .Dt uucplock 3 diff --git a/src/lib/libutil/uucplock.c b/src/lib/libutil/uucplock.c index 1517895b..9c81177e 100644 --- a/src/lib/libutil/uucplock.c +++ b/src/lib/libutil/uucplock.c @@ -1,3 +1,4 @@ +/* * $OpenBSD: uucplock.c,v 1.7 1999/09/21 04:52:46 csapuntz Exp $*/ /* * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. @@ -30,7 +31,6 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: uucplock.c,v 1.6 1999/08/17 09:13:13 millert Exp $ * */