From e896c344fb8b3bf51aa7b86aa9186a03987385cc Mon Sep 17 00:00:00 2001
From: Dima Dorfman
Date: Thu, 9 Aug 2001 06:45:35 +0000
Subject: [PATCH] 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(-)
diff --git a/usr.bin/talk/io.c b/usr.bin/talk/io.c
index 4a6fd9e27f8..782314fbe2e 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;