From 0af047580d3888861521979e4999722ccf9288f7 Mon Sep 17 00:00:00 2001 From: Thomas Bushnell Date: Mon, 15 Mar 1999 20:05:48 +0000 Subject: Mon Mar 15 14:58:33 1999 Thomas Bushnell, BSG * users.c (S_term_get_peername): Implement new RPC. * users.c (S_term_get_nodename): Return ENOENT if the name is not set. --- term/ChangeLog | 7 +++++++ term/users.c | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) (limited to 'term') diff --git a/term/ChangeLog b/term/ChangeLog index c4a44b3f..92002cda 100644 --- a/term/ChangeLog +++ b/term/ChangeLog @@ -1,3 +1,10 @@ +Mon Mar 15 14:58:33 1999 Thomas Bushnell, BSG + + * users.c (S_term_get_peername): Implement new RPC. + + * users.c (S_term_get_nodename): Return ENOENT if the name is not + set. + 1999-03-13 Mark Kettenis * users.c (po_destroy_hook): Only reset state and hardware if diff --git a/term/users.c b/term/users.c index 16e83ee9..828b1a3d 100644 --- a/term/users.c +++ b/term/users.c @@ -2151,7 +2151,13 @@ S_term_get_nodename (io_t arg, if (!cred) return EOPNOTSUPP; - strcpy (name, (char *)cred->po->cntl->hook ?: ""); + if (!cred->po->cntl->hook) + { + ports_port_deref (cred); + return ENOENT; + } + + strcpy (name, (char *)cred->po->cntl->hook); ports_port_deref (cred); return 0; @@ -2186,6 +2192,34 @@ S_term_set_filenode (io_t arg, return EINVAL; } +kern_return_t +S_term_get_peername (io_t arg, + char *name) +{ + struct trivfs_protid *cred = ports_lookup_port (term_bucket, arg, 0); + struct trivfs_control *peer; + + if (!cred || (cred->pi.class != tty_class && cred->pi.class != pty_class)) + { + if (cred) + ports_port_deref (cred); + return EOPNOTSUPP; + } + + peer = (cred->pi.class == tty_class) ? ptyctl : termctl; + + if (bottom != ptyio_bottom || !peer->hook) + { + port_port_deref (cred); + return ENOENT; + } + + strcpy (name, (char *) peer->hook); + ports_port_deref (cred); + + return 0; +} + kern_return_t S_term_get_bottom_type (io_t arg, int *ttype) -- cgit v1.2.3