summaryrefslogtreecommitdiffstats
path: root/mbbsd
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd')
-rw-r--r--mbbsd/mail.c3
-rw-r--r--mbbsd/read.c37
2 files changed, 28 insertions, 12 deletions
diff --git a/mbbsd/mail.c b/mbbsd/mail.c
index 5e9be2fe..e0195689 100644
--- a/mbbsd/mail.c
+++ b/mbbsd/mail.c
@@ -316,12 +316,13 @@ do_send(const char *userid, const char *title)
sethomepath(genbuf, userid);
stampfile(genbuf, &mhdr);
strlcpy(mhdr.owner, cuser.userid, sizeof(mhdr.owner));
- strncpy(mhdr.title, save_title, TTLEN);
if (vedit(genbuf, YEA, NULL) == -1) {
unlink(genbuf);
clear();
return -2;
}
+ /* why not make title here? */
+ strncpy(mhdr.title, save_title, TTLEN);
clear();
sethomefile(fpath, userid, FN_OVERRIDES);
i = belong(fpath, cuser.userid);
diff --git a/mbbsd/read.c b/mbbsd/read.c
index 6f10aa25..ca62d426 100644
--- a/mbbsd/read.c
+++ b/mbbsd/read.c
@@ -394,7 +394,7 @@ select_read(const keeploc_t * locmem, int sr_mode)
char keyword[TTLEN + 1] = "";
char genbuf[MAXPATHLEN], *p = strstr(currdirect, "SR.");
static int _mode = 0;
- int len, fd, fr, i, count=0, reference = 0;
+ int len, fd, fr, i, count=0, reference = 0, n_recommend = 0;
fileheader_t *fh = &headers[locmem->crs_ln - locmem->top_ln];
STATINC(STAT_SELECTREAD);
@@ -416,14 +416,22 @@ select_read(const keeploc_t * locmem, int sr_mode)
"%s:%s\n", currboard, keyword);
#endif
}
- else if(sr_mode & RS_NOKEYWORD)
+ else if(sr_mode & RS_KEYWORD_EXCLUDE)
{
if(!(currmode & MODE_SELECT) ||
!getdata(b_lines, 0, "增加條件 排除標題:",
keyword, TTLEN, DOECHO))
return READ_REDRAW;
}
- else
+ else if (sr_mode & RS_RECOMMEND)
+ {
+ if(currstat != RMAIL && (
+ !getdata(b_lines, 0,
+ (currmode & MODE_SELECT) ? "增加條件 推文數:":"最低推數:",
+ keyword, 7, LCECHO) || (n_recommend = atoi(keyword)) <= 0 ))
+ return READ_REDRAW;
+ }
+ else
{
if(p && _mode & sr_mode & (RS_TITLE | RS_NEWPOST | RS_MARK))
return DONOTHING;
@@ -458,24 +466,27 @@ select_read(const keeploc_t * locmem, int sr_mode)
len /= sizeof(fileheader_t);
for( i = 0 ; i < len ; ++i ){
reference++;
- if( sr_mode & RS_MARK &&
+ if( (sr_mode & RS_MARK) &&
!(fhs[i].filemode & FILE_MARKED) )
continue;
- else if(sr_mode & RS_NEWPOST &&
+ else if((sr_mode & RS_NEWPOST) &&
!strncmp(fhs[i].title, "Re:", 3))
continue;
- else if(sr_mode & RS_AUTHOR &&
+ else if((sr_mode & RS_AUTHOR) &&
!strcasestr(fhs[i].owner, keyword))
continue;
- else if(sr_mode & RS_KEYWORD &&
+ else if((sr_mode & RS_KEYWORD) &&
!strcasestr(fhs[i].title, keyword))
continue;
- else if(sr_mode & RS_NOKEYWORD &&
+ else if(sr_mode & RS_KEYWORD_EXCLUDE &&
strcasestr(fhs[i].title, keyword))
continue;
- else if(sr_mode & RS_TITLE &&
+ else if((sr_mode & RS_TITLE) &&
strcmp(subject(fhs[i].title), keyword))
continue;
+ else if ((sr_mode & RS_RECOMMEND) &&
+ fhs[i].recommend < n_recommend )
+ continue;
++count;
if(p == NULL)
{
@@ -555,7 +566,11 @@ i_read_key(const onekey_t * rcmdlist, keeploc_t * locmem,
case Ctrl('H'):
mode = select_read(locmem, RS_NEWPOST);
break;
-
+
+ case 'Z':
+ mode = select_read(locmem, RS_RECOMMEND);
+ break;
+
case 'a':
case 'A':
mode = select_read(locmem, RS_AUTHOR);
@@ -575,7 +590,7 @@ i_read_key(const onekey_t * rcmdlist, keeploc_t * locmem,
break;
case '!':
- mode = select_read(locmem, RS_NOKEYWORD);
+ mode = select_read(locmem, RS_KEYWORD_EXCLUDE);
break;
case '=':