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

Diff of /lbbs/src/section_list.c

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

Revision 1.40 by sysadm, Mon Oct 13 02:23:27 2025 UTC Revision 1.46 by sysadm, Thu Oct 23 05:54:16 2025 UTC
# Line 17  Line 17 
17  #include "log.h"  #include "log.h"
18  #include "section_list.h"  #include "section_list.h"
19  #include "trie_dict.h"  #include "trie_dict.h"
20    #include "user_list.h"
21  #include <errno.h>  #include <errno.h>
22  #include <signal.h>  #include <signal.h>
23  #include <stdio.h>  #include <stdio.h>
# Line 649  SECTION_LIST *section_list_create(int32_ Line 650  SECTION_LIST *section_list_create(int32_
650          return p_section;          return p_section;
651  }  }
652    
653    int section_list_update(SECTION_LIST *p_section, const char *sname, const char *stitle, const char *master_list)
654    {
655            int64_t index;
656    
657            if (p_section == NULL || sname == NULL || stitle == NULL || master_list == NULL)
658            {
659                    log_error("NULL pointer error\n");
660                    return -1;
661            }
662    
663            index = get_section_index(p_section);
664    
665            strncpy(p_section->sname, sname, sizeof(p_section->sname) - 1);
666            p_section->sname[sizeof(p_section->sname) - 1] = '\0';
667    
668            strncpy(p_section->stitle, stitle, sizeof(p_section->stitle) - 1);
669            p_section->stitle[sizeof(p_section->stitle) - 1] = '\0';
670    
671            strncpy(p_section->master_list, master_list, sizeof(p_section->master_list) - 1);
672            p_section->master_list[sizeof(p_section->master_list) - 1] = '\0';
673    
674            if (trie_dict_set(p_section_list_pool->p_trie_dict_section_by_name, sname, index) < 0)
675            {
676                    log_error("trie_dict_set(section, %s, %d) error\n", sname, index);
677                    return -2;
678            }
679    
680            return 0;
681    }
682    
683  void section_list_reset_articles(SECTION_LIST *p_section)  void section_list_reset_articles(SECTION_LIST *p_section)
684  {  {
685          p_section->article_count = 0;          p_section->article_count = 0;
# Line 664  void section_list_reset_articles(SECTION Line 695  void section_list_reset_articles(SECTION
695          p_section->ontop_article_count = 0;          p_section->ontop_article_count = 0;
696  }  }
697    
698  SECTION_LIST *section_list_find_by_name(const char *sname, int64_t *p_index)  SECTION_LIST *section_list_find_by_name(const char *sname)
699  {  {
700          int64_t index;          int64_t index;
701          int ret;          int ret;
# Line 686  SECTION_LIST *section_list_find_by_name( Line 717  SECTION_LIST *section_list_find_by_name(
717                  return NULL;                  return NULL;
718          }          }
719    
         if (p_index != NULL)  
         {  
                 *p_index = index;  
         }  
   
720          return (p_section_list_pool->sections + index);          return (p_section_list_pool->sections + index);
721  }  }
722    
723  SECTION_LIST *section_list_find_by_sid(int32_t sid, int64_t *p_index)  SECTION_LIST *section_list_find_by_sid(int32_t sid)
724  {  {
725          int64_t index;          int64_t index;
726          int ret;          int ret;
# Line 719  SECTION_LIST *section_list_find_by_sid(i Line 745  SECTION_LIST *section_list_find_by_sid(i
745                  return NULL;                  return NULL;
746          }          }
747    
         if (p_index != NULL)  
         {  
                 *p_index = index;  
         }  
   
