| 75 |
|
|
| 76 |
static ARTICLE_BLOCK_POOL *p_article_block_pool = NULL; |
static ARTICLE_BLOCK_POOL *p_article_block_pool = NULL; |
| 77 |
|
|
| 78 |
struct section_list_pool_t |
SECTION_LIST_POOL *p_section_list_pool = NULL; |
|
{ |
|
|
int shmid; |
|
|
SECTION_LIST sections[BBS_max_section]; |
|
|
int section_count; |
|
|
int semid; |
|
|
TRIE_NODE *p_trie_dict_section_by_name; |
|
|
TRIE_NODE *p_trie_dict_section_by_sid; |
|
|
}; |
|
|
typedef struct section_list_pool_t SECTION_LIST_POOL; |
|
|
|
|
|
static SECTION_LIST_POOL *p_section_list_pool = NULL; |
|
| 79 |
|
|
| 80 |
int article_block_init(const char *filename, int block_count) |
int article_block_init(const char *filename, int block_count) |
| 81 |
{ |
{ |
| 544 |
p_section_list_pool = NULL; |
p_section_list_pool = NULL; |
| 545 |
} |
} |
| 546 |
|
|
|
void section_list_ex_menu_set_cleanup(void) |
|
|
{ |
|
|
int i; |
|
|
|
|
|
for (i = 0; i < p_section_list_pool->section_count; i++) |
|
|
{ |
|
|
if (p_section_list_pool->sections[i].ex_menu_tm > 0) |
|
|
{ |
|
|
unload_menu(&(p_section_list_pool->sections[i].ex_menu_set)); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
| 547 |
int set_section_list_shm_readonly(void) |
int set_section_list_shm_readonly(void) |
| 548 |
{ |
{ |
| 549 |
int shmid; |
int shmid; |
| 664 |
p_section->ontop_article_count = 0; |
p_section->ontop_article_count = 0; |
| 665 |
} |
} |
| 666 |
|
|
| 667 |
SECTION_LIST *section_list_find_by_name(const char *sname) |
SECTION_LIST *section_list_find_by_name(const char *sname, int64_t *p_index) |
| 668 |
{ |
{ |
| 669 |
int64_t index; |
int64_t index; |
| 670 |
int ret; |
int ret; |
| 686 |
return NULL; |
return NULL; |
| 687 |
} |
} |
| 688 |
|
|
| 689 |
|
if (p_index != NULL) |
| 690 |
|
{ |
| 691 |
|
*p_index = index; |
| 692 |
|
} |
| 693 |
|
|
| 694 |
return (p_section_list_pool->sections + index); |
return (p_section_list_pool->sections + index); |
| 695 |
} |
} |
| 696 |
|
|
| 697 |
SECTION_LIST *section_list_find_by_sid(int32_t sid) |
SECTION_LIST *section_list_find_by_sid(int32_t sid, int64_t *p_index) |
| 698 |
{ |
{ |
| 699 |
int64_t index; |
int64_t index; |
| 700 |
int ret; |
int ret; |
| 719 |
return NULL; |
return NULL; |
| 720 |
} |
} |
| 721 |
|
|
| 722 |
|
if (p_index != NULL) |
| 723 |
|
{ |
| 724 |
|
*p_index = index; |
| 725 |
|
} |
| 726 |
|
|
| 727 |
return (p_section_list_pool->sections + index); |
return (p_section_list_pool->sections + index); |
| 728 |
} |
} |
| 729 |
|
|
| 1033 |
return -1; |
return -1; |
| 1034 |
} |
} |
| 1035 |
|
|
| 1036 |
page_count = p_section->page_count - 1 + |
page_count = p_section->page_count - (p_section->last_page_visible_article_count > 0 ? 1 : 0) + |
| 1037 |
(p_section->last_page_visible_article_count + p_section->ontop_article_count) / BBS_article_limit_per_page + |
(p_section->last_page_visible_article_count + p_section->ontop_article_count) / BBS_article_limit_per_page + |
| 1038 |
((p_section->last_page_visible_article_count + p_section->ontop_article_count) % BBS_article_limit_per_page == 0 ? 0 : 1); |
((p_section->last_page_visible_article_count + p_section->ontop_article_count) % BBS_article_limit_per_page == 0 ? 0 : 1); |
| 1039 |
|
|