作者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, "");
--
□ 本文章由 itoc 從 pc512-2.EE.NCTU.edu.tw 發表