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

Diff of /lbbs/src/article_cache.c

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

Revision 1.24 by sysadm, Wed Jul 2 04:17:33 2025 UTC Revision 1.33 by sysadm, Tue Nov 4 13:49:50 2025 UTC
# Line 1  Line 1 
1  /***************************************************************************  /* SPDX-License-Identifier: GPL-3.0-or-later */
2                                             article_cache.c  -  description  /*
3                                                           -------------------   * article_cache
4          Copyright            : (C) 2004-2025 by Leaflet   *   - convert article content from DB to local cache with LML conversion and line offset index
5          Email                : leaflet@leafok.com   *
6   ***************************************************************************/   * Copyright (C) 2004-2025 by Leaflet <leaflet@leafok.com>
7     */
 /***************************************************************************  
  *                                                                         *  
  *   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 3 of the License, or     *  
  *   (at your option) any later version.                                   *  
  *                                                                         *  
  ***************************************************************************/  
8    
9  #include "article_cache.h"  #include "article_cache.h"
10  #include "lml.h"  #include "lml.h"
# Line 49  inline static int article_cache_path(cha Line 41  inline static int article_cache_path(cha
41  {  {
42          if (file_path == NULL || cache_dir == NULL || p_article == NULL)          if (file_path == NULL || cache_dir == NULL || p_article == NULL)
43          {          {
44                  log_error("article_cache_path() NULL pointer error\n");                  log_error("NULL pointer error\n");
45                  return -1;                  return -1;
46          }          }
47    
# Line 76  int article_cache_generate(const char *c Line 68  int article_cache_generate(const char *c
68    
69          if (cache_dir == NULL || p_article == NULL || content == NULL)          if (cache_dir == NULL || p_article == NULL || content == NULL)
70          {          {
71                  log_error("article_cache_generate() NULL pointer error\n");                  log_error("NULL pointer error\n");
72                  return -1;                  return -1;
73          }          }
74    
# Line 111  int article_cache_generate(const char *c Line 103  int article_cache_generate(const char *c
103    
104          // Generate article header / footer          // Generate article header / footer
105          localtime_r(&(p_article->sub_dt), &tm_sub_dt);          localtime_r(&(p_article->sub_dt), &tm_sub_dt);
106          strftime(str_sub_dt, sizeof(str_sub_dt), "%c", &tm_sub_dt);          strftime(str_sub_dt, sizeof(str_sub_dt), "%c %Z", &tm_sub_dt);
107    
108          snprintf(header, sizeof(header), "发布者: %s (%s), 版块: %s (%s)\n标  题: %s\n发布于: %s (%s)\n\n",          snprintf(header, sizeof(header), "发布者: %s (%s), 版块: %s (%s)\n标  题: %s\n发布于: %s (%s)\n\n",
109                           p_article->username, p_article->nickname, p_section->sname, p_section->stitle, p_article->title, BBS_name, str_sub_dt);                           p_article->username, p_article->nickname, p_section->sname, p_section->stitle, p_article->title, BBS_name, str_sub_dt);
# Line 135  int article_cache_generate(const char *c Line 127  int article_cache_generate(const char *c
127          }          }
128    
129          // Apply LML render to content body          // Apply LML render to content body
130          cache.data_len = header_len + (size_t)lml_plain(content, content_f, ARTICLE_CONTENT_MAX_LEN);          cache.data_len = header_len + (size_t)lml_render(content, content_f, ARTICLE_CONTENT_MAX_LEN, SCREEN_COLS, 0);
131    
132          cache.line_total = header_line_cnt +          cache.line_total = header_line_cnt +
133                                             split_data_lines(content_f, SCREEN_COLS, cache.line_offsets + header_line_cnt, MAX_SPLIT_FILE_LINES - header_line_cnt, 1, NULL);                                             split_data_lines(content_f, SCREEN_COLS + 1, cache.line_offsets + header_line_cnt, MAX_SPLIT_FILE_LINES - header_line_cnt, 1, NULL);
134    
135          if (cache.data_len - header_len != (size_t)cache.line_offsets[cache.line_total])          if (cache.data_len - header_len != (size_t)cache.line_offsets[cache.line_total])
136          {          {
# Line 227  int article_cache_load(ARTICLE_CACHE *p_ Line 219  int article_cache_load(ARTICLE_CACHE *p_
219    
220          if (p_cache == NULL || cache_dir == NULL || p_article == NULL)          if (p_cache == NULL || cache_dir == NULL || p_article == NULL)
221          {          {
222                  log_error("article_cache_load() NULL pointer error\n");                  log_error("NULL pointer error\n");
223                  return -1;                  return -1;
224          }          }
225    
# Line 274  int article_cache_load(ARTICLE_CACHE *p_ Line 266  int article_cache_load(ARTICLE_CACHE *p_
266          memcpy((void *)p_cache, p_mmap, (size_t)(((ARTICLE_CACHE *)p_mmap)->mmap_len - ((ARTICLE_CACHE *)p_mmap)->data_len));          memcpy((void *)p_cache, p_mmap, (size_t)(((ARTICLE_CACHE *)p_mmap)->mmap_len - ((ARTICLE_CACHE *)p_mmap)->data_len));
267    
268          p_cache->p_mmap = p_mmap;          p_cache->p_mmap = p_mmap;
269          p_cache->p_data = p_mmap + (p_cache->mmap_len - p_cache->data_len);          p_cache->p_data = (char *)p_mmap + (p_cache->mmap_len - p_cache->data_len);
270    
271          return 0;          return 0;
272  }  }
# Line 283  int article_cache_unload(ARTICLE_CACHE * Line 275  int article_cache_unload(ARTICLE_CACHE *
275  {  {
276          if (p_cache == NULL || p_cache->p_mmap == NULL)          if (p_cache == NULL || p_cache->p_mmap == NULL)
277          {          {
278                  log_error("article_cache_unload() NULL pointer error\n");                  log_error("NULL pointer error\n");
279                  return -1;                  return -1;
280          }          }
281    


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

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