荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (好好学习,天天向上), 信区: BBSAdmin
标  题: [转载] 文章不可RE 功能(转寄)
发信站: BBS 荔园晨风站 (Wed Nov 24 13:38:31 1999), 转信

【 以下文字转载自 zzt 的信箱 】
【 原文由 zhuzutao.bbs@bbs.net.tsinghua.edu.cn 所发表 】
发信人: deardragon (【老农】快意灌水站210.38.248.1), 信区: BBSMan_Dev
标  题: 文章不可RE 功能
发信站: BBS 水木清华站 (Wed Nov 24 08:27:23 1999)

发信人: deardragon (老农), 信区: InstallBBS
标  题: 不可RE功能实现代码
发信站: 快意灌水站 (1999年11月23日 星期二 02:15PM), 转信
1. 在 bbs.h 中增加文件 不可RE属性标志.
#define FILE_NOREPLY 0x40      /* No Allow Replay */
2. 在 bbs.c 中增加设置不可 RE 操作功能对应的函数:
   因为最初不可RE功能是从 SMTH 上得到的启示, 也是用下
划线标题表示一个不可RE文章. 故该功能操作取名 unerline_post(),
采用热键 '_' 做为文件属性的开关.
( 当然后来改变了标题的表现形式, 但没有必要再改变函数的名字了 )
/* Added by deardragon 1999.11.21 增加不可 RE 属性 */
int
underline_post(ent, fileinfo, direct)
int     ent;
struct fileheader *fileinfo;
char   *direct;
{
        if (!chk_currBM(currBM)) {
                return DONOTHING;
        }
        if (fileinfo->accessed[0] & FILE_NOREPLY)
        {
                fileinfo->accessed[0] &= ~FILE_NOREPLY;
        } else {
                fileinfo->accessed[0] |= FILE_NOREPLY;
        }
        substitute_record(direct, fileinfo, sizeof(*fileinfo), ent);
        return PARTUPDATE;
}
/* Added End. */
3. 将热键和相应函数的定义加入 bbs.c 中.
   找到如下类似的语句并修改:
struct one_key read_comms[] = {
        '_', underline_post, /* 这行是添加的 不可RE 功能函数 */
        'r', read_post,
        'K', skip_post,
        'u', skip_post,
4. 对不可 RE 文件的 RE 动作处理: 寻找 do_reply(fileinfo->title); .
   在 bbs.c 中有两处: 把他改成:
/* Added by deardragon 1999.11.21 增加不可 RE 属性 */
                 {
                        if ( !( fileinfo->accessed[ 0 ] & FILE_NOREPLY) )
                                do_reply(fileinfo->title);
                        else {
                                move(3, 0);
                                clrtobot();
                        prints("\n\n    对不起, 该文章有不可 RE 属性, \
                                你不能回复(RE) 这篇文章.    ");
                        pressreturn();
                        clear();
                        }
                }
/* Added End. */
    在 read.c 中有一处, 也把他修改为上述语句.
5. 最后就是把不可 RE 的文章标记起来. 使用户浏览时能看见其标志.
   在 bbs.c 文件中增加一个变量
        int noreply = 0; /* 把他设成全局也行,以后可能还可以用 */
   找到函数 readdoent(num, ent) , 在其中加入一句话:
        if ( ent->accessed[0] & FILE_NOREPLY ) noreply = 1;
        else noreply = 0;
   在该函数中, 进行板面文章的列表显示. 即如下面的显示:
==============
   99 m deardragon   Nov 16  ● [功能增加]使用 DENYPOST 权限
  100 m deardragon   Nov 18  ● 增加了两个权限
  101 m deardragon   Nov 18  ● 增加不可 RE 文属性
  102   Lancy        Nov 19  ● 我已经用了
  103   Lancy        Nov 19  ● 一按“R”就退出去了
  104   Lancy        Nov 19  ● 好
  105   deardragon   Nov 19  ● faint 在这里灌什么水
  106 m deardragon   Nov 21  ● 暂时不提供 INTERNET MAIL 服务
  107 m deardragon   Nov 22  ● 完善不可RE文属性及操作
> 108 m deardragon   Nov 23  ● [转载] 提供不可 RE 板面功能
===============
   现在就是要在语句中使上面的列表多一个信息项:
其中一个例子是:
        if (FFLL == 0) {
                if (!strncmp("Re:", ent->title, 3) || !strncmp("RE:", ent->t
itle
 3)) {
                        sprintf(buf, " %4d %c %-12.12s %s%6.6s^[[m %s%-.48s
", n
m, type,
                                ent->owner, color, date, noreply?"^[[0;1;4;3
3mx^
[m":" ",TITLE);
  黄色的部分是为增加标志而添加的代码.因为比较杂, 而且我的又改过的, 跟一般的
不太一样, 你们改的时候, 根据自己的代码添加上去就行. 在这一块里, 每个句子都要

改.
--


--
   木棉 BBS 站 InstallBBS  在大家的支持与帮助下,已经开板了!
   谢谢各位的大力支持!!! 欢迎各位朋友前去捧场切磋!!!//bow
   快意灌水站(210.38.248.1)一如既往的欢迎各位光临!!!!!!

※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: csdnt.gdpa.edu.]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.11]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店