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