summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--term/ChangeLog7
-rw-r--r--term/users.c36
2 files changed, 42 insertions, 1 deletions
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 <tb@mit.edu>
+
+ * 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 <kettenis@gnu.org>
* 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;
@@ -2187,6 +2193,34 @@ S_term_set_filenode (io_t arg,
}
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)
{