Go to the source code of this file.
Data Structures | |
struct | server |
Typedefs | |
typedef struct server | server_t |
Functions | |
server_t * | server_get_next () |
void | server_set_next (int next) |
int | server_add (char *host, int port, char *pass) |
int | server_del (int num) |
int | server_find (const char *host, int port, const char *pass) |
int | server_clear () |
Variables | |
server_t * | server_list |
int | server_list_index |
int | server_list_len |
int server_add | ( | char * | host, | |
int | port, | |||
char * | pass | |||
) |
Definition at line 58 of file serverlist.c.
References server::host, server::next, server::pass, server::port, and server_list_len.
00059 { 00060 server_t *serv, *ptr; 00061 00062 /* Fill out a server entry. */ 00063 serv = calloc(1, sizeof(*serv)); 00064 serv->host = strdup(host); 00065 serv->port = port; 00066 if (pass) serv->pass = strdup(pass); 00067 00068 /* Append the server to the list. */ 00069 for (ptr = server_list; ptr && ptr->next; ptr = ptr->next) { 00070 ; /* empty */ 00071 } 00072 if (ptr) ptr->next = serv; 00073 else server_list = serv; 00074 00075 server_list_len++; 00076 00077 return(server_list_len-1); 00078 }
int server_clear | ( | ) |
Definition at line 140 of file serverlist.c.
References server::next, NULL, server_free(), server_list_index, and server_list_len.
00141 { 00142 server_t *cur, *next; 00143 00144 for (cur = server_list; cur; cur = next) { 00145 next = cur->next; 00146 server_free(cur); 00147 } 00148 server_list = NULL; 00149 server_list_len = 0; 00150 server_list_index = -1; 00151 return(0); 00152 }
int server_del | ( | int | num | ) |
Definition at line 88 of file serverlist.c.
References server::next, NULL, server_free(), server_list_index, and server_list_len.
00089 { 00090 server_t *cur, *prev; 00091 int i; 00092 00093 prev = NULL; 00094 i = 0; 00095 for (cur = server_list; cur; cur = cur->next) { 00096 if (i == num) break; 00097 prev = cur; 00098 i++; 00099 } 00100 if (!cur) return(-1); 00101 00102 if (prev) prev->next = cur->next; 00103 else server_list = cur->next; 00104 00105 server_free(cur); 00106 00107 /* If we removed a server from underneath the current pointer, we got 00108 * bumped down. The list also shrinks by 1. */ 00109 if (num < server_list_index) server_list_index--; 00110 server_list_len--; 00111 00112 return(0); 00113 }
int server_find | ( | const char * | host, | |
int | port, | |||
const char * | pass | |||
) |
Definition at line 116 of file serverlist.c.
References server::host, server::next, server::pass, and server::port.
00117 { 00118 server_t *serv; 00119 int i, found; 00120 00121 i = 0; 00122 for (serv = server_list; serv; serv = serv->next) { 00123 found = 0; 00124 if (!host) found++; 00125 else if (!strcasecmp(serv->host, host)) found++; 00126 00127 if (!port) found++; 00128 else if (serv->port == port) found++; 00129 00130 if (!pass) found++; 00131 else if (!strcasecmp(serv->pass, pass)) found++; 00132 00133 if (found == 3) return(i); 00134 i++; 00135 } 00136 return(-1); 00137 }
server_t* server_get_next | ( | ) |
Definition at line 36 of file serverlist.c.
References server::next, NULL, server_list_index, and server_list_len.
00037 { 00038 server_t *serv; 00039 int i; 00040 00041 if (server_list_len <= 0) return(NULL); 00042 server_list_index++; 00043 if (server_list_index >= server_list_len) server_list_index = 0; 00044 00045 serv = server_list; 00046 for (i = 0; i < server_list_index && serv; i++) { 00047 serv = serv->next; 00048 } 00049 return(serv); 00050 }
void server_set_next | ( | int | next | ) |
Definition at line 52 of file serverlist.c.
References server_list_index.
00053 { 00054 server_list_index = next-1; 00055 }
Definition at line 31 of file serverlist.c.
Definition at line 32 of file serverlist.c.
int server_list_len |
Definition at line 33 of file serverlist.c.