748          return (p_section_list_pool->sections + index);          return (p_section_list_pool->sections + index);
749  }  }
750    
# Line 737  int section_list_append_article(SECTION_ Line 758  int section_list_append_article(SECTION_
758    
759          if (p_section == NULL || p_article_src == NULL)          if (p_section == NULL || p_article_src == NULL)
760          {          {
761                  log_error("section_list_append_article() NULL pointer error\n");                  log_error("NULL pointer error\n");
762                  return -1;                  return -1;
763          }          }
764    
# Line 905  int section_list_set_article_visible(SEC Line 926  int section_list_set_article_visible(SEC
926          {          {
927                  p_section->visible_article_count--;                  p_section->visible_article_count--;
928    
929                    if (user_article_cnt_inc(p_article->uid, -1) < 0)
930                    {
931                            log_error("user_article_cnt_inc(uid=%d, -1) error\n", p_article->uid);
932                    }
933    
934                  if (p_article->tid == 0)                  if (p_article->tid == 0)
935                  {                  {
936                          p_section->visible_topic_count--;                          p_section->visible_topic_count--;
# Line 923  int section_list_set_article_visible(SEC Line 949  int section_list_set_article_visible(SEC
949                                          p_reply->visible = 0;                                          p_reply->visible = 0;
950                                          p_section->visible_article_count--;                                          p_section->visible_article_count--;
951                                          affected_count++;                                          affected_count++;
952    
953                                            if (user_article_cnt_inc(p_reply->uid, -1) < 0)
954                                            {
955                                                    log_error("user_article_cnt_inc(uid=%d, -1) error\n", p_reply->uid);
956                                            }
957                                  }                                  }
958                          }                          }
959                  }                  }
# Line 935  int section_list_set_article_visible(SEC Line 966  int section_list_set_article_visible(SEC
966                  {                  {
967                          p_section->visible_topic_count++;                          p_section->visible_topic_count++;
968                  }                  }
969    
970                    if (user_article_cnt_inc(p_article->uid, 1) < 0)
971                    {
972                            log_error("user_article_cnt_inc(uid=%d, 1) error\n", p_article->uid);
973                    }
974          }          }
975    
976          p_article->visible = visible;          p_article->visible = visible;
# Line 1072  ARTICLE *section_list_find_article_with_ Line 1108  ARTICLE *section_list_find_article_with_
1108    
1109          if (p_section == NULL)          if (p_section == NULL)
1110          {          {
1111                  log_error("section_list_find_article_with_offset() NULL pointer error\n");                  log_error("NULL pointer error\n");
1112                  return NULL;                  return NULL;
1113          }          }
1114    
# Line 1164  int section_list_calculate_page(SECTION_ Line 1200  int section_list_calculate_page(SECTION_
1200    
1201          if (p_section == NULL)          if (p_section == NULL)
1202          {          {
1203                  log_error("section_list_calculate_page() NULL pointer error\n");                  log_error("NULL pointer error\n");
1204                  return -1;                  return -1;
1205          }          }
1206    
# Line 1323  int section_list_move_topic(SECTION_LIST Line 1359  int section_list_move_topic(SECTION_LIST
1359    
1360          if (p_section_src == NULL || p_section_dest == NULL)          if (p_section_src == NULL || p_section_dest == NULL)
1361          {          {
1362                  log_error("section_list_move_topic() NULL pointer error\n");                  log_error("NULL pointer error\n");
1363                  return -1;                  return -1;
1364          }          }
1365    
# Line 1695  int section_list_rd_lock(SECTION_LIST *p Line 1731  int section_list_rd_lock(SECTION_LIST *p
1731                          timer++;                          timer++;
1732                          if (timer % SECTION_TRY_LOCK_TIMES == 0)                          if (timer % SECTION_TRY_LOCK_TIMES == 0)
1733                          {                          {
1734                                  log_error("section_list_try_rd_lock() tried %d times on section %d\n", sid, timer);                                  log_error("section_list_try_rd_lock() tried %d times on section %d\n", timer, sid);
1735                          }                          }
1736                  }                  }
1737                  else // failed                  else // failed
# Line 1726  int section_list_rw_lock(SECTION_LIST *p Line 1762  int section_list_rw_lock(SECTION_LIST *p
1762                          timer++;                          timer++;
1763                          if (timer % SECTION_TRY_LOCK_TIMES == 0)                          if (timer % SECTION_TRY_LOCK_TIMES == 0)
1764                          {                          {
1765                                  log_error("section_list_try_rw_lock() tried %d times on section %d\n", sid, timer);                                  log_error("section_list_try_rw_lock() tried %d times on section %d\n", timer, sid);
1766                          }                          }
1767                  }                  }
1768                  else // failed                  else // failed


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

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