servers.c

Go to the documentation of this file.
00001 #include <stdio.h>
00002 #include <string.h>
00003 #include <libxml/xmlmemory.h>
00004 #include <libxml/parser.h>
00005 #include <glib.h>
00006 
00007 #include "lpbot.h"
00008 
00017 lp_server *lp_find_server(char *chatname)
00018 {
00019         int i;
00020 
00021         for(i=0;i<g_list_length(config->servers);i++)
00022         {
00023                 lp_server *server = g_list_nth_data(config->servers, i);
00024                 if(!strcmp(server->chatname, chatname))
00025                         return server;
00026         }
00027         return NULL;
00028 }
00029 
00035 int parseServer(xmlDoc *doc, xmlNode *cur)
00036 {
00037         xmlChar *key;
00038         cur = cur->xmlChildrenNode;
00039         lp_server *server = g_new0(lp_server, 1);
00040 
00041 
00042         while (cur)
00043         {
00044                 key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
00045                 if ((!xmlStrcmp(cur->name, (const xmlChar *)"chatname")))
00046                         server->chatname = strdup((char*)key);
00047                 else if ((!xmlStrcmp(cur->name, (const xmlChar *)"address")))
00048                         server->address = strdup((char*)key);
00049                 else if ((!xmlStrcmp(cur->name, (const xmlChar *)"port")))
00050                         server->port = atoi((char*)key);
00051                 else if ((!xmlStrcmp(cur->name, (const xmlChar *)"nick")))
00052                         server->nick = strdup((char*)key);
00053                 else if ((!xmlStrcmp(cur->name, (const xmlChar *)"username")))
00054                         server->username = strdup((char*)key);
00055                 else if ((!xmlStrcmp(cur->name, (const xmlChar *)"realname")))
00056                         server->realname = strdup((char*)key);
00057                 else if ((!xmlStrcmp(cur->name, (const xmlChar *)"channel")))
00058                         server->channels = g_list_append(server->channels, strdup((char*)key));
00059                 xmlFree(key);
00060                 cur = cur->next;
00061         }
00062         config->servers = g_list_append(config->servers, server);
00063         return(0);
00064 }
00065 
00069 void lp_server_free(lp_server *srv)
00070 {
00071         free(srv->chatname);
00072         free(srv->address);
00073         free(srv->nick);
00074         free(srv->username);
00075         free(srv->realname);
00076         g_list_free(srv->channels);
00077 }
00078 /* @} */

Generated on Mon May 19 15:36:55 2008 for lpbot by  doxygen 1.5.4