看板Maple
标 题Re: [Maple Bug 修正] - str_decode 造成 SIGSEGV
发信站阳光椰林BBS站 (Sun Apr 28 09:59:06 2002)
转信站Ptt!news.cs.nthu!alwaybbs
※ 引述《[email protected] (Hook Club)》之铭言:
<deleted>
> 所造成的垃圾档案是否一定是 0 Byte?
> 绝大多数是. (在我的 Maple 系统上的确如此, 只有 0 byte 的档案)
> 可是我意外的发现竟然也会有 4096, 8192, 16384 Bytes 等的档案出现.
>-----------------------------------------------------------------------
我已经忘了我的maple版本了,不过应该也是3.x的。
我提一个会产生0 byte file的档,可是会.DIR里头的例子供大家参考。
这例子是线上使用者收到热讯後自己把热讯一行一行删除,
然後离站时,系统会问使用者是否保存热讯纪录,
使用者选择保存後,bmw档资料已被清空,这时就存了一个空档,
使用者的mail里头也看得到这热讯纪录存档,可是没办法开启。
我的检决办法比较偷懒,就是热讯纪录存档一定先存一行今天日期^^
以下是source code....
~/src/maple/talk.c:
void
bmw_save()
{
char fpath[64];
usr_fpath(fpath, cuser.userid, FN_BMW);
/* lkchu.981201: 放进私人信箱内/清除/保留 */
if (dashf(fpath))
{
switch (vans("本次上站热讯处理 (M)备忘录 (K)保留 (C)清除?[M] "))
{
........(略)
case 'm':
default:
{
int fd;
FILE *fout;
char buf[80], folder[80];
HDR fhdr;
fd = open(fpath, O_RDONLY);
usr_fpath(folder, cuser.userid, fn_dir);
if (fout = fdopen(hdr_stamp(folder, 0, &fhdr, buf), "w"))
{
BMW bmw;
/* Corden.20020421: 先写东西进去以免热讯被删除後造成空档 */
fprintf(fout, "[%s] 热讯纪录\n", fhdr.date);
while (read(fd, &bmw, sizeof(BMW)) == sizeof(BMW))
{
struct tm *ptime = localtime(&bmw.btime);
........(略)
--
※ Origin: 阳‧光‧椰‧林 <alway.twbbs.org>
◆ From: localhost