Re: [Maple Bug 修正] - str_decode 造成 SIGSEGV

看板Maple (BBS架站)作者時間22年前 (2002/05/14 04:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《chunhan.bbs@bbs.cs.nthu.edu.tw (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
文章代碼(AID): #yu1za00 (Maple)
文章代碼(AID): #yu1za00 (Maple)