发信人: wangchun (luckydog<->mutecat), 信区: DianLinux
标 题: FB2002置底功能实现手记(5)
发信站: 喻信星空 (2006年04月18日20:29:48 星期二), 站内信件
bbs.c里面添加函数topfile_post,此函数是按’#'键执行的动作,直接拷贝
digest_post函数并做少量修改,修改后的函数如下.
int
topfile_post(ent, fhdr, direct)
int ent;
struct fileheader *fhdr;
char *direct;
{
struct fileheader chkfileinfo; // add by quickmouse 01-05-30 检查一下 避
免出现.DIR破坏
if (!chk_currBM(currBM)) {
return DONOTHING;
} /*检查是否是斑斑,如果不是,什么也不做,因为你没权限 */
if (digestmode == YEA)
return DONOTHING;
if(get_records(direct, &chkfileinfo, sizeof(chkfileinfo), ent, 1) !=
1)// add by quickmouse 01-05-30
{
return DONOTHING;
}
if( strcmp(fhdr->filename, chkfileinfo.filename) )// add by quickmous
e 01-05-30
{
return DONOTHING;
}
if (fhdr->accessed[1] & FILE_TOP) {
fhdr->accessed[1] = (fhdr->accessed[1] & ~FILE_TOP);
dele_digest_top(fhdr->filename,direct);
} else {
struct fileheader topfile;
char *ptr,buf[64];
memcpy(&topfile, fhdr, sizeof(topfile));
topfile.filename[0] = ‘T’;
strcpy(buf, direct);
ptr = strrchr(buf, ‘/’) + 1;
ptr[0] = ‘\0′;
sprintf(genbuf, "%s%s", buf, topfile.filename);
/* 下面这一段检测加上去之后有问题,所以我先去掉 */
/* if (dashf(genbuf)) {
fhdr->accessed[0] = fhdr->accessed[0] | FILE_TOP;
substitute_record(direct, fhdr, sizeof(*fhdr), ent);
return PARTUPDATE;
}
*/
sprintf(&genbuf[512], "%s%s", buf, fhdr->filename);
link(&genbuf[512], genbuf);
strcpy(ptr, TOPFILE_DIR);
if (get_num_records(buf, sizeof(topfile)) >= MAX_TOP) {
move(3, 0);
clrtobot();
move(4, 10);
prints("\t抱歉,你的置顶文章已经超过 %d 篇,无法再加入…\n",
MAX_TOP);
pressanykey();
return PARTUPDATE;
}
append_record(buf, &topfile, sizeof(topfile));
fhdr->accessed[1] = fhdr->accessed[1] | FILE_TOP;
fhdr->accessed[1] &= ~FILE_DELETED;
}
substitute_record(direct, fhdr, sizeof(*fhdr), ent);
return PARTUPDATE;
}
–
mutecat 加油!!
喜欢是浅浅的爱,爱是深深的喜欢
健康乐观、积极向上的生活!
欢迎访问我的blog http://blog.donews.com/mutecat
~
※ 来源:·喻信星空 bbs.eistar.net·[FROM: 222.20.73.221]