From 05ca6abd65ef08443f471ab674224faf7e0037b8 Mon Sep 17 00:00:00 2001
From: dd
Date: Thu, 9 Aug 2001 06:45:35 +0000
Subject: Print the peer's name and address in the "Connection establish"
message. Similar information is given by the talk daemon when a connection
is requested, but that part isn't on the screen when the main "talk" screen
appears, and sometimes it's nice to know who you're talking to.
Reviewed by: ru
---
usr.bin/talk/io.c | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
(limited to 'usr.bin/talk')
diff --git a/usr.bin/talk/io.c b/usr.bin/talk/io.c
index 4a6fd9e..782314f 100644
--- a/usr.bin/talk/io.c
+++ b/usr.bin/talk/io.c
@@ -46,10 +46,13 @@ static const char rcsid[] =
*/
#include
+#include
+#include
#include
#include
#include
#include "talk.h"
+#include "talk_ctl.h"
#define A_LONG_TIME 10000000
@@ -59,12 +62,32 @@ static const char rcsid[] =
void
talk()
{
+ struct hostent *hp, *hp2;
int nb;
fd_set read_set, read_template;
- char buf[BUFSIZ];
+ char buf[BUFSIZ], **addr, *his_machine_name;
struct timeval wait;
- message("Connection established");
+ his_machine_name = NULL;
+ hp = gethostbyaddr((const char *)&his_machine_addr.s_addr,
+ sizeof(his_machine_addr.s_addr), AF_INET);
+ if (hp != NULL) {
+ hp2 = gethostbyname(hp->h_name);
+ if (hp2 != NULL && hp2->h_addrtype == AF_INET &&
+ hp2->h_length == sizeof(his_machine_addr))
+ for (addr = hp2->h_addr_list; *addr != NULL; addr++)
+ if (memcmp(*addr, &his_machine_addr,
+ sizeof(his_machine_addr)) == 0) {
+ his_machine_name = strdup(hp->h_name);
+ break;
+ }
+ }
+ if (his_machine_name == NULL)
+ his_machine_name = strdup(inet_ntoa(his_machine_addr));
+ snprintf(buf, sizeof(buf), "Connection established with %s@%s.",
+ msg.r_name, his_machine_name);
+ free(his_machine_name);
+ message(buf);
write(STDOUT_FILENO, "\007\007\007", 3);
current_line = 0;
--
cgit v1.1