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

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

?? adbanner.c

?? 打魔獸戰網的都知道他是什么
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright (C) 1999  Ross Combs (rocombs@cs.nmsu.edu) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */#define ADBANNER_INTERNAL_ACCESS#include "common/setup_before.h"#include <stdio.h>#ifdef HAVE_STDDEF_H# include <stddef.h>#else# ifndef NULL#  define NULL ((void *)0)# endif#endif#ifdef STDC_HEADERS# include <stdlib.h>#else# ifdef HAVE_MALLOC_H#  include <malloc.h># endif#endif#ifdef HAVE_STRING_H# include <string.h>#else# ifdef HAVE_STRINGS_H#  include <strings.h># endif#endif#ifdef HAVE_ASSERT_H# include <assert.h>#endif#include "compat/strrchr.h"#include "compat/strdup.h"#include "compat/strcasecmp.h"#include <errno.h>#include "compat/strerror.h"#include "common/tag.h"#include "common/bn_type.h"#include "common/eventlog.h"#include "common/list.h"#include "common/util.h"#include "common/xalloc.h"#include "connection.h"#include "adbanner.h"#include "common/setup_after.h"static t_list * adbannerlist_init_head=NULL;static t_list * adbannerlist_start_head=NULL;static t_list * adbannerlist_norm_head=NULL;static unsigned int adbannerlist_init_count=0;static unsigned int adbannerlist_start_count=0;static unsigned int adbannerlist_norm_count=0;static t_adbanner * adbanner_create(unsigned int id, unsigned int next_id, unsigned int delay, bn_int tag, char const * filename, char const * link, char const * client);static int adbanner_destroy(t_adbanner const * ad);static int adbannerlist_insert(t_list * head, unsigned int * count, char const * filename, unsigned int delay, char const * link, unsigned int next_id, char const * client);static t_adbanner * adbannerlist_find_adbanner_by_id(t_list const * head, unsigned int id, t_clienttag clienttag);static t_adbanner * adbannerlist_get_random(t_list const * head, t_clienttag client);static t_adbanner * adbanner_create(unsigned int id, unsigned int next_id, unsigned int delay, bn_int tag, char const * filename, char const * link, char const * client){    t_adbanner * ad;        if (!filename)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL filename");	return NULL;    }    if (!link)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL link");	return NULL;    }    if (!client)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL client");	return NULL;    }        ad = xmalloc(sizeof(t_adbanner));        ad->id           = id;    ad->extensiontag = bn_int_get(tag);    ad->delay        = delay;    ad->next         = next_id;    ad->filename = xstrdup(filename);    ad->link = xstrdup(link);    if (strcasecmp(client,"NULL")==0)    	ad->client = 0;    else	ad->client = clienttag_str_to_uint(client);    /* I'm aware that this statement looks stupid */    if (ad->client && (!tag_check_client(ad->client)))    {    	eventlog(eventlog_level_error,__FUNCTION__,"banner with invalid clienttag \"%s\"encountered",client);	xfree((void *)ad->link);	xfree((void *)ad->filename); /* avoid warning */	xfree(ad);	return NULL;    }    eventlog(eventlog_level_debug,__FUNCTION__,"created ad id=0x%08x filename=\"%s\" extensiontag=0x%04x delay=%u link=\"%s\" next_id=0x%08x client=\"%s\"",ad->id,ad->filename,ad->extensiontag,ad->delay,ad->link,ad->next,ad->client?client:"");    return ad;}static int adbanner_destroy(t_adbanner const * ad){    if (!ad)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL ad");	return -1;    }        xfree((void *)ad->filename); /* avoid warning */    xfree((void *)ad->link); /* avoid warning */    xfree((void *)ad); /* avoid warning */        return 0;}extern t_adbanner * adbanner_get(t_connection const * c, unsigned int id){  t_adbanner * banner;  t_clienttag ctag = conn_get_clienttag(c);  banner = adbannerlist_find_adbanner_by_id(adbannerlist_init_head,id,ctag);  if (!banner) banner = adbannerlist_find_adbanner_by_id(adbannerlist_start_head,id,ctag);  if (!banner) banner = adbannerlist_find_adbanner_by_id(adbannerlist_norm_head,id,ctag);  return banner;}extern t_adbanner * adbanner_pick(t_connection const * c, unsigned int prev_id){    t_adbanner const * prev;    unsigned int       next_id;    t_clienttag ctag;        if (!c)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");	return NULL;    }    ctag = conn_get_clienttag(c);    /* eventlog(eventlog_level_debug,__FUNCTION__,"prev_id=%u init_count=%u start_count=%u norm_count=%u",prev_id,adbannerlist_init_count,adbannerlist_start_count,adbannerlist_norm_count); */    /* if this is the first ad, randomly choose an init sequence (if there is one) */    if (prev_id==0 && adbannerlist_init_count>0)        return adbannerlist_get_random(adbannerlist_init_head,ctag);//        return list_get_data_by_pos(adbannerlist_init_head,((unsigned int)rand())%adbannerlist_init_count);    /* eventlog(eventlog_level_debug,__FUNCTION__,"not sending init banner"); */        /* find the previous adbanner */    if ((prev = adbannerlist_find_adbanner_by_id(adbannerlist_init_head,prev_id,ctag)))	next_id = prev->next;    else if ((prev = adbannerlist_find_adbanner_by_id(adbannerlist_start_head,prev_id,ctag)))	next_id = prev->next;    else if ((prev = adbannerlist_find_adbanner_by_id(adbannerlist_norm_head,prev_id,ctag)))	next_id = prev->next;    else	next_id = 0;        /* return its next ad if there is one */    if (next_id)    {	t_adbanner * curr;		if ((curr = adbannerlist_find_adbanner_by_id(adbannerlist_init_head,next_id,ctag)))	    return curr;	if ((curr = adbannerlist_find_adbanner_by_id(adbannerlist_start_head,next_id,ctag)))	    return curr;	if ((curr = adbannerlist_find_adbanner_by_id(adbannerlist_norm_head,next_id,ctag)))	    return curr;		eventlog(eventlog_level_error,__FUNCTION__,"could not locate next requested ad with id 0x%06x",next_id);    }    /* eventlog(eventlog_level_debug,__FUNCTION__,"not sending next banner"); */        /* otherwise choose another starting point randomly */    if (adbannerlist_start_count>0)	return adbannerlist_get_random(adbannerlist_start_head,ctag);    /* eventlog(eventlog_level_debug,__FUNCTION__,"not sending start banner... nothing to return"); */    return NULL; /* nothing else to return */}extern unsigned int adbanner_get_id(t_adbanner const * ad){    if (!ad)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL ad");	return 0;    }    return ad->id;}extern unsigned int adbanner_get_extensiontag(t_adbanner const * ad){    if (!ad)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL ad");	return 0;    }    return ad->extensiontag;}extern char const * adbanner_get_filename(t_adbanner const * ad){    if (!ad)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL ad");	return NULL;    }    return ad->filename;}extern char const * adbanner_get_link(t_adbanner const * ad){    if (!ad)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL ad");	return NULL;    }    return ad->link;}extern t_clienttag adbanner_get_client(t_adbanner const * ad){    if (!ad)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL ad");	return CLIENTTAG_UNKNOWN_UINT;    }    return ad->client;}static t_adbanner * adbannerlist_find_adbanner_by_id(t_list const * head, unsigned int id, t_clienttag clienttag){    t_elem const * curr;    t_adbanner *   temp;    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2014亚洲片线观看视频免费| 欧美高清视频不卡网| 日韩国产成人精品| 亚洲制服丝袜一区| 亚洲高清视频在线| 亚洲国产精品久久久久婷婷884 | 欧美色欧美亚洲另类二区| 99精品偷自拍| 91久久国产综合久久| 色网综合在线观看| 欧美在线一二三| 69p69国产精品| 欧美成人在线直播| 国产偷v国产偷v亚洲高清| 国产亚洲一区二区在线观看| 日本一区二区免费在线| 亚洲素人一区二区| 亚洲国产视频在线| 久久精品国产秦先生| 国产黄色91视频| 成人精品鲁一区一区二区| 91麻豆产精品久久久久久| 欧美在线三级电影| 欧美电影精品一区二区| 国产欧美视频一区二区| 亚洲欧美一区二区三区国产精品| 一区二区三区中文字幕电影| 日韩精品一级中文字幕精品视频免费观看| 香蕉成人啪国产精品视频综合网 | 国产一区二区日韩精品| 国产不卡在线一区| 欧美丝袜丝nylons| 亚洲日本乱码在线观看| 天天av天天翘天天综合网色鬼国产| 久久精品国产在热久久| 99久久精品国产精品久久| 欧美日本在线观看| 国产精品午夜在线| 日本不卡一区二区| 99国产精品国产精品毛片| 欧美肥胖老妇做爰| 国产精品高潮久久久久无| 日本视频中文字幕一区二区三区| 国产成人在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 国产免费成人在线视频| 亚洲综合网站在线观看| 国产成人免费xxxxxxxx| 欧美色男人天堂| 亚洲国产精品二十页| 日本午夜精品一区二区三区电影 | 一区二区三区日韩| 国产成人h网站| 51精品国自产在线| 一区二区三区欧美| 成人性生交大片| 精品国产人成亚洲区| 午夜精品一区在线观看| 在线亚洲高清视频| 综合欧美一区二区三区| 欧美日韩中文精品| 亚洲综合一二区| 国产精品一二二区| 欧美一级日韩一级| 亚洲综合久久久久| 色香蕉成人二区免费| 日本一区二区三区久久久久久久久不| 亚洲成人av一区二区| 色偷偷88欧美精品久久久| 国产精品视频yy9299一区| 国产一本一道久久香蕉| 精品剧情v国产在线观看在线| 天堂精品中文字幕在线| 欧美视频一区在线| 亚洲国产精品自拍| 欧美性猛片aaaaaaa做受| 亚洲另类在线制服丝袜| 99精品视频中文字幕| 国产精品久久久久一区二区三区| 国产成人三级在线观看| 国产精品私房写真福利视频| 国产福利一区在线| 国产精品高潮久久久久无| 成人精品国产免费网站| 中文字幕欧美一区| 99久久国产综合精品女不卡| 偷窥少妇高潮呻吟av久久免费| 在线观看av不卡| 日韩精品欧美成人高清一区二区| 3d动漫精品啪啪一区二区竹菊| 丝袜美腿亚洲综合| 欧美一区二区三级| 国模冰冰炮一区二区| 久久久久99精品一区| 99九九99九九九视频精品| 一区二区三区精品视频| 欧美人伦禁忌dvd放荡欲情| 日欧美一区二区| 欧美精品一区二区不卡 | 欧美精品一区二| 成人av高清在线| 亚洲高清免费视频| 日韩欧美久久久| 粉嫩av一区二区三区| 一区二区三区在线免费播放| 欧美日韩一区三区| 国产一区二区三区av电影| 国产精品久久久久婷婷| 欧美美女一区二区三区| 国产精品一品视频| 亚洲精品日产精品乱码不卡| 欧美一级xxx| 色综合久久综合网97色综合 | 国产精品污www在线观看| 在线免费观看视频一区| 久久成人免费日本黄色| 国产精品久久久久久久久免费樱桃 | 午夜精品久久一牛影视| 久久精品无码一区二区三区| 欧美亚一区二区| 成人av片在线观看| 另类欧美日韩国产在线| 亚洲欧美视频在线观看视频| 日韩欧美激情在线| 欧美日韩精品一区二区天天拍小说| 国产精品一级在线| 麻豆精品一区二区av白丝在线| 最新不卡av在线| 久久久久99精品国产片| 91精品国模一区二区三区| 99国产精品久久| 国产电影一区二区三区| 日韩黄色一级片| 亚洲国产中文字幕| 亚洲欧美日韩在线播放| 国产欧美日韩久久| 精品久久人人做人人爽| 91精品国产综合久久久久久 | 国产成人精品网址| 美女尤物国产一区| 午夜视频一区在线观看| 一区二区三区蜜桃| 亚洲图片激情小说| 日韩美女视频一区| 中文字幕日韩一区| 日韩美女久久久| 亚洲欧洲日本在线| 1024成人网| 最好看的中文字幕久久| 国产欧美日韩不卡免费| 中文字幕av一区二区三区高| 一区二区三区资源| 亚洲色图欧洲色图| 亚洲精品一二三| 亚洲精品老司机| 亚洲一区在线观看免费 | 日韩欧美综合在线| 日韩无一区二区| 欧美变态tickling挠脚心| 日韩免费看的电影| 久久久噜噜噜久噜久久综合| 精品国产凹凸成av人网站| 久久久久久久久久电影| 日本一区二区动态图| 亚洲色图另类专区| 午夜欧美2019年伦理| 免费成人美女在线观看.| 蜜桃精品在线观看| 国产精品一区专区| 波多野结衣中文字幕一区二区三区| 99re8在线精品视频免费播放| 91蜜桃免费观看视频| 91久久线看在观草草青青| 欧美高清激情brazzers| 精品国产乱码久久久久久久久 | 九色|91porny| 国产成a人亚洲| 一本久久综合亚洲鲁鲁五月天| 欧美日韩一区高清| 欧美精品一区二区三区久久久 | 亚洲国产一区二区三区| 蜜臀va亚洲va欧美va天堂| 国产aⅴ综合色| 在线一区二区三区四区五区 | 99国产精品久久久久| 欧美美女视频在线观看| 久久亚洲综合av| 亚洲免费av高清| 另类的小说在线视频另类成人小视频在线| 国产精品一区不卡| 欧美日韩激情在线| 国产午夜精品久久久久久免费视| 一区二区三区在线看| 国产麻豆成人传媒免费观看| 色妹子一区二区| 久久免费国产精品| 日韩精品色哟哟| 色乱码一区二区三区88| 久久九九久久九九| 蜜乳av一区二区|