回精華區
作者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 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