xref: /original-bsd/usr.bin/talk/get_addrs.c (revision 2301fdfb)
1 /*
2  * Copyright (c) 1983 Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted
6  * provided that the above copyright notice and this paragraph are
7  * duplicated in all such forms and that any documentation,
8  * advertising materials, and other materials related to such
9  * distribution and use acknowledge that the software was developed
10  * by the University of California, Berkeley.  The name of the
11  * University may not be used to endorse or promote products derived
12  * from this software without specific prior written permission.
13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16  */
17 
18 #ifndef lint
19 static char sccsid[] = "@(#)get_addrs.c	5.5 (Berkeley) 10/11/88";
20 #endif /* not lint */
21 
22 #include "talk_ctl.h"
23 #include <netdb.h>
24 
25 get_addrs(my_machine_name, his_machine_name)
26 	char *my_machine_name, *his_machine_name;
27 {
28 	struct hostent *hp;
29 	struct servent *sp;
30 
31 	msg.pid = htonl(getpid());
32 	/* look up the address of the local host */
33 	hp = gethostbyname(my_machine_name);
34 	if (hp == NULL) {
35 		fprintf(stderr, "talk: %s: ", my_machine_name);
36 		herror((char *)NULL);
37 		exit(-1);
38 	}
39 	bcopy(hp->h_addr, (char *)&my_machine_addr, hp->h_length);
40 	/*
41 	 * If the callee is on-machine, just copy the
42 	 * network address, otherwise do a lookup...
43 	 */
44 	if (strcmp(his_machine_name, my_machine_name)) {
45 		hp = gethostbyname(his_machine_name);
46 		if (hp == NULL) {
47 			fprintf(stderr, "talk: %s: ", his_machine_name);
48 			herror((char *)NULL);
49 			exit(-1);
50 		}
51 		bcopy(hp->h_addr, (char *) &his_machine_addr, hp->h_length);
52 	} else
53 		his_machine_addr = my_machine_addr;
54 	/* find the server's port */
55 	sp = getservbyname("ntalk", "udp");
56 	if (sp == 0) {
57 		fprintf(stderr, "talk: %s/%s: service is not registered.\n",
58 		     "ntalk", "udp");
59 		exit(-1);
60 	}
61 	daemon_port = sp->s_port;
62 }
63