我最近发现水木没有同主题改标题的功能,于是自己做了一个。
现在还有几点没完善:
1. 标题修改后,文件内文件头的标题部分还没修改
2. 在输入标题的地方有个malloc,会导致内存泄漏,暂时还不知道应该在什么地方free
3. 还没写记录日志的部分
4. 主题中有个re文被改标题之后,同主题改标题操作对这个文章也会处理
--- src/bbs.c (revision 11803)
+++ src/bbs.c (working copy)
@@ -6349,7 +6349,8 @@
BM_TMP,
BM_MARKDEL,
BM_NOREPLY,
- BM_TOTAL
+ BM_TOTAL,
+ BM_RENAME
};
const char *SR_BMitems[] = {
@@ -6360,9 +6361,10 @@
"放入暂存档",
"设定拟删标记",
"设定不可回复",
- "制作合集"
+ "制作合集",
+ "修改标题"
};
-const int item_num = 8;
+const int item_num = sizeof(SR_BMitems)/sizeof(SR_BMitems[0]);
struct BMFunc_arg {
bool delpostnum; /*是否减文章数*/
@@ -6510,6 +6512,13 @@
getCurrentUser()->userid);
fh->accessed[0]|=FILE_IMPORTED;
break;
+ case BM_RENAME:
+ if (fh->id == fh->reid){
+ strcpy(fh->title, func_arg->announce_path);
+ }else{
+ sprintf(fh->title, "Re: %s", func_arg->announce_path);
+ }
+ break;
}
#ifdef BOARD_SECURITY_LOG
if (func_arg->fn!=NULL) {
@@ -6665,6 +6674,15 @@
return DONOTHING;
}
func_arg.announce_path=annpath;
+ } else if (BMch == BM_RENAME){
+ gdataret = getdata(t_lines-2, 0, "修改后的标题: ", buf, ARTICLE_TITLE_LEN-4, DOECHO, NULL, true);
+ if (gdataret == -1){
+ saveline(t_lines-2, 1, NULL);
+ saveline(t_lines-3, 1, linebuffer);
+ return DONOTHING;
+ }
+ func_arg.announce_path = (char*)malloc(sizeof(buf));
+ strcpy(func_arg.announce_path, buf);
}
func_arg.action=BMch;
--
修改:ArchLinux FROM 124.205.76.*
FROM 124.205.76.*