荔园在线

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

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


发信人: jjk (你看了帮助没?), 信区: InstallBBS
标  题: [转寄] 修复.DIR的小程序
发信站: 荔园晨风BBS站 (Sun Dec  9 19:21:56 2001), 转信

【 以下文字转载自 jjk 的信箱 】
【 原文由 jjk.bbs@bbs.nju.edu.cn 所发表 】
发信人: zhch (zhch), 信区: BBSDev
标  题: [转寄] 修复.DIR的小程序
发信站: 南京大学小百合站 (Sat May 26 18:43:23 2001), 站内信件

这个小程序可以修复目录下的.DIR文件,很简单,只有一屏。
(记得以前贴过, 但版面上似乎没了, 再贴一次)

用法:
先cc编译成可执行文件(如a.out),
然后到需要回复的版面目录下面:

/bin/ls | a.out > .DIR

这样就可以回复版面的.DIR文件了.

注意它是根据文件头信息恢复目录的, 如果你的文件头部和一般bbs不一样,需
改动两个sscanf的偏移量。


代码:
#include "/home/bbs/bbssrc/include/bbs.h"

int main() {
        FILE *fp;
        struct fileheader x;
        unsigned char buf[80], buf2[80];
        int i;
        while(1) {
                if(fscanf(stdin, "%60s", buf)<=0) break;
                if(strncmp(buf, "M.", 2)) continue;
                bzero(&x, sizeof(x));
                strncpy(x.filename, buf, 60);
                fp=fopen(buf, "r");
                if(fp==0) continue;
                fgets(buf2, 180, fp);
                if(strlen(buf2)>8) sscanf(buf2+8, "%60s", x.owner);
                fgets(buf2, 180, fp);
                for(i=0; i<strlen(buf2); i++)
                        if(buf2[i]<32) buf2[i]=0;
                if(strlen(buf2)>8) strncpy(x.title, buf2+8, 60);
                if(strlen(x.owner)>1) fwrite(&x, sizeof(x), 1, stdout);
                fclose(fp);
        }
}

--

zhch.bbs@bbs.nju.edu.cn

※ 来源:.南京大学小百合站 bbs.nju.edu.cn.[FROM: bbs.nju.edu.cn]
--
※ 转寄:.南京大学小百合站 bbs.nju.edu.cn.[FROM: 深圳大学BBS]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]


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

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