/[LeafOK_CVS]/lbbs/src/section_list_loader.c
ViewVC logotype

Diff of /lbbs/src/section_list_loader.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.12 by sysadm, Fri May 30 12:51:00 2025 UTC Revision 1.14 by sysadm, Sat May 31 08:54:03 2025 UTC
# Line 288  int append_articles_from_db(int32_t star Line 288  int append_articles_from_db(int32_t star
288    
289                  article_count++;                  article_count++;
290    
291                  if (article_cache_generate(VAR_ARTICLE_CACHE_DIR, &article, row[i++], 0) < 0)                  if (article_cache_generate(VAR_ARTICLE_CACHE_DIR, &article, p_section, row[i++], 0) < 0)
292                  {                  {
293                          log_error("article_cache_generate(aid=%d, cid=%d) error\n", article.aid, article.cid);                          log_error("article_cache_generate(aid=%d, cid=%d) error\n", article.aid, article.cid);
294                          ret = -4;                          ret = -4;
# Line 488  int apply_article_op_log_from_db(int op_ Line 488  int apply_article_op_log_from_db(int op_
488                          {                          {
489                                  p_article->cid = atoi(row2[0]);                                  p_article->cid = atoi(row2[0]);
490    
491                                  if (article_cache_generate(VAR_ARTICLE_CACHE_DIR, p_article, row2[1], 0) < 0)                                  if (article_cache_generate(VAR_ARTICLE_CACHE_DIR, p_article, p_section, row2[1], 0) < 0)
492                                  {                                  {
493                                          log_error("article_cache_generate(aid=%d, cid=%d) error\n", p_article->aid, p_article->cid);                                          log_error("article_cache_generate(aid=%d, cid=%d) error\n", p_article->aid, p_article->cid);
494                                          ret = -4;                                          ret = -4;
# Line 819  int query_section_articles(SECTION_LIST Line 819  int query_section_articles(SECTION_LIST
819    
820          return ret;          return ret;
821  }  }
822    
823    int locate_article_in_section(SECTION_LIST *p_section, const ARTICLE *p_article_cur, int direction,
824                                                              int *p_page_id, int *p_offset, int *p_article_count)
825    {
826            ARTICLE *p_article = NULL;
827            ARTICLE *p_next;
828            int32_t aid = 0;
829            int ret = 0;
830    
831            if (p_section == NULL || p_article_cur == NULL || p_page_id == NULL || p_offset == NULL || p_article_count == NULL)
832            {
833                    log_error("locate_article_in_section() NULL pointer error\n");
834                    return -1;
835            }
836    
837            // acquire lock of section
838            if ((ret = section_list_rd_lock(p_section)) < 0)
839            {
840                    log_error("section_list_rd_lock(sid = %d) error\n", p_section->sid);
841                    return -2;
842            }
843    
844            if (direction == 0)
845            {
846                    aid = p_article_cur->aid;
847            }
848            else if (direction == 1)
849            {
850                    aid = p_article_cur->p_topic_next->aid;
851                    if (aid <= p_article_cur->aid)
852                    {
853                            aid = 0;
854                    }
855            }
856            else if (direction == -1)
857            {
858                    aid = p_article_cur->p_topic_prior->aid;
859                    if (aid >= p_article_cur->aid)
860                    {
861                            aid = 0;
862                    }
863            }
864    
865            if (aid > 0)
866            {
867                    p_article = section_list_find_article_with_offset(p_section, aid, p_page_id, p_offset, &p_next);
868                    if (p_article != NULL)
869                    {
870                            *p_article_count = (*p_page_id == p_section->page_count - 1 ? p_section->last_page_visible_article_count : BBS_article_limit_per_page);
871                    }
872            }
873    
874            // release lock of section
875            if (section_list_rd_unlock(p_section) < 0)
876            {
877                    log_error("section_list_rd_unlock(sid = %d) error\n", p_section->sid);
878                    ret = -2;
879            }
880    
881            return (ret < 0 ? ret : (p_article == NULL ? 0 : 1));
882    }


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1