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

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

?? rthread.c

?? 早期freebsd實現
?? C
?? 第 1 頁 / 共 3 頁
字號:
	    reread = FALSE;	}    }    artp = Nullart;    art = lastart+1;    forcelast = TRUE;}/* Find previous thread (or last if artp == NULL).  If articles are selected,** only choose from threads with selected articles.*/voidprev_subject(){    register SUBJECT *sp;    register ARTICLE *ap;    sp = ((ap = artp) ? ap->subj->prev : last_subject);    for (; sp; sp = sp->prev) {	if (sp->flags & SF_VISIT) {	    if ((ap = subj_art(sp)) != Nullart) {		art = article_num(ap);		artp = ap;		return;	    }	    reread = FALSE;	}    }    artp = Nullart;    art = lastart+1;    forcelast = TRUE;}/* Find artp's parent or oldest ancestor.  Returns FALSE if no such** article.  Sets art and artp otherwise.*/boolfind_parent(keep_going)bool_int keep_going;{    register ARTICLE *ap = artp;    if (!ap->parent)	return FALSE;    do {	ap = ap->parent;    } while (keep_going && ap->parent);    if (((artp = ap)->flags & AF_TMPMEM) == AF_TMPMEM)	art = 0;    else	art = article_num(ap);    return TRUE;}/* Find artp's first child or youngest decendent.  Returns FALSE if no** such article.  Sets art and artp otherwise.*/boolfind_leaf(keep_going)bool_int keep_going;{    register ARTICLE *ap = artp;    if (!ap->child1)	return FALSE;    do {	ap = ap->child1;    } while (keep_going && ap->child1);    if (((artp = ap)->flags & AF_TMPMEM) == AF_TMPMEM)	art = 0;    else	art = article_num(ap);    return TRUE;}static ARTICLE *first_sib(), *last_sib();/* Find the next "sibling" of artp, including cousins that are the** same distance down the thread as we are.  Returns FALSE if no such** article.  Sets art and artp otherwise.*/boolfind_next_sib(){    ARTICLE *ta, *tb;    int ascent;    ascent = 0;    ta = artp;    for (;;) {	while (ta->sibling) {	    ta = ta->sibling;	    if (tb = first_sib(ta, ascent)) {		if (((artp = tb)->flags & AF_TMPMEM) == AF_TMPMEM)		    art = 0;		else		    art = article_num(tb);		return TRUE;	    }	}	if (!(ta = ta->parent))	    break;	ascent++;    }    return FALSE;}/* A recursive routine to find the first node at the proper depth.  This** article is at depth 0.*/static ARTICLE *first_sib(ta, depth)ARTICLE *ta;int depth;{    ARTICLE *tb;    if (!depth)	return ta;    for (;;) {	if (ta->child1 && (tb = first_sib(ta->child1, depth-1)))	    return tb;	if (!ta->sibling)	    return Nullart;	ta = ta->sibling;    }}/* Find the previous "sibling" of artp, including cousins that are** the same distance down the thread as we are.  Returns FALSE if no** such article.  Sets art and artp otherwise.*/boolfind_prev_sib(){    ARTICLE *ta, *tb;    int ascent;    ascent = 0;    ta = artp;    for (;;) {	tb = ta;	if (ta->parent)	    ta = ta->parent->child1;	else	    ta = ta->subj->thread;	if (tb = last_sib(ta, ascent, tb)) {	    if (((artp = tb)->flags & AF_TMPMEM) == AF_TMPMEM)		art = 0;	    else		art = article_num(tb);	    return TRUE;	}	if (!(ta = ta->parent))	    break;	ascent++;    }    return FALSE;}/* A recursive routine to find the last node at the proper depth.  This** article is at depth 0.*/static ARTICLE *last_sib(ta, depth, limit)ARTICLE *ta;int depth;ARTICLE *limit;{    ARTICLE *tb, *tc;    if (ta == limit)	return Nullart;    if (ta->sibling) {	tc = ta->sibling;	if (tc != limit && (tb = last_sib(tc,depth,limit)))	    return tb;    }    if (!depth)	return ta;    if (ta->child1)	return last_sib(ta->child1, depth-1, limit);    return Nullart;}/* Get each subject's article count; count total articles and selected** articles (use sel_rereading to determine whether to count read or** unread articles); deselect any subjects we find that are empty if** CS_UNSELECT or CS_UNSEL_STORE is specified.  If mode is CS_RESELECT** is specified, the selections from the last CS_UNSEL_STORE are** reselected.*/voidcount_subjects(mode)int mode;{    register int count, sel_count;    register ARTICLE *ap;    register SUBJECT *sp;    int desired_flags = (sel_rereading? AF_READ : 0);    time_t subjdate;    article_count = selected_count = selected_subj_cnt = 0;    if (last_cached >= lastart)	firstart = lastart+1;    for (sp = first_subject; sp; sp = sp->next)	sp->flags &= ~SF_VISIT;    for (sp = first_subject; sp; sp = sp->next) {	subjdate = 0;	count = sel_count = 0;	for (ap = sp->articles; ap; ap = ap->subj_next) {	    if ((ap->flags & (AF_MISSING|AF_READ)) == desired_flags) {		count++;		if (ap->flags & sel_mask)		    sel_count++;		if (!subjdate)		    subjdate = ap->date;		if (article_num(ap) < firstart)		    firstart = article_num(ap);	    }	}	if (mode == CS_UNSEL_STORE) {	    if (sp->flags & SF_SEL)		sp->flags |= SF_OLDSEL;	    else		sp->flags &= ~SF_OLDSEL;	} else if (mode == CS_RESELECT) {	    if (sp->flags & SF_OLDSEL)		sp->flags |= SF_SEL;	    else		sp->flags &= ~SF_SEL;	}	sp->misc = count;	if (subjdate)	    sp->date = subjdate;	article_count += count;	if (sel_count) {	    sp->flags = (sp->flags & ~(SF_SEL|SF_DEL)) | sel_mask;	    selected_count += sel_count;	    selected_subj_cnt++;	} else if (mode >= CS_UNSELECT)	    sp->flags &= ~sel_mask;	else if (sp->flags & sel_mask) {	    sp->flags &= ~SF_DEL;	    selected_subj_cnt++;	}	if (count && (!selected_only || (sp->flags & sel_mask))) {	    sp->flags |= SF_VISIT;	    if (sel_mode == SM_THREAD) {		if ((ap = sp->thread) != NULL)		    ap->subj->flags |= SF_VISIT;	    }	}    }    if (mode && !article_count && !selected_only) {	for (sp = first_subject; sp; sp = sp->next)	    sp->flags |= SF_VISIT;    }}intsubjorder_subject(spp1, spp2)register SUBJECT **spp1;register SUBJECT **spp2;{    return strCASEcmp((*spp1)->str+4, (*spp2)->str+4) * sel_direction;}intsubjorder_date(spp1, spp2)register SUBJECT **spp1;register SUBJECT **spp2;{    return (int)((*spp1)->date - (*spp2)->date) * sel_direction;}intsubjorder_count(spp1, spp2)register SUBJECT **spp1;register SUBJECT **spp2;{    int eq;    if ((eq = (int)((*spp1)->misc - (*spp2)->misc)) != 0)	return eq * sel_direction;    return (int)((*spp1)->date - (*spp2)->date) * sel_direction;}intthreadorder_subject(spp1, spp2)SUBJECT **spp1;SUBJECT **spp2;{    register ARTICLE *t1 = (*spp1)->thread;    register ARTICLE *t2 = (*spp2)->thread;    if (t1 != t2 && t1 && t2)	return strCASEcmp(t1->subj->str+4, t2->subj->str+4) * sel_direction;    return (int)((*spp1)->date - (*spp2)->date) * sel_direction;}intthreadorder_date(spp1, spp2)SUBJECT **spp1;SUBJECT **spp2;{    register ARTICLE *t1 = (*spp1)->thread;    register ARTICLE *t2 = (*spp2)->thread;    if (t1 != t2 && t1 && t2) {	register SUBJECT *sp1, *sp2;	int eq;	if (!(sp1 = t1->subj)->misc)	    for (sp1=sp1->thread_link; sp1 != t1->subj; sp1=sp1->thread_link)		if (sp1->misc)		    break;	if (!(sp2 = t2->subj)->misc)	    for (sp2=sp2->thread_link; sp2 != t2->subj; sp2=sp2->thread_link)		if (sp2->misc)		    break;	if ((eq = (int)(sp1->date - sp2->date) * sel_direction) != 0)	    return eq;	return strCASEcmp(sp1->str+4, sp2->str+4) * sel_direction;    }    return (int)((*spp1)->date - (*spp2)->date) * sel_direction;}intthreadorder_count(spp1, spp2)SUBJECT **spp1;SUBJECT **spp2;{    register int size1 = (*spp1)->misc;    register int size2 = (*spp2)->misc;    if ((*spp1)->thread != (*spp2)->thread) {	register SUBJECT *sp;	for (sp = (*spp1)->thread_link; sp != *spp1; sp = sp->thread_link)	    size1 += sp->misc;	for (sp = (*spp2)->thread_link; sp != *spp2; sp = sp->thread_link)	    size2 += sp->misc;    }    if (size1 != size2)	return (size1 - size2) * sel_direction;    return threadorder_date(spp1, spp2);}/* Sort the subjects according to the chosen order.*/voidsort_subjects(){    register SUBJECT *sp;    register int i;    SUBJECT **lp, **subj_list;    int (*sort_procedure)();    /* If we don't have at least two subjects, we're done! */    if (!first_subject || !first_subject->next)	return;    switch (sel_sort) {    case SS_DATE:    case SS_AUTHOR:    case SS_GROUPS:	sort_procedure = (sel_mode == SM_THREAD?			  threadorder_date : subjorder_date);	break;    case SS_SUBJECT:	sort_procedure = (sel_mode == SM_THREAD?			  threadorder_subject : subjorder_subject);	break;    case SS_COUNT:	sort_procedure = (sel_mode == SM_THREAD?			  threadorder_count : subjorder_count);	break;    }    subj_list = (SUBJECT**)safemalloc(subject_count * sizeof (SUBJECT*));    for (lp = subj_list, sp = first_subject; sp; sp = sp->next)	*lp++ = sp;    assert(lp - subj_list == subject_count);    qsort(subj_list, subject_count, sizeof (SUBJECT*), sort_procedure);    first_subject = sp = subj_list[0];    sp->prev = Nullsubj;    for (i = subject_count, lp = subj_list; --i; lp++) {	lp[0]->next = lp[1];	lp[1]->prev = lp[0];	if (sel_mode == SM_THREAD) {	    if (lp[0]->thread == lp[1]->thread)		lp[0]->thread_link = lp[1];	    else {		lp[0]->thread_link = sp;		sp = lp[1];	    }	}    }    last_subject = lp[0];    last_subject->next = Nullsubj;    if (sel_mode == SM_THREAD)	last_subject->thread_link = sp;    free((char*)subj_list);}intartorder_date(art1, art2)register ARTICLE **art1;register ARTICLE **art2;{    return (int)((*art1)->date - (*art2)->date) * sel_direction;}intartorder_subject(art1, art2)register ARTICLE **art1;register ARTICLE **art2;{    if ((*art1)->subj == (*art2)->subj)	return (int)((*art1)->date - (*art2)->date);    return strCASEcmp((*art1)->subj->str + 4, (*art2)->subj->str + 4)	* sel_direction;}intartorder_author(art1, art2)register ARTICLE **art1;register ARTICLE **art2;{    int eq;    if ((eq = strCASEcmp((*art1)->from, (*art2)->from)) != 0)	return eq * sel_direction;    return (int)((*art1)->date - (*art2)->date);}intartorder_groups(art1, art2)register ARTICLE **art1;register ARTICLE **art2;{    if ((*art1)->subj == (*art2)->subj)	return (int)((*art1)->date - (*art2)->date);    return (int)((*art1)->subj->date - (*art2)->subj->date) * sel_direction;}/* Sort the articles according to the chosen order.*/voidsort_articles(){    int (*sort_procedure)();    build_artptrs();    /* If we don't have at least two articles, we're done! */    if (article_count <2)	return;    switch (sel_sort) {    case SS_DATE:    case SS_COUNT:	sort_procedure = artorder_date;	break;    case SS_SUBJECT:	sort_procedure = artorder_subject;	break;    case SS_AUTHOR:	sort_procedure = artorder_author;	break;    case SS_GROUPS:	sort_procedure = artorder_groups;	break;    }    if (sel_page_app)	sel_last_ap = *sel_page_app;    sel_page_app = 0;    qsort(artptr_list, article_count, sizeof (ARTICLE*), sort_procedure);}static long artptr_list_size = 0;static voidbuild_artptrs(){    ARTICLE **app, *ap;    long count = article_count;    int desired_flags = (sel_rereading? AF_READ : 0);    if (!artptr_list || artptr_list_size != count) {	artptr_list = (ARTICLE**)saferealloc((char*)artptr_list,		(MEM_SIZE)count * sizeof (ARTICLE*));	artptr_list_size = count;    }    for (app = artptr_list, ap = article_list; count; ap++) {	if ((ap->flags & (AF_MISSING|AF_READ)) == desired_flags) {	    *app++ = ap;	    count--;	}    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产欧美日韩| 麻豆精品一二三| 国产福利精品一区| 337p亚洲精品色噜噜噜| 偷拍日韩校园综合在线| 日本久久电影网| www一区二区| 国产麻豆视频一区| 久久色中文字幕| 国产酒店精品激情| 欧美激情综合五月色丁香| 国产一区二区主播在线| 欧美精品久久久久久久多人混战 | 成人国产精品免费| 国产色产综合色产在线视频| 国产精品一线二线三线精华| 久久青草国产手机看片福利盒子| 国产一区999| 中文字幕一区二| 国产91精品久久久久久久网曝门| 欧美激情综合五月色丁香小说| 成人国产免费视频| 亚洲精品videosex极品| 精品视频一区二区不卡| 日本网站在线观看一区二区三区| 欧美日韩一区二区三区不卡| 日本中文在线一区| 欧美变态凌虐bdsm| 久久精品理论片| 国产欧美一区二区三区沐欲| 91在线视频免费观看| 婷婷综合五月天| 欧美电影免费观看高清完整版在线观看 | 国产三级欧美三级日产三级99 | 国产日产欧美精品一区二区三区| www.欧美色图| 国产精品精品国产色婷婷| 在线观看成人小视频| 免费人成黄页网站在线一区二区| 91免费精品国自产拍在线不卡| 亚洲国产日韩a在线播放性色| 欧美绝品在线观看成人午夜影视| 国产伦精品一区二区三区在线观看 | 久久―日本道色综合久久| 亚洲综合色噜噜狠狠| 欧美色老头old∨ideo| 久久福利视频一区二区| 国产乱淫av一区二区三区 | 亚洲成人激情自拍| 日韩国产欧美一区二区三区| 亚洲一二三区在线观看| 一区二区三区精品在线| 国产成人在线视频免费播放| 在线视频亚洲一区| 日韩精品一区二区三区在线| 自拍偷在线精品自拍偷无码专区| 一区二区在线观看不卡| 国产一区二区三区免费看| 日韩一区二区三| 日本在线播放一区二区三区| 99精品桃花视频在线观看| 国产精品午夜免费| 免费看精品久久片| 91 com成人网| 日韩成人av影视| 中文幕一区二区三区久久蜜桃| 国产乱码精品一区二区三区五月婷| 日韩欧美资源站| 欧美日韩国产综合一区二区三区| 日本一区二区综合亚洲| 欧美日韩中字一区| 国产一区999| 七七婷婷婷婷精品国产| 亚洲色图制服诱惑| 欧美一级在线视频| 成人免费黄色在线| 狠狠色丁香久久婷婷综| 日韩va亚洲va欧美va久久| 亚洲精品中文在线观看| 久久亚洲一区二区三区明星换脸| 欧美日韩激情一区二区三区| 色天天综合色天天久久| a亚洲天堂av| 成人一区二区视频| 国产精品1区2区3区| 激情深爱一区二区| 男人的天堂久久精品| 1000精品久久久久久久久| 精品久久久久99| 久久五月婷婷丁香社区| 久久美女高清视频| 国产亚洲精品精华液| 国产精品久久久久久久久快鸭| 久久精品网站免费观看| 国产三级一区二区| 一区二区三区日韩欧美| 亚洲自拍欧美精品| 亚洲欧美日韩在线不卡| 午夜视频在线观看一区| 香蕉加勒比综合久久| 精品无人码麻豆乱码1区2区| 高清不卡一区二区| 91老师国产黑色丝袜在线| 欧美图片一区二区三区| 欧美在线免费视屏| 欧美自拍偷拍一区| 欧美不卡一区二区三区四区| 久久丝袜美腿综合| 一区二区三区欧美日| 午夜精品一区二区三区免费视频| 亚洲成人一区在线| 国产成人精品免费| 色综合夜色一区| 717成人午夜免费福利电影| 欧美激情一区二区三区| 一区二区三区日韩欧美| 亚洲在线视频一区| 精品一区二区日韩| 99精品国产99久久久久久白柏 | 91香蕉视频在线| 欧美一卡二卡三卡| 国产精品视频免费看| 亚洲风情在线资源站| 国产一区日韩二区欧美三区| 99riav久久精品riav| 精品久久久久久最新网址| 国产精品萝li| 天天综合色天天综合| av男人天堂一区| 欧美丰满一区二区免费视频 | 91精品国产综合久久精品麻豆| 欧美精品一区二区三区一线天视频| 亚洲国产电影在线观看| 蜜桃视频在线一区| av成人老司机| 欧美日韩黄色影视| 亚洲色欲色欲www| 精品一区二区三区在线视频| 欧美吞精做爰啪啪高潮| 国产精品欧美综合在线| 视频一区视频二区中文字幕| 色狠狠色噜噜噜综合网| 日韩欧美电影在线| 亚洲欧美日韩一区二区三区在线观看 | 三级不卡在线观看| 色狠狠色狠狠综合| 国产日韩欧美一区二区三区综合| 亚洲另类在线一区| 91视频国产观看| 26uuu另类欧美亚洲曰本| 日韩不卡免费视频| 欧美日韩卡一卡二| 国产精品你懂的| 国产成人av一区二区| 欧美精品自拍偷拍动漫精品| 国产欧美一区二区精品秋霞影院| 午夜精品久久久| 99视频超级精品| 亚洲国产精品t66y| 国产精品伊人色| 精品国产免费一区二区三区香蕉 | 国产麻豆精品在线| 欧美日韩黄色影视| 一区二区三区四区中文字幕| 国产精品亚洲第一| 日韩欧美国产精品一区| 日韩影院在线观看| eeuss影院一区二区三区| 国产精品国产三级国产| 美女高潮久久久| 欧美成人精品3d动漫h| 亚洲成人动漫在线免费观看| 国产老妇另类xxxxx| 久久女同精品一区二区| 久久99国内精品| 精品国产成人在线影院| 久久精品国产澳门| 日韩一级成人av| 青青草视频一区| 欧美日韩三级在线| 视频一区中文字幕| 成人激情小说网站| 国产精品久线在线观看| 一本色道久久综合亚洲91 | 国产一区在线看| 久久久亚洲国产美女国产盗摄 | 欧美性感一类影片在线播放| 一区二区成人在线| 337p亚洲精品色噜噜噜| 日韩av二区在线播放| 欧美日韩不卡一区| 一区二区欧美在线观看| 在线观看国产91| 麻豆精品国产91久久久久久| 宅男噜噜噜66一区二区66| 日韩电影一区二区三区| 国产三区在线成人av| 国产成人aaa| 亚洲欧美日韩一区二区| 欧美日韩精品福利|