亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? configure.cpp

?? 一個C++寫的RSS解析器,需要libxml2.rpm支持
?? CPP
字號:
#include "string.h"
#include "stdio.h"

#include "utils.h"

#include "configure.h"


struct Outline* malloc_outline()
{
	struct Outline* outline = (struct Outline*)malloc(sizeof(struct Outline));

	memset(outline, 0, sizeof(struct Outline));

	outline->htmlUrl = NULL;
	outline->title = NULL;
	outline->type = NULL;
	outline->xmlUrl = NULL;
	outline->kind = 0;
	outline->begintag = NULL;
	outline->endtag = NULL;
	
	
	outline->pNext = NULL;

	return outline;
}

void free_outline(struct Outline* outline)
{
	if(!outline)
		return;

	if(outline->htmlUrl)
		free(outline->htmlUrl);
	if(outline->title)
		free(outline->title);
	if(outline->type)
		free(outline->type);
	if(outline->xmlUrl)
		free(outline->xmlUrl);
	if(outline->begintag)
		free(outline->begintag);
	if(outline->endtag)
		free(outline->endtag);
}


struct Source* malloc_source()
{
	struct Source* source = (struct Source*)malloc(sizeof(struct Source));

	memset(source, 0, sizeof(struct Source));

	source->subkey = 0;
	source->name = NULL;
	source->outline_count = 0;
	
	source->outline = NULL;
	source->pNext = NULL;
	
	return source;
}

void free_source(struct Source* source)
{
	if(!source)
		return;

	if(source->name)
		free(source->name);

	struct Outline* pHead= source->outline;
	struct Outline* pCur = NULL;

	while(pHead)
	{
		free_outline(pHead);

		pCur = pHead->pNext;
		free(pHead);

		pHead = pCur;
	}
}

struct ChannelCuster* malloc_channelcuster()
{
	struct ChannelCuster* channelCuster = (struct ChannelCuster*)malloc(sizeof(struct ChannelCuster));

	memset(channelCuster, 0, sizeof(struct Configure));

	channelCuster->interval = 0;
	channelCuster->key = 0;
	channelCuster->name = NULL;
	channelCuster->source_count = 0;
	
	channelCuster->source = NULL;
	channelCuster->pNext = NULL;
	
	return channelCuster;
}

void free_channelcuster(struct ChannelCuster* channelCuster)
{
	if(!channelCuster)
		return;

	if(channelCuster->name)
		free(channelCuster->name);

	struct Source* pHead= channelCuster->source;
	struct Source* pCur = NULL;

	while(pHead)
	{
		free_source(pHead);

		pCur = pHead->pNext;
		free(pHead);

		pHead = pCur;
	}
}

struct Configure* malloc_configure()
{
	struct Configure* configure = (struct Configure*)malloc(sizeof(struct Configure));

	memset(configure, 0 , sizeof(struct Configure));

	configure->log = NULL;
	configure->channelCount = 0;
	configure->channelCuster = NULL;
}

void free_configure(struct Configure* configure)
{
	if(!configure)
		return;

	if(configure->log)
		free(configure->log);
	configure->channelCount = 0;
	configure->channelCuster = NULL;

	free(configure);
}

struct Configure* createConfigure(char* configure_xml)
{
	xmlNodePtr cur;
	xmlDocPtr doc;

	char xpath[ XPATH_LEN ];
	char *info = NULL;
	struct Outline* last_outline = NULL;
	struct Source* last_source = NULL;

	struct ChannelCuster* channelCuster = NULL;
	struct ChannelCuster* last_channelCuster = NULL;


	doc = xmlParseFile( configure_xml);
    	if ( doc == NULL )
    	{
    		DEBUG_SCREEN("can't load configure log [%s].", configure_xml);
        	return NULL;
    	}

	cur = xmlDocGetRootElement( doc );    
	if ( cur == NULL )
    	{
       		xmlFreeDoc( doc );

		DEBUG_SCREEN("can't load configure log [%s].", configure_xml);
       		return NULL;
    	}

