diff options
-rw-r--r-- | pttbbs/mbbsd/mail.c | 134 | ||||
-rw-r--r-- | pttbbs/mbbsd/menu.c | 3 |
2 files changed, 1 insertions, 136 deletions
diff --git a/pttbbs/mbbsd/mail.c b/pttbbs/mbbsd/mail.c index 6b4e566a..d02591be 100644 --- a/pttbbs/mbbsd/mail.c +++ b/pttbbs/mbbsd/mail.c @@ -1441,140 +1441,6 @@ doforward(const char *direct, const fileheader_t * fh, int mode) return (return_no); } -static int -read_new_mail(void * voidfptr, void *optarg) -{ - fileheader_t *fptr=(fileheader_t*)voidfptr; - struct ReadNewMailArg *arg=(struct ReadNewMailArg*)optarg; - char done = NA, delete_it; - char fname[PATHLEN]; - char genbuf[4]; - - arg->idc++; - - if (fptr->filemode & FILE_READ) - return 0; - - // XXX fptr->filename may be invalid. - if (*fptr->filename) { - clear(); - move(10, 0); - prints("您要讀來自[%s]的訊息(%s)嗎?", fptr->owner, fptr->title); - getdata(11, 0, "請您確定(Y/N/Q)?[Y] ", genbuf, 3, LCECHO); - if (genbuf[0] == 'q') - return QUIT; - if (genbuf[0] == 'n') - return 0; - } - - // no matter what, mark as read. - fptr->filemode |= FILE_READ; - // Race condition here... - if (substitute_fileheader(currmaildir, fptr, fptr, arg->idc)) - return -1; - - if (!*fptr->filename) - return -1; - - setuserfile(fname, fptr->filename); - arg->mrd = 1; - delete_it = NA; - while (!done) { - int more_result = more(fname, YEA); - - switch (more_result) { - case RET_DOREPLY: - mail_reply(arg->idc, fptr, currmaildir); - return FULLUPDATE; - case RET_DOREPLYALL: - multi_reply(arg->idc, fptr, currmaildir); - return FULLUPDATE; - case RET_DORECOMMEND: // we don't accept this. - return FULLUPDATE; - case -1: - return READ_SKIP; - case 0: - break; - default: - return more_result; - } - - vs_footer(" 信件處理 ", - " (R)回信 (x)站內轉寄 (y)回群組信 (d/D)刪信"); - - switch (vkey()) { - case 'r': - case 'R': - mail_reply(arg->idc, fptr, currmaildir); - break; - case 'y': - multi_reply(arg->idc, fptr, currmaildir); - break; - case 'x': - m_forward(arg->idc, fptr, currmaildir); - break; - case 'd': - case 'D': - delete_it = YEA; - default: - done = YEA; - } - } - if (delete_it) { - if(arg->delcnt==1000) { - vmsg("一次最多刪 1000 封信"); - return 0; - } - clear(); - prints("刪除信件《%s》", fptr->title); - getdata(1, 0, msg_sure_ny, genbuf, 2, LCECHO); - if (genbuf[0] == 'y') { - if(arg->delmsgs==NULL) { - arg->delmsgs=(int*)malloc(sizeof(int)*1000); - if(arg->delmsgs==NULL) { - vmsg("失敗, 請洽站長"); - return 0; - } - } - unlink(fname); - arg->delmsgs[arg->delcnt++] = arg->idc; - - loadmailusage(); - } - } - clear(); - return 0; -} - -int -m_new(void) -{ - struct ReadNewMailArg arg; - - if (!HasUserPerm(PERM_READMAIL)) - return DONOTHING; - - clear(); - setutmpmode(RMAIL); - memset(&arg, 0, sizeof(arg)); - clear(); - curredit |= EDIT_MAIL; - if (apply_record(currmaildir, read_new_mail, sizeof(fileheader_t), &arg) == -1) { - if(arg.delmsgs) - free(arg.delmsgs); - vmsg("沒有新信件了"); - return -1; - } - curredit = 0; - setmailalert(); - while (arg.delcnt--) - delete_record(currmaildir, sizeof(fileheader_t), arg.delmsgs[arg.delcnt]); - if(arg.delmsgs) - free(arg.delmsgs); - vmsg(arg.mrd ? "信已閱\畢" : "沒有新信件了"); - return -1; -} - static void mailtitle(void) { diff --git a/pttbbs/mbbsd/menu.c b/pttbbs/mbbsd/menu.c index 11810efa..7a35b398 100644 --- a/pttbbs/mbbsd/menu.c +++ b/pttbbs/mbbsd/menu.c @@ -654,8 +654,7 @@ static const commands_t adminlist[] = { /* mail menu */ static const commands_t maillist[] = { - {m_new, PERM_READMAIL, "RNew 閱\讀新進郵件"}, - {m_read, PERM_READMAIL, "RRead 多功\能讀信選單"}, + {m_read, PERM_READMAIL, "RRead 我的信箱"}, {m_send, PERM_LOGINOK, "RSend 站內寄信"}, {mail_list, PERM_LOGINOK, "RMail List 群組寄信"}, {setforward, PERM_LOGINOK, "FForward 設定信箱自動轉寄" }, |