diff options
Diffstat (limited to 'mbbsd')
-rw-r--r-- | mbbsd/mail.c | 2 | ||||
-rw-r--r-- | mbbsd/name.c | 18 |
2 files changed, 18 insertions, 2 deletions
diff --git a/mbbsd/mail.c b/mbbsd/mail.c index 7acc84fe..e15cfd5c 100644 --- a/mbbsd/mail.c +++ b/mbbsd/mail.c @@ -627,6 +627,8 @@ multi_send(char *title) static int multi_reply(int ent, fileheader_t * fhdr, const char *direct) { + /* this is not going to work because FILE_MULTI + * exceeds filemode data width. */ if (!(fhdr->filemode & FILE_MULTI)) return mail_reply(ent, fhdr, direct); diff --git a/mbbsd/name.c b/mbbsd/name.c index 5f6b9c5c..c764fb89 100644 --- a/mbbsd/name.c +++ b/mbbsd/name.c @@ -386,6 +386,7 @@ usercomplete(const char *prompt, char *data) int cwnum, x, y, origx, origy; int clearbot = NA, count = 0, morenum = 0; char ch; + int dashdirty = 0; /* TODO 節省記憶體. (不過這個 function 不常占記憶體...) */ cwbuf = malloc(MAX_USERS * (IDLEN + 1)); @@ -435,7 +436,12 @@ usercomplete(const char *prompt, char *data) move(y, x); continue; - } else if (ch != ' ' && count < STRLEN && isprint((int)ch)) { + } else if (!(count <= IDLEN && isprint((int)ch))) { + + /* invalid input */ + continue; + + } else if (ch != ' ') { int n; @@ -463,6 +469,12 @@ usercomplete(const char *prompt, char *data) int col, len; if (ch == ' ' && cwnum == 1) { + if(dashdirty) + { + move(2,0); + clrtoeol(); + printdash(cwlist, 0); + } strcpy(data, cwlist); move(y, x); outs(data + count); @@ -479,16 +491,18 @@ usercomplete(const char *prompt, char *data) move(2, 0); clrtobot(); printdash("使用者代號一覽表", 0); + dashdirty = 0; if(ch != ' ') { /* no such user */ move(2,0); - outs("無此使用者: "); + outs("* 目前無此使用者:"); outs(data); outs(" "); temp--; *temp = '\0'; + dashdirty = 1; } while (len + col < t_columns-1) { |