modules/server/serverlist.c File Reference

#include "server.h"

Go to the source code of this file.

Functions

server_tserver_get_next ()
void server_set_next (int next)
int server_add (char *host, int port, char *pass)
static void server_free (server_t *serv)
int server_del (int num)
int server_find (const char *host, int port, const char *pass)
int server_clear ()

Variables

static const char rcsid [] = "$Id: serverlist.c,v 1.7 2004-06-30 21:07:02 stdarg Exp $"
server_tserver_list = NULL
int server_list_index = -1
int server_list_len = 0


Function Documentation

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 }

static void server_free ( server_t serv  )  [static]

Definition at line 80 of file serverlist.c.

References server::host, and server::pass.

Referenced by server_clear(), and server_del().

00081 {
00082   free(serv->host);
00083   if (serv->pass) free(serv->pass);
00084   free(serv);
00085 }

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 }


Variable Documentation

const char rcsid[] = "$Id: serverlist.c,v 1.7 2004-06-30 21:07:02 stdarg Exp $" [static]

Definition at line 21 of file serverlist.c.

Definition at line 31 of file serverlist.c.

Definition at line 32 of file serverlist.c.

int server_list_len = 0

Definition at line 33 of file serverlist.c.


Generated on Sun Nov 30 18:43:36 2008 for eggdrop1.9 by  doxygen 1.5.6