diff options
author | David Xu <davidxu@FreeBSD.org> | 2008-04-15 08:33:32 +0000 |
---|---|---|
committer | David Xu <davidxu@FreeBSD.org> | 2008-04-15 08:33:32 +0000 |
commit | d61f3de6567f0741ea8f28261732d9ce81073a59 (patch) | |
tree | 437a345c58351750a20a52bed0bde3fe8b3c2678 /lib | |
parent | 2f68261c815801b3f45a83d0169e2c169825b2f6 (diff) | |
download | src-d61f3de6567f0741ea8f28261732d9ce81073a59.tar.gz src-d61f3de6567f0741ea8f28261732d9ce81073a59.zip |
Implement POSIX function tcgetsid() which returns session id.
PR: stand/107561
Notes
Notes:
svn path=/head/; revision=178219
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/gen/Makefile.inc | 2 | ||||
-rw-r--r-- | lib/libc/gen/Symbol.map | 1 | ||||
-rw-r--r-- | lib/libc/gen/tcgetsid.3 | 71 | ||||
-rw-r--r-- | lib/libc/gen/termios.c | 11 |
4 files changed, 84 insertions, 1 deletions
diff --git a/lib/libc/gen/Makefile.inc b/lib/libc/gen/Makefile.inc index 5695d7a7a4b3..6aa45a434162 100644 --- a/lib/libc/gen/Makefile.inc +++ b/lib/libc/gen/Makefile.inc @@ -63,7 +63,7 @@ MAN+= alarm.3 arc4random.3 \ setjmp.3 setmode.3 setproctitle.3 \ siginterrupt.3 signal.3 sigsetops.3 sleep.3 \ statvfs.3 stringlist.3 \ - strtofflags.3 sysconf.3 sysctl.3 syslog.3 tcgetpgrp.3 \ + strtofflags.3 sysconf.3 sysctl.3 syslog.3 tcgetpgrp.3 tcgetsid.3 \ tcsendbreak.3 tcsetattr.3 tcsetpgrp.3 time.3 times.3 timezone.3 \ ttyname.3 tzset.3 ualarm.3 ucontext.3 ulimit.3 uname.3 \ unvis.3 usleep.3 utime.3 valloc.3 vis.3 wordexp.3 diff --git a/lib/libc/gen/Symbol.map b/lib/libc/gen/Symbol.map index 8167aaac023a..5ec8144842f6 100644 --- a/lib/libc/gen/Symbol.map +++ b/lib/libc/gen/Symbol.map @@ -337,6 +337,7 @@ FBSD_1.1 { fts_get_clientptr; fts_get_stream; fts_set_clientptr; + tcgetsid; }; FBSDprivate_1.0 { diff --git a/lib/libc/gen/tcgetsid.3 b/lib/libc/gen/tcgetsid.3 new file mode 100644 index 000000000000..11c8d0c41566 --- /dev/null +++ b/lib/libc/gen/tcgetsid.3 @@ -0,0 +1,71 @@ +.\" Copyright (c) 2008 David Xu <davidxu@freebsd.org> +.\" 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. +.\" +.\" 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. +.\" +.\" $FreeBSD$ +.\" +.Dd April 15, 2008 +.Dt TCGETSID 3 +.Os +.Sh NAME +.Nm tcgetsid +.Nd get session ID associated with a controlling terminal +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In sys/types.h +.In termios.h +.Ft pid_t +.Fn tcgetsid "int fd" +.Sh DESCRIPTION +The +.Fn tcgetsid +function returns the process group ID of the session leader for a +controlling terminal specified by +.Fa fd . +.Sh ERRORS +If an error occurs, +.Fn tcgetsid +returns -1 and the global variable +.Va errno +is set to indicate the error, as follows: +.Bl -tag -width Er +.It Bq Er EBADF +The +.Fa fd +argument is not a valid file descriptor. +.It Bq Er ENOTTY +The calling process does not have a controlling terminal or the +underlying terminal device represented by +.Fa fd +is not the controlling terminal. +.El +.Sh SEE ALSO +.Xr getsid 2 , +.Xr setsid 2 , +.Xr tcgetpgrp 3 +.Sh STANDARDS +The +.Fn tcgetsid +function conforms to +.St -xpg4.2 . diff --git a/lib/libc/gen/termios.c b/lib/libc/gen/termios.c index 333dff4cb62f..4c6dcff012fe 100644 --- a/lib/libc/gen/termios.c +++ b/lib/libc/gen/termios.c @@ -99,6 +99,17 @@ tcgetpgrp(fd) return ((pid_t)s); } +pid_t +tcgetsid(int fd) +{ + int s; + + if (_ioctl(fd, TIOCGSID, &s) < 0) + return ((pid_t)-1); + + return ((pid_t)s); +} + speed_t cfgetospeed(t) const struct termios *t; |