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