改thread的处理方式
diff -u thread.c.bak thread.c
--- thread.c.bak 2003-02-27 17:03:57.000000000 +0800
+++ thread.c 2004-12-24 14:00:37.000000000 +0800
@@ -121,9 +121,15 @@
j * size);
memcpy(&mkpost, ptr2, sizeof (mkpost));
t = ptr2->title;
- if (!strncmp(t, "Re:", 3))
- t += 4;
- sprintf(mkpost.title, "Re: %s", t);
+ // if (!strncmp(t, "Re:", 3) || !strncmp(t, "RE:", 3))
+ if (toupper(t[0]) == 'R' && tolower(t[1]) == 'e' && t[2] == ':') // Re:, RE:, re:, rE: 则通通吃掉...
+ t += 3;
+ if (!strncmp(t, " ", 1)) // 防止标题被覆盖
+ t++;
+ if (next[j]) // 开始干活
+ sprintf(mkpost.title, "├ %s", t);
+ else
+ sprintf(mkpost.title, "└ %s", t);
write(fd, &mkpost, size);
count++;
j = next[j];
另外在boards.c里也要改 readdoent() 函数。
diff -u boards.c.zzu.040920 boards.c
--- boards.c.zzu.040920 2004-09-20 08:28:00.000000000 +0800
+++ boards.c 2004-12-24 13:57:38.000000000 +0800
@@ -1452,9 +1445,19 @@
TITLE = ent->title;
filter(TITLE);
+ if ((ent->accessed & FH_ISTOP)) { //ISTOP
+ if (ent->thread != ent->filetime && // (!strncmp(TITLE, "Re:", 3) || !strncmp(TITLE, "RE:", 3)))
+ toupper(TITLE[0]) == 'R' && tolower(TITLE[1]) == 'e' && TITLE[2] == ':')
+ sprintf(buf," \033[1;33m[提示]\033[m %-12.12s%s %cRe: %-.45s\033[m",
+ owner, date, attached ? '@' : ' ', TITLE + 3);
+ else
+ sprintf(buf, " \033[1;33m[提示]\033[m %-12.12s%s %c● %-.45s\033[m",
+ owner, date, attached ? '@' : ' ', TITLE);
+ } else
if (uinfo.mode != RMAIL && digestmode != 1 && digestmode != 4
&& digestmode != 5) { //用新方法
- if (ent->thread != ent->filetime && !strncmp(TITLE, "Re: ", 4)) { //Re文
+ if (ent->thread != ent->filetime && // (!strncmp(TITLE, "Re:", 3) || !strncmp(TITLE, "RE:", 3))) {//Re文
+ toupper(TITLE[0]) == 'R' && tolower(TITLE[1]) == 'e' && TITLE[2] == ':') { // 更准确的判断Re文方法
if (readingthread == ent->thread) //当前正在读的主题
sprintf(buf,
" \033[1;36m%4d\033[m%s%-12.12s%s\033[1;36m.%c%sRe:\033[0;1;36m%-.45s\033[m",
@@ -1464,11 +1467,24 @@
TITLE + 3);
else
sprintf(buf,
- " %4d%s%-12.12s%s %c%sRe:\033[m%-.45s\033[m",
+ " %4d%s%-12.12s%s %c\033[36m%sRe:\033[m\033[36m%-.45s\033[m",
num, typestring, owner, date,
attached ? '@' : ' ',
noreply ? "\033[0;1;4;33m" : "",
TITLE + 3);
+ } else if (!strncmp(TITLE, "├ ", 3) || !strncmp(TITLE, "└ ", 3)) { // 主要就是这里,要处理标题是"├ "和"└ "的情况。
+ if (readingthread == ent->thread)
+ sprintf(buf,
+ " \033[1;36m%4d\033[m%s%-12.12s%s\033[1;36m.%c%-.45s\033[m",
+ num, typestring, owner, date,
+ attached ? '@' : ' ',
+ TITLE); // 同主题模式下就不判断是否有不可Re标志了。
+ else
+ sprintf(buf,
+ " %4d%s%-12.12s%s %c\033[36m%-.45s\033[m",
+ num, typestring, owner, date,
+ attached ? '@' : ' ',
+ TITLE);
} else {
if (readingthread == ent->thread)
sprintf(buf,
用 toupper(TITLE[0]) == 'R' && tolower(TITLE[1]) == 'e' && TITLE[2] == ':' 这种判断Re文方法可以把所有 Re: / RE: / re: / rE: 开头的回帖都显示作 Re: ,效果还是不错的
web下面的还没有来的及改。。。太多了~而且大部分是 strncmp(title, "Re: ",4) ? "○ " : "" 这么用的。。。看来应该写成个函数去用~
最后的效果大致就是
一般模式
1338 ttsstt Dec 23 ● test
1339 chutium Dec 23 Re:test
1340 chutium Dec 23 Re:test
1341 chutium Dec 23 Re:test
1342 chutium Dec 23 Re:test
1343 chutium Dec 23 Re: test
1344 chutium Dec 23 Re:test
1345 chutium Dec 23 Re: test
1346 chutium Dec 23 Re: test
1347 chutium Dec 23 Re: test
1348 chutium Dec 23 Re:test
1349 chutium Dec 23 Re:test
1350 chutium Dec 23 Re:test
1351 chutium Dec 23 Re: test
1352 chutium Dec 23 Re:...test
1353 chutium Dec 23 Re:test
>1354 hanth Dec 24. Re: 守侯你
1355 chutium Dec 24 Re:test
1356 chutium Dec 24 Re:!test
1357 chutium Dec 24 Re:test
同主题模式
>1339 ttsstt Dec 23 ● test
1340 chutium Dec 23 ├ test
1341 chutium Dec 23 ├ test
1342 chutium Dec 23 ├ test
1343 chutium Dec 23 ├ test
1344 chutium Dec 23 ├ test
1345 chutium Dec 23 ├ test
1346 chutium Dec 23 ├ test
1347 chutium Dec 23 ├ test
1348 chutium Dec 23 ├ test
1349 chutium Dec 23 ├ test
1350 chutium Dec 23 ├ test
1351 chutium Dec 23 ├ test
1352 chutium Dec 23 ├ test
1353 chutium Dec 23 ├ ...test
1354 chutium Dec 23 ├ test
1355 chutium Dec 24 ├ test
1356 chutium Dec 24 ├ !test
1357 chutium Dec 24 └ test
--
FROM 222.22.10.*