summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2008-04-15 08:33:32 +0000
committerdavidxu <davidxu@FreeBSD.org>2008-04-15 08:33:32 +0000
commita19eeb1bb90be407b05f596feb555c76224c1e2b (patch)
tree437a345c58351750a20a52bed0bde3fe8b3c2678 /lib/libc/gen
parentc25466ababd0aab3cbbb2d2aed863d6dcf836055 (diff)
downloadFreeBSD-src-a19eeb1bb90be407b05f596feb555c76224c1e2b.zip
FreeBSD-src-a19eeb1bb90be407b05f596feb555c76224c1e2b.tar.gz
Implement POSIX function tcgetsid() which returns session id.
PR: stand/107561
Diffstat (limited to 'lib/libc/gen')
-rw-r--r--lib/libc/gen/Makefile.inc2
-rw-r--r--lib/libc/gen/Symbol.map1
-rw-r--r--lib/libc/gen/tcgetsid.371
-rw-r--r--lib/libc/gen/termios.c11
4 files changed, 84 insertions, 1 deletions
diff --git a/lib/libc/gen/Makefile.inc b/lib/libc/gen/Makefile.inc
index 5695d7a..6aa45a4 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 8167aaa..5ec8144 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 0000000..11c8d0c
--- /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 333dff4..4c6dcff 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;
OpenPOWER on IntegriCloud