1bc093719SEd Schouten.\" 2bc093719SEd Schouten.\" Copyright (c) 2002 The FreeBSD Project, Inc. 3bc093719SEd Schouten.\" All rights reserved. 4bc093719SEd Schouten.\" 5bc093719SEd Schouten.\" This software includes code contributed to the FreeBSD Project 6bc093719SEd Schouten.\" by Ryan Younce of North Carolina State University. 7bc093719SEd Schouten.\" 8bc093719SEd Schouten.\" Redistribution and use in source and binary forms, with or without 9bc093719SEd Schouten.\" modification, are permitted provided that the following conditions 10bc093719SEd Schouten.\" are met: 11bc093719SEd Schouten.\" 1. Redistributions of source code must retain the above copyright 12bc093719SEd Schouten.\" notice, this list of conditions and the following disclaimer. 13bc093719SEd Schouten.\" 2. Redistributions in binary form must reproduce the above copyright 14bc093719SEd Schouten.\" notice, this list of conditions and the following disclaimer in the 15bc093719SEd Schouten.\" documentation and/or other materials provided with the distribution. 16bc093719SEd Schouten.\" 3. Neither the name of the FreeBSD Project nor the names of its 17bc093719SEd Schouten.\" contributors may be used to endorse or promote products derived from 18bc093719SEd Schouten.\" this software without specific prior written permission. 19bc093719SEd Schouten.\" 20bc093719SEd Schouten.\" THIS SOFTWARE IS PROVIDED BY THE FREEBSD PROJECT AND CONTRIBUTORS 21bc093719SEd Schouten.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22bc093719SEd Schouten.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 23bc093719SEd Schouten.\" PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD PROJECT 24bc093719SEd Schouten.\" OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25bc093719SEd Schouten.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 26bc093719SEd Schouten.\" TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27bc093719SEd Schouten.\" PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28bc093719SEd Schouten.\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29bc093719SEd Schouten.\" NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30bc093719SEd Schouten.\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31bc093719SEd Schouten.\" 32bc093719SEd Schouten.\" $FreeBSD$ 33bc093719SEd Schouten.\" 34bc093719SEd Schouten.Dd August 20, 2008 35bc093719SEd Schouten.Os 36bc093719SEd Schouten.Dt PTSNAME 3 37bc093719SEd Schouten.Sh NAME 38bc093719SEd Schouten.Nm grantpt , 39bc093719SEd Schouten.Nm ptsname , 40bc093719SEd Schouten.Nm unlockpt 41bc093719SEd Schouten.Nd pseudo-terminal access functions 42bc093719SEd Schouten.Sh LIBRARY 43bc093719SEd Schouten.Lb libc 44bc093719SEd Schouten.Sh SYNOPSIS 45bc093719SEd Schouten.In stdlib.h 46bc093719SEd Schouten.Ft int 47bc093719SEd Schouten.Fn grantpt "int fildes" 48bc093719SEd Schouten.Ft "char *" 49bc093719SEd Schouten.Fn ptsname "int fildes" 50bc093719SEd Schouten.Ft int 51bc093719SEd Schouten.Fn unlockpt "int fildes" 52bc093719SEd Schouten.Sh DESCRIPTION 53bc093719SEd SchoutenThe 54bc093719SEd Schouten.Fn grantpt , 55bc093719SEd Schouten.Fn ptsname , 56bc093719SEd Schoutenand 57bc093719SEd Schouten.Fn unlockpt 58bc093719SEd Schoutenfunctions allow access to pseudo-terminal devices. 59bc093719SEd SchoutenThese three functions accept a file descriptor that references the 60bc093719SEd Schoutenmaster half of a pseudo-terminal pair. 61bc093719SEd SchoutenThis file descriptor is created with 62bc093719SEd Schouten.Xr posix_openpt 2 . 63bc093719SEd Schouten.Pp 64bc093719SEd SchoutenThe 65bc093719SEd Schouten.Fn grantpt 66bc093719SEd Schoutenfunction is used to establish ownership and permissions 67bc093719SEd Schoutenof the slave device counterpart to the master device 68bc093719SEd Schoutenspecified with 69bc093719SEd Schouten.Fa fildes . 70bc093719SEd SchoutenThe slave device's ownership is set to the real user ID 71bc093719SEd Schoutenof the calling process, and the permissions are set to 72bc093719SEd Schoutenuser readable-writable and group writable. 73bc093719SEd SchoutenThe group owner of the slave device is also set to the 74bc093719SEd Schoutengroup 75bc093719SEd Schouten.Dq Li tty . 76bc093719SEd Schouten.Pp 77bc093719SEd SchoutenThe 78bc093719SEd Schouten.Fn ptsname 79bc093719SEd Schoutenfunction returns the full pathname of the slave device 80bc093719SEd Schoutencounterpart to the master device specified with 81bc093719SEd Schouten.Fa fildes . 82bc093719SEd SchoutenThis value can be used 83bc093719SEd Schoutento subsequently open the appropriate slave after 84bc093719SEd Schouten.Xr posix_openpt 2 85bc093719SEd Schoutenand 86bc093719SEd Schouten.Fn grantpt 87bc093719SEd Schoutenhave been called. 88bc093719SEd Schouten.Pp 89bc093719SEd SchoutenThe 90bc093719SEd Schouten.Fn unlockpt 91bc093719SEd Schoutenfunction clears the lock held on the pseudo-terminal pair 92bc093719SEd Schoutenfor the master device specified with 93bc093719SEd Schouten.Fa fildes . 94bc093719SEd Schouten.Sh RETURN VALUES 95bc093719SEd Schouten.Rv -std grantpt unlockpt 96bc093719SEd Schouten.Pp 97bc093719SEd SchoutenThe 98bc093719SEd Schouten.Fn ptsname 99bc093719SEd Schoutenfunction returns a pointer to the name 100bc093719SEd Schoutenof the slave device on success; otherwise a 101bc093719SEd Schouten.Dv NULL 102bc093719SEd Schoutenpointer is returned. 103bc093719SEd Schouten.Sh ERRORS 104bc093719SEd SchoutenThe 105bc093719SEd Schouten.Fn grantpt 106bc093719SEd Schoutenand 107bc093719SEd Schouten.Fn unlockpt 108bc093719SEd Schoutenfunctions may fail and set 109bc093719SEd Schouten.Va errno 110bc093719SEd Schoutento: 111bc093719SEd Schouten.Bl -tag -width Er 112bc093719SEd Schouten.It Bq Er EBADF 113bc093719SEd Schouten.Fa fildes 114bc093719SEd Schoutenis not a valid open file descriptor. 115bc093719SEd Schouten.It Bq Er EINVAL 116bc093719SEd Schouten.Fa fildes 117bc093719SEd Schoutenis not a master pseudo-terminal device. 118bc093719SEd Schouten.El 119bc093719SEd Schouten.Pp 120bc093719SEd SchoutenIn addition, the 121bc093719SEd Schouten.Fn grantpt 122bc093719SEd Schoutenfunction may set 123bc093719SEd Schouten.Va errno 124bc093719SEd Schoutento: 125bc093719SEd Schouten.Bl -tag -width Er 126bc093719SEd Schouten.It Bq Er EACCES 127bc093719SEd SchoutenThe slave pseudo-terminal device could not be accessed. 128bc093719SEd Schouten.El 129bc093719SEd Schouten.Sh SEE ALSO 130bc093719SEd Schouten.Xr posix_openpt 2 , 131bc093719SEd Schouten.Xr pts 4 , 132bc093719SEd Schouten.Xr tty 4 133bc093719SEd Schouten.Sh STANDARDS 134bc093719SEd SchoutenThe 135bc093719SEd Schouten.Fn ptsname 13698669c79SEd Schoutenfunction conforms to 13700ee13a0SEd Schouten.St -p1003.1-2008 . 13898669c79SEd Schouten.Pp 13998669c79SEd SchoutenThis implementation of 14098669c79SEd Schouten.Fn grantpt 141bc093719SEd Schoutenand 142bc093719SEd Schouten.Fn unlockpt 14300ee13a0SEd Schoutendoes not conform to 14400ee13a0SEd Schouten.St -p1003.1-2008 , 14500ee13a0SEd Schoutenbecause it depends on 14600ee13a0SEd Schouten.Xr posix_openpt 2 14700ee13a0SEd Schoutento create the pseudo-terminal device with proper permissions in place. 14800ee13a0SEd SchoutenIt only validates whether 14900ee13a0SEd Schouten.Fa fildes 15000ee13a0SEd Schoutenis a valid pseudo-terminal master device. 15100ee13a0SEd SchoutenFuture revisions of the specification will likely allow this behaviour, 15200ee13a0SEd Schoutenas stated by the Austin Group. 153bc093719SEd Schouten.Sh HISTORY 154bc093719SEd SchoutenThe 155bc093719SEd Schouten.Fn grantpt , 156bc093719SEd Schouten.Fn ptsname 157bc093719SEd Schoutenand 158bc093719SEd Schouten.Fn unlockpt 159bc093719SEd Schoutenfunctions appeared in 160bc093719SEd Schouten.Fx 5.0 . 161