aboutsummaryrefslogtreecommitdiff
path: root/gnu/libexec/uucp/libunix/portnm.c
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/libexec/uucp/libunix/portnm.c')
-rw-r--r--gnu/libexec/uucp/libunix/portnm.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/gnu/libexec/uucp/libunix/portnm.c b/gnu/libexec/uucp/libunix/portnm.c
new file mode 100644
index 000000000000..9eda4ab012ba
--- /dev/null
+++ b/gnu/libexec/uucp/libunix/portnm.c
@@ -0,0 +1,51 @@
+/* portnm.c
+ Get the port name of stdin. */
+
+#include "uucp.h"
+
+#include "sysdep.h"
+#include "system.h"
+
+#if HAVE_TCP
+#if HAVE_SYS_TYPES_TCP_H
+#include <sys/types.tcp.h>
+#endif
+#include <sys/socket.h>
+#endif
+
+#ifndef ttyname
+extern char *ttyname ();
+#endif
+
+/* Get the port name of standard input. I assume that Unix systems
+ generally support ttyname. If they don't, this function can just
+ return NULL. It uses getsockname to see whether standard input is
+ a TCP connection. */
+
+const char *
+zsysdep_port_name (ftcp_port)
+ boolean *ftcp_port;
+{
+ const char *z;
+
+ *ftcp_port = FALSE;
+
+#if HAVE_TCP
+ {
+ size_t clen;
+ struct sockaddr s;
+
+ clen = sizeof (struct sockaddr);
+ if (getsockname (0, &s, &clen) == 0)
+ *ftcp_port = TRUE;
+ }
+#endif /* HAVE_TCP */
+
+ z = ttyname (0);
+ if (z == NULL)
+ return NULL;
+ if (strncmp (z, "/dev/", sizeof "/dev/" - 1) == 0)
+ return z + sizeof "/dev/" - 1;
+ else
+ return z;
+}