Re: [Maple Bug 修正] - str_decode 造成 SIGSEGV
※ 引述《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
討論串 (同標題文章)
Maple 近期熱門文章
PTT數位生活區 即時熱門文章