1 /* pckt_addr.c
2 *
3 * copyright (c) 2000-2003 SeaD
4 * see GPL for copying info
5 *
6 */
7
8 #include <string.h>
9 #include "echat.h"
10
addr_add(void)11 void addr_add(void) {
12 register int n;
13
14 for (n = ADDRS_MAX-1; n > 0; n--)
15 strncpy(status->addr[n], status->addr[n-1], ADDR_SIZE);
16 strncpy(status->addr[0], status->address, ADDR_SIZE);
17 if (status->addrs < ADDRS_MAX) status->addrs++;
18 }
19
addr_del(void)20 void addr_del(void) {
21 register int n;
22
23 for (n = 0; n < ADDRS_MAX-1; n++)
24 if (!strncmp(status->addr[n], status->address, ADDR_SIZE)) break;
25 for (; n < ADDRS_MAX-1; n++)
26 strncpy(status->addr[n], status->addr[n+1], ADDR_SIZE);
27 status->addr[n][0] = '\0';
28 }
29
addr_parse(void)30 void addr_parse(void) {
31 char str[ADDR_SIZE+1];
32 register int n, m;
33
34 for (n = 0; n < strlen(config->address); n++)
35 for (m = 0; m < ADDR_SIZE+1; m++, n++)
36 if (((str[m] = config->address[n]) == ' ') || (str[m] == '\0')) {
37 str[m] = '\0';
38 strncpy(status->address, str, ADDR_SIZE);
39 addr_add();
40 break;
41 }
42 #ifdef DEBUG
43 fprintf(debug_file, "socketaddrs: ");
44 for (n = 0; n < status->addrs; n++)
45 fprintf(debug_file, "%s ", status->addr[n]);
46 fprintf(debug_file, "\n");
47 fflush(debug_file);
48 #endif /* DEBUG */
49 }
50
addr_netcmp(char * addr1,char * addr2)51 int addr_netcmp(char *addr1, char *addr2) {
52 char str1[ADDR_SIZE+1], str2[ADDR_SIZE+1];
53 register int n;
54
55 for (n = strlen(addr1), strncpy(str1, addr1, ADDR_SIZE); n > 0; n--)
56 if (str1[n] == '.') { str1[n] = '\0'; break; }
57 for (n = strlen(addr2), strncpy(str2, addr2, ADDR_SIZE); n > 0; n--)
58 if (str2[n] == '.') { str2[n] = '\0'; break; }
59 return (strncmp(str1, str2, ADDR_SIZE));
60 }
61
addr_init(void)62 void addr_init(void) {
63
64 }
65