	struct Configure* configure = malloc_configure();

	info = get_locationContent( doc, "//newspaper/log" );
	if(info)
		configure->log = (char*)strdup(info);

	for(int pos = 1;;pos++)
	{
		sprintf( xpath, "//newspaper/channel[%d]", pos);
		cur = get_location( doc, xpath);
		if(cur == NULL)
		{
			break;
		}

		channelCuster = malloc_channelcuster();
		if(configure->channelCuster == NULL)
			configure->channelCuster = channelCuster;
		
		info = ( char* ) xmlGetProp( cur, ( const xmlChar* ) "key" );
		if(!info)
		{
			DEBUG_SCREEN("configure 'key' error.\n");
			free_configure(configure);
			return NULL;
		}
		channelCuster->key = atoi(info);

		sprintf( xpath, "//newspaper/channel[%d]/name", pos);
		info = get_locationContent( doc, xpath );
	   	if(!info)
		{
			DEBUG_SCREEN("configure 'name' error.\n");
			free_configure(configure);
			return NULL;
		}
		channelCuster->name = (char*)strdup(CodeConvert(info, METHOD_UTF8_TO_GB2312));

		sprintf( xpath, "//newspaper/channel[%d]/interval", pos);
		info = get_locationContent( doc, xpath );
	   	if(!info)
		{
			DEBUG_SCREEN("configure 'interval' error.\n");
			free_configure(configure);
			return NULL;
		}
		channelCuster->interval = atoi(info);

		last_source = NULL;
		for(int i = 1;;i++)
		{
			sprintf( xpath, "//newspaper/channel[%d]/source[%d]", pos, i);
			cur = get_location( doc, xpath);
			if(cur == NULL)
				break;
				
			struct Source* source = malloc_source();
			info = (char*)xmlGetProp( cur, ( const xmlChar* ) "name" );
			if(info)
				source->name = (char*)strdup(CodeConvert(info, METHOD_UTF8_TO_GB2312));
			
			info = (char*)xmlGetProp( cur, ( const xmlChar* ) "subkey" );
			if(info)
				source->subkey = atoi(info);
				
			
			last_outline = NULL;
			for(int j=1;;j++)
			{
				sprintf( xpath, "//newspaper/channel[%d]/source[%d]/outline[%d]", pos, i, j);
				cur = get_location( doc, xpath);
				if(cur == NULL)
					break;
	
				struct Outline* outline = malloc_outline();
				
				info = (char*)xmlGetProp( cur, ( const xmlChar* ) "title" );
				if(info)
					outline->title = (char*)strdup(CodeConvert(info, METHOD_UTF8_TO_GB2312));

				info = (char*)xmlGetProp( cur, ( const xmlChar* ) "xmlUrl" );
				if(info)
					outline->xmlUrl = (char*)strdup(info);
	
				info = (char*)xmlGetProp( cur, ( const xmlChar* ) "htmlUrl" );
				if(info)
					outline->htmlUrl = (char*)strdup(info);
	
				info = (char*)xmlGetProp( cur, ( const xmlChar* ) "type" );
				if(info)
					outline->type = (char*)strdup(info);
					
				sprintf( xpath, "//newspaper/channel[%d]/source[%d]/outline[%d]/begintag", pos, i, j);
				info = get_locationContent( doc, xpath );
				if(info)
					outline->begintag = (char*)strdup(info);
				
				sprintf( xpath, "//newspaper/channel[%d]/source[%d]/outline[%d]/endtag", pos, i, j);
				info = get_locationContent( doc, xpath );
				if(info)
					outline->endtag = (char*)strdup(info);
					
				sprintf( xpath, "//newspaper/channel[%d]/source[%d]/outline[%d]/kind", pos, i, j);
				info = get_locationContent( doc, xpath );
				if(info)
					outline->kind = atoi(info);
	
				if(last_outline == NULL)
				{
					source->outline = outline;
					last_outline = outline;
				}else
				{
					last_outline->pNext = outline;
					last_outline = outline;
				}
	
				source->outline_count++;
			}
			
			if(last_source == NULL)
			{
				channelCuster->source = source;
				last_source = source;
			}else
			{
				last_source->pNext = source;
				last_source = source;
			}
			
			channelCuster->source_count++;
		}
		

		if(last_channelCuster == NULL)
			last_channelCuster = channelCuster;
		else
		{
			last_channelCuster->pNext = channelCuster;
			last_channelCuster = channelCuster;
		}

		configure->channelCount++;
	}

	xmlFreeDoc( doc );
	
	return configure;
}

void destroyConfigure(struct Configure* configure)
{
	if(!configure)
		return;

	struct ChannelCuster* pHead = configure->channelCuster;
	struct ChannelCuster* pNext = NULL;

	while(pHead)
	{
		free_channelcuster(pHead);

		pNext = pHead->pNext;
		free(pHead);

		pHead= pHead->pNext;
	}

	free_configure(configure);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩久久免费av| 欧美性猛交一区二区三区精品| ww亚洲ww在线观看国产| 精品1区2区在线观看| 国产农村妇女毛片精品久久麻豆| 日本一区二区免费在线| 一区二区三区美女视频| 国产.精品.日韩.另类.中文.在线.播放| 99久久精品免费看| 久久久久久久久久久电影| 国产精品久久久久久久久图文区| 亚洲一区二区三区中文字幕在线| 亚洲国产成人91porn| 国产精品1区2区| 欧美色男人天堂| 中文字幕一区二区三区在线观看| 午夜精品免费在线| 欧美性大战xxxxx久久久| 欧美久久久久久久久久| 欧美一三区三区四区免费在线看 | 国产不卡在线视频| 国产成人午夜高潮毛片| 色狠狠综合天天综合综合| 91精品在线一区二区| 国产精品国产三级国产| 麻豆精品视频在线观看| 国产乱码精品一区二区三区av| 97se亚洲国产综合在线| 欧美一区二区网站| 国产精品麻豆久久久| 久久99国产乱子伦精品免费| 在线免费不卡电影| 国产精品免费视频网站| 蜜臂av日日欢夜夜爽一区| 91在线精品一区二区三区| 精品国产髙清在线看国产毛片| 亚洲精品中文字幕乱码三区| 国产成人免费视频| 久久久久久久久蜜桃| 婷婷久久综合九色国产成人| 99综合电影在线视频| 亚洲国产精品av| 成人免费高清视频| 久久久久久一二三区| 免费成人av资源网| 日韩视频免费直播| 亚洲美女一区二区三区| 99精品欧美一区二区三区综合在线| 久久久亚洲国产美女国产盗摄| 日本午夜一本久久久综合| ww亚洲ww在线观看国产| 国产精品综合av一区二区国产馆| 日韩一区二区在线看片| 蓝色福利精品导航| 国产日本亚洲高清| 色婷婷综合五月| 日本 国产 欧美色综合| 国产丝袜在线精品| 在线观看亚洲专区| 国产精品中文欧美| 亚洲国产另类av| 久久精品人人做人人综合| 99精品国产视频| 加勒比av一区二区| 一区二区三区国产| 国产日韩欧美麻豆| 日韩视频一区二区三区| 99久久伊人精品| 国内外精品视频| 另类欧美日韩国产在线| 国产精品蜜臀av| 精品国产欧美一区二区| 香蕉乱码成人久久天堂爱免费| 综合av第一页| 免费观看日韩电影| 国产一区二区三区四区在线观看| 日韩国产一二三区| 日本欧美一区二区| 亚洲国产精华液网站w| 国产日韩av一区| 国产精品国产三级国产普通话蜜臀| 国产亚洲女人久久久久毛片| 日本一区二区综合亚洲| 亚洲蜜臀av乱码久久精品蜜桃| 一区二区三区免费| 国产在线精品国自产拍免费| 九色porny丨国产精品| 国内精品久久久久影院色| 成人h版在线观看| 制服丝袜av成人在线看| 亚洲欧洲韩国日本视频| 日本午夜一本久久久综合| 国产一区二区在线免费观看| eeuss鲁片一区二区三区| 欧美一级二级在线观看| 亚洲色欲色欲www| 激情六月婷婷久久| 欧美日韩国产天堂| 亚洲狠狠爱一区二区三区| 国产一区二区三区综合| 精品卡一卡二卡三卡四在线| 亚洲欧美日韩久久精品| 成人免费高清在线| 亚洲国产精品激情在线观看| 狂野欧美性猛交blacked| 欧美一级黄色大片| 狠狠色丁香婷婷综合久久片| 欧美一区二区在线视频| 日韩精品国产欧美| 欧美一区二区福利视频| 麻豆成人久久精品二区三区小说| 色狠狠一区二区三区香蕉| 亚洲精品视频自拍| 在线观看91视频| 蜜臀久久99精品久久久久久9| 在线不卡免费欧美| 精品亚洲成a人| 欧美一区二区三区视频免费| 日韩欧美国产综合| 国内成人免费视频| 国产精品嫩草99a| 在线播放日韩导航| 国产91精品一区二区麻豆亚洲| 欧美日韩一区二区三区四区| 久久久久久99久久久精品网站| 亚洲图片另类小说| 97精品久久久午夜一区二区三区| 成人av午夜电影| 欧美一区二区三区播放老司机| 亚洲一区二区三区四区的| 欧美最猛黑人xxxxx猛交| 极品美女销魂一区二区三区| 悠悠色在线精品| 国产精品免费av| 亚洲视频资源在线| 欧美日韩精品一区二区天天拍小说| 91激情五月电影| 欧美绝品在线观看成人午夜影视| 欧美福利电影网| 中文字幕欧美国产| 亚洲一区二区三区在线看| 久久精品国产亚洲高清剧情介绍| 久久av老司机精品网站导航| 99精品国产视频| 精品国产乱码久久久久久老虎| 亚洲图片欧美激情| 久久www免费人成看片高清| 日韩国产在线一| 亚洲最快最全在线视频| 91成人网在线| 欧美三级在线视频| 欧美视频精品在线观看| 久久国产剧场电影| 狠狠色丁香九九婷婷综合五月| 欧美国产日韩一二三区| 欧美一二三区在线| 色综合久久综合中文综合网| 丁香激情综合五月| 成人动漫视频在线| eeuss鲁一区二区三区| 成人中文字幕在线| www.亚洲免费av| 欧美电视剧在线看免费| 欧美丝袜第三区| 久久免费视频色| 国产精品一二三区| 欧美一区二区三区不卡| 欧美一级xxx| 欧美精品777| 91精品国产91久久综合桃花| 免费成人在线视频观看| 三级亚洲高清视频| 日韩一区精品视频| 日韩一区中文字幕| 一级做a爱片久久| 经典三级视频一区| 91小视频在线| 色999日韩国产欧美一区二区| 日韩国产精品久久久久久亚洲| 亚洲第一电影网| 亚洲成av人片在www色猫咪| 成人avav影音| 久久久久久久久久久黄色| 中文字幕日韩一区| 亚洲午夜视频在线观看| 国产精品不卡在线| 成人性色生活片| 日韩一卡二卡三卡| 丝瓜av网站精品一区二区 | 日韩高清不卡在线| av一区二区三区在线| 国产欧美中文在线| 国产在线精品免费| 久久影视一区二区| 国产一区二区在线视频| xfplay精品久久| 高潮精品一区videoshd| 91麻豆精品国产无毒不卡在线观看| 亚洲精品网站在线观看| 欧美日韩成人激情|