作者itoc.bbs@processor.tfcis.org (核心動力) 看板: plan
標題塗鴨留言板
時間動力核心 (2004/08/07 Sat 01:50:35) Updated: 2004/08/07
留言板改成自由塗鴨式的
(因為不想改 pad_view(),也不想改 struct Pad,也懶得好好寫,所以很遜 :p)
: menu.c:pad_draw() 改成這樣
static int
pad_draw()
{
int i, fdr, cc;
FILE *fpw;
Pad pad;
char fpath[64], *str, *p1, *p2, *p3;
vmsg("塗鴨留言板,一行至多 75 字,最多 3 行");
sprintf(fpath, "tmp/pad_draw.%s", cuser.userid);
if (vedit(fpath, 0)) /* 取消編輯 */
{
unlink(fpath);
return 0;
}
memset(&pad, 0, sizeof(pad));
str = pad.msg;
time(&(pad.tpad));
if ((fdr = open(fpath, O_RDONLY)) >= 0)
{
read(fdr, str, sizeof(pad.msg) - 4); /* 保留給 "\n\n\n\0" */
close(fdr);
}
unlink(fpath);
strcat(str, "\n\n\n"); /* 這樣保證有三行 :p */
p1 = strchr(str, '\n');
p2 = strchr(p1 + 1, '\n');
p3 = strchr(p2 + 1, '\n');
*(p3 + 1) = '\0'; /* 只取前三行 */
/* 如果有某行超過 75 字,直接退件比較快 :p */
if (p1 - str >= 75 || p2 - p1 >= 75 || p3 - p2 >= 75)
{
vmsg("啊啊不是告訴您一行最多 75 字咩,退件退件");
return 0;
}
f_cat(FN_RUN_NOTE_ALL, str);
if (!(fpw = fopen(FN_RUN_NOTE_TMP, "w")))
return 0;
fwrite(&pad, sizeof(pad), 1, fpw);
if ((fdr = open(FN_RUN_NOTE_PAD, O_RDONLY)) >= 0)
{
Pad *pp;
i = 0;
cc = pad.tpad - NOTE_DUE * 60 * 60;
mgets(-1);
while (pp = mread(fdr, sizeof(Pad)))
{
fwrite(pp, sizeof(Pad), 1, fpw);
if ((++i > NOTE_MAX) || (pp->tpad < cc))
break;
}
close(fdr);
}
fclose(fpw);
rename(FN_RUN_NOTE_TMP, FN_RUN_NOTE_PAD);
pad_view();
return 0;
}
--
╭┼ Origin: Maple-itoc˙動力核心 processor.tfcis.org
┼┘ Author: itoc 從 itoc.dorm11.nctu.edu.tw 發表