| 49 |
{ |
{ |
| 50 |
if (file_path == NULL || cache_dir == NULL || p_article == NULL) |
if (file_path == NULL || cache_dir == NULL || p_article == NULL) |
| 51 |
{ |
{ |
| 52 |
log_error("article_cache_path() NULL pointer error\n"); |
log_error("NULL pointer error\n"); |
| 53 |
return -1; |
return -1; |
| 54 |
} |
} |
| 55 |
|
|
| 76 |
|
|
| 77 |
if (cache_dir == NULL || p_article == NULL || content == NULL) |
if (cache_dir == NULL || p_article == NULL || content == NULL) |
| 78 |
{ |
{ |
| 79 |
log_error("article_cache_generate() NULL pointer error\n"); |
log_error("NULL pointer error\n"); |
| 80 |
return -1; |
return -1; |
| 81 |
} |
} |
| 82 |
|
|
| 113 |
localtime_r(&(p_article->sub_dt), &tm_sub_dt); |
localtime_r(&(p_article->sub_dt), &tm_sub_dt); |
| 114 |
strftime(str_sub_dt, sizeof(str_sub_dt), "%c", &tm_sub_dt); |
strftime(str_sub_dt, sizeof(str_sub_dt), "%c", &tm_sub_dt); |
| 115 |
|
|
| 116 |
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", |
| 117 |
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); |
| 118 |
|
|
| 119 |
snprintf(footer, sizeof(footer), |
snprintf(footer, sizeof(footer), |
| 120 |
"\n--\n%s※ 来源: %s http://%s [FROM: %s]\033[m\n\n", |
"\n--\n%s鈥 鏉ユ簮: %s http://%s [FROM: %s]\033[m\n\n", |
| 121 |
BBS_article_footer_color[p_article->aid % BBS_article_footer_color_count], |
BBS_article_footer_color[p_article->aid % BBS_article_footer_color_count], |
| 122 |
BBS_name, BBS_server, sub_ip); |
BBS_name, BBS_server, sub_ip); |
| 123 |
|
|
| 135 |
} |
} |
| 136 |
|
|
| 137 |
// Apply LML render to content body |
// Apply LML render to content body |
| 138 |
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, 0); |
| 139 |
|
|
| 140 |
cache.line_total = header_line_cnt + |
cache.line_total = header_line_cnt + |
| 141 |
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, cache.line_offsets + header_line_cnt, MAX_SPLIT_FILE_LINES - header_line_cnt, 1, NULL); |
| 227 |
|
|
| 228 |
if (p_cache == NULL || cache_dir == NULL || p_article == NULL) |
if (p_cache == NULL || cache_dir == NULL || p_article == NULL) |
| 229 |
{ |
{ |
| 230 |
log_error("article_cache_load() NULL pointer error\n"); |
log_error("NULL pointer error\n"); |
| 231 |
return -1; |
return -1; |
| 232 |
} |
} |
| 233 |
|
|
| 274 |
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)); |
| 275 |
|
|
| 276 |
p_cache->p_mmap = p_mmap; |
p_cache->p_mmap = p_mmap; |
| 277 |
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); |
| 278 |
|
|
| 279 |
return 0; |
return 0; |
| 280 |
} |
} |
| 283 |
{ |
{ |
| 284 |
if (p_cache == NULL || p_cache->p_mmap == NULL) |
if (p_cache == NULL || p_cache->p_mmap == NULL) |
| 285 |
{ |
{ |
| 286 |
log_error("article_cache_unload() NULL pointer error\n"); |
log_error("NULL pointer error\n"); |
| 287 |
return -1; |
return -1; |
| 288 |
} |
} |
| 289 |
|
|