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