fixdir.c的bug?

qiqi
蓬莱仙子 2007-07-13 字数 313

smth1.2的系统,今天有一个版的.DIR文件损坏了,用local_util下的fixdir修复。

先用test版(2000多篇文章)测试了一下,没问题。

再用到需要修复的版上,该版有两万多帖,可是运行fixdir十几秒后停住。

Debug发现,每次fixdir只能读完第20031篇文章,之后应该就停在readdir上。

是否是因为文章数太多超过了readdir的限制?

是否要用readdir64?

BBSMan_Dev BBS安装管理
13 个回复
ak47mig
Saint-圣徒 2007-07-13

尝试一下最新版的fixdir?应该有改进吧

【 在 qiqi (蓬莱仙子) 的大作中提到: 】

: smth1.2的系统,今天有一个版的.DIR文件损坏了,用local_util下的fixdir修复。

: 先用test版(2000多篇文章)测试了一下,没问题。

: 再用到需要修复的版上,该版有两万多帖,可是运行fixdir十几秒后停住。

: ...................

qiqi
蓬莱仙子 2007-07-13

看了一下,新版的fixdir加了个编译开关做条件判断,其它的都没有变化。

#ifdef SMTH

if( prefix == NULL && strlen(direntp->d_name)==1 && strchr( alphabet, direntp->d_name[0] ) ){

char buf[200];

sprintf(buf, "%s/%c", path, direntp->d_name[0] );

getallpost(buf, direntp->d_name[0]);

continue;

}

#endif

【 在 ak47mig (Saint-圣徒) 的大作中提到: 】

: 尝试一下最新版的fixdir?应该有改进吧

qiqi
蓬莱仙子 2007-07-13

另:发现fixdir & gen_title之后,之前所有的m和g的标记都不见了

该如何重新生成?

【 在 qiqi (蓬莱仙子) 的大作中提到: 】

: 看了一下,新版的fixdir加了个编译开关做条件判断,其它的都没有变化。

: #ifdef SMTH

:                 if( prefix == NULL && strlen(direntp->d_name)==1 && strchr( alphabet, direntp->d_name[0] ) ){

: ...................

SXYou.
SXYou. 2007-07-13

转信站: NEWSMTH!news.newsmth.net!news.szu.edu.cn!news.shec6.edu.cn!NewYTHT

-_-!

【 在 qiqi@newsmth.net-SPAM.no (蓬莱仙子) 的大作中提到: 】

: 另:发现fixdir & gen_title之后,之前所有的m和g的标记都不见了

: 该如何重新生成?

: 【 在 qiqi (蓬莱仙子) 的大作中提到: 】

: : 看了一下,新版的fixdir加了个编译开关做条件判断,其它的都没有变化。

: : #ifdef SMTH

: :                 if( prefix == NULL && strlen(direntp->d_name)==1 && strchr( alphabet, direntp->d_name[0] ) ){

: ...................

qiqi
蓬莱仙子 2007-07-13

比较郁闷,有没有人也发现类似问题?

【 在 SXYou.bbs@newytht.net (山西游) 的大作中提到: 】

: -_-!

ak47mig
Saint-圣徒 2007-07-13

嗯,貌似是这样的,应该是m标记没了。。。

【 在 qiqi (蓬莱仙子) 的大作中提到: 】

: 另:发现fixdir & gen_title之后,之前所有的m和g的标记都不见了

: 该如何重新生成?

qiqi
蓬莱仙子 2007-07-14

实乃人间惨剧,竟无语凝噎。。。

两万多的帖子需要重新标记,版主要去撞墙了。。。

【 在 ak47mig (Saint-圣徒) 的大作中提到: 】

: 嗯,貌似是这样的,应该是m标记没了。。。

qiqi
蓬莱仙子 2007-07-14

哦,还有一个版是近5万贴。。。

【 在 qiqi (蓬莱仙子) 的大作中提到: 】

: 实乃人间惨剧,竟无语凝噎。。。

: 两万多的帖子需要重新标记,版主要去撞墙了。。。

qiqi
蓬莱仙子 2007-07-14

不知道是否的确有20031篇帖子的限制,时间紧迫,就先没改代码,暂时笨办法解决的:

把原版的目录分成多个,每个目录内的帖子数少于两万,

然后分别生成.DIR,再把.DIR和目录合并。

【 在 qiqi (蓬莱仙子) 的大作中提到: 】

: smth1.2的系统,今天有一个版的.DIR文件损坏了,用local_util下的fixdir修复。

: 先用test版(2000多篇文章)测试了一下,没问题。

: 再用到需要修复的版上,该版有两万多帖,可是运行fixdir十几秒后停住。

: ...................

fancyrabbit
fancy★摩托党★醚恋 2007-07-14
fancyrabbit
fancy★摩托党★醚恋 2007-07-14
qiqi
蓬莱仙子 2007-07-14
fancyrabbit
fancy★摩托党★醚恋 2007-07-14

就写在开头,琢磨一下把这个限制搞一下就好了 :)

【 在 qiqi (蓬莱仙子) 的大作中提到: 】

: 啊,我竟然没发现这句,应该就是这个原因了吧

qiqi
蓬莱仙子 2007-07-14
ak47mig
Saint-圣徒 2007-07-14

。。。。。

所以要经常做精华区

【 在 qiqi (蓬莱仙子) 的大作中提到: 】

: 实乃人间惨剧,竟无语凝噎。。。

: 两万多的帖子需要重新标记,版主要去撞墙了。。。

sxdxsimple
雾里龙虾 2007-07-14

该死啊,m,g标记

【 在 qiqi (蓬莱仙子) 的大作中提到: 】

: 说一下具体操作吧,方便后来人:

: 1. 先备份原.DIR文件,然后删除.DIR(ms必须删除才能重绘)

: 2. 进入~BBSHOME/bin或者源码目录local_util,

: ...................

trijif
trijif 2007-07-15

可以的话,经常备份就好吧

【 在 ak47mig (Saint-圣徒) 的大作中提到: 】

: 。。。。。

: 所以要经常做精华区