回精華區
作者itoc, 信區: itoc
標題[功能] mail.c 顯示信箱使用空間
時間04/09/10
作者: itoc (奇怪的暱稱) 看板: plan
標題: [功能] 顯示信箱使用空間
時間: 2004/09/10 Fri 10:32:16                           Updated: 2005/04/20

※ 引述《allean.bbs@micro.bio.ncue.edu.tw (allean)》之銘言:
>      可否在上面的標題,新增使用者信箱使用量的資訊呢 ?

: theme.h 刪除 [s]、[x]、[X] 並增加 %s

- #define NECKER_MBOX "[←]離開 ... [s]寄信 [x]轉錄 [X]轉達 [h]說明\n" \
+ #define NECKER_MBOX "[←]離開 ... [h]說明 (%d 篇、%d KB)\n" \

: mail.c:mbox_head()

+ static int MboxKB;       /* 使用容量 */

static int
mbox_head(xo)
  XO *xo;
{
  if (HAS_STATUS(STATUS_BIFF))  /* 一進入信箱就拿掉 STATUS_BIFF */
    cutmp->status ^= STATUS_BIFF;

  vs_head("郵件選單", str_site);
- prints(NECKER_MBOX, d_cols, "");
+ prints(NECKER_MBOX, xo->max, MboxKB, d_cols, "");
  return mbox_body(xo);
}

: mail.c:mbox_init()

static int
mbox_init(xo)
  XO *xo;
{
  xo_load(xo, sizeof(HDR));
+ MboxKB = mbox_totalsize(xo->dir) >> 10;       /* 換成 KB */
  return mbox_head(xo);
}

: mail.c:mbox_totalsize() 新增於 mbox_init() 之前

static int
mbox_totalsize(folder)
  char *folder;
{
  int total_k;
  char *ptr, *str, fpath[64];
  struct stat st;
  struct dirent *de;
  DIR *dirp;

  strcpy(fpath, folder);
  ptr = (char *) strchr(fpath, '.');
  *ptr = '@';
  *(ptr + 1) = '\0';

  total_k = 0;
  if (dirp = opendir(fpath))
  {
    *(ptr + 1) = '/';
    while (de = readdir(dirp))
    {
      str = de->d_name;

      if (*str <= ' ' || *str == '.')
        continue;

      strcpy(ptr + 2, str);

      if (!stat(fpath, &st))
        total_k += st.st_size;
    }
    closedir(dirp);
  }

  return total_k;
}


------------------------------------

  如果有做 [功能] mail.c 限制個人信箱容量
  那麼接著還可以這樣改,把上限顯示出來

: theme.h 刪除指令說明

- #define NECKER_MBOX "[←]離開 ... [h]說明 (%d 篇、%d KB)\n" \
+ #define NECKER_MBOX "[h]說明 (%d/%d 篇、%d/%d KB)\n" \

: mail.c:mbox_head()

- prints(NECKER_MBOX, xo->max, MboxKB, d_cols, "");
+ prints(NECKER_MBOX,
+   xo->max,
+   HAS_PERM(PERM_ALLADMIN | PERM_MBOX) ? MAX_BBSMAIL :
+   HAS_PERM(PERM_VALID) ? MAX_VALIDMAIL : MAX_NOVALIDMAIL,
+   MboxKB,
+   HAS_PERM(PERM_ALLADMIN | PERM_MBOX) ? MAX_BBSMAILSIZE >> 10:
+   HAS_PERM(PERM_VALID) ? MAX_VALIDMAILSIZE >> 10 :
+   MAX_NOVALIDMAILSIZE >> 10,
+   d_cols, "");

--
□ 本文章由 itocpc512-2.EE.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