From e443776eb7025c569df22f801965f0ec84798e35 Mon Sep 17 00:00:00 2001 From: jack Date: Sun, 2 May 2004 21:58:08 +0000 Subject: merge trunk to branches and corrected confliction git-svn-id: http://opensvn.csie.org/pttbbs/branches/Jaky.i18n@1919 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/stuff.c | 112 +++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 71 insertions(+), 41 deletions(-) (limited to 'mbbsd/stuff.c') diff --git a/mbbsd/stuff.c b/mbbsd/stuff.c index eb0d32e6..7d9b4652 100644 --- a/mbbsd/stuff.c +++ b/mbbsd/stuff.c @@ -401,60 +401,70 @@ capture_screen() } } -void -pressanykey() +int +vmsg_lines(const int lines, const char msg[]) { int ch; - outmsg(SHM->i18nstr[cuser.language][1883]); - do { - ch = igetkey(); + move(lines, 0); + clrtoeol(); - if (ch == Ctrl('T')) { + if (msg) + outs((char *)msg); + else + outs("\033[45;1m \033[37m" + "\033[200m\033[1431m\033[506m□ 請按 \033[33m(Space/Return)\033[37m 繼續 □\033[201m (^T) 收到暫存檔 \033[m"); + + do { + if( (ch = igetch()) == Ctrl('T') ) capture_screen(); - break; - } - } while ((ch != ' ') && (ch != KEY_LEFT) && (ch != '\r') && (ch != '\n')); - move(b_lines, 0); + } while( ch == 0 ); + + move(lines, 0); clrtoeol(); - refresh(); + return ch; } -int -vmsg(const char *fmt,...) +char getans(const char *fmt,...) { - va_list ap; - char msg[80] = {0}; - int ch; - + char msg[256]; + char ans[5]; + va_list ap; va_start(ap, fmt); - vsnprintf(msg, sizeof(msg), fmt, ap); + vsnprintf(msg , 128, fmt, ap); va_end(ap); - move(b_lines, 0); - clrtoeol(); - - if (*msg) - prints(SHM->i18nstr[cuser.language][1884], msg); - else - outs(SHM->i18nstr[cuser.language][1885]); - - do { - ch = igetkey(); - - if (ch == Ctrl('T')) { - capture_screen(); - break; - } - } while ((ch != ' ') && (ch != KEY_LEFT) && (ch != '\r') && (ch != '\n')); + getdata(b_lines, 0, msg, ans, sizeof(ans), LCECHO); + return ans[0]; +} +int +getkey(const char *fmt,...) +{ + char msg[256], i; + va_list ap; + va_start(ap, fmt); + i = vsnprintf(msg , 128, fmt, ap); + va_end(ap); + return vmsg_lines(b_lines, msg); +} - move(b_lines, 0); - clrtoeol(); - refresh(); - return ch; +int +vmsg(const char *fmt,...) +{ + char msg[256] = "\033[1;36;44m ◆ ", i; + va_list ap; + va_start(ap, fmt); + i = vsnprintf(msg + 14, 128, fmt, ap); + va_end(ap); + for(i = i + 14; i < 71; i++) + msg[(int)i] = ' '; + strcat(msg + 71, + "\033[33;46m \033[200m\033[1431m\033[506m[按任意鍵繼續]\033[201m \033[m"); + return vmsg_lines(b_lines, msg); } + void bell() { @@ -544,7 +554,7 @@ cursor_key(int row, int column) int ch; cursor_show(row, column); - ch = egetch(); + ch = igetch(); move(row, column); outs(STR_UNCUR); return ch; @@ -573,13 +583,33 @@ printdash(char *mesg) outch('\n'); } -int log_file(char *fn, char *buf, int ifcreate) +int +log_user(const char *fmt, ...) +{ + char msg[256], filename[256]; + va_list ap; + + va_start(ap, fmt); + vsnprintf(msg , 128, fmt, ap); + va_end(ap); + + sethomefile(filename, cuser.userid, "USERLOG"); + return log_file(filename, 1, "%s: %s %s", cuser.userid, msg, Cdate(&now)); +} + +int log_file(char *fn, int ifcreate, const char *fmt,...) { int fd; + char msg[256]; + va_list ap; + va_start(ap, fmt); + vsnprintf(msg , 128, fmt, ap); + va_end(ap); + if( (fd = open(fn, O_APPEND | O_WRONLY | (ifcreate ? O_CREAT : 0), (ifcreate ? 0664 : 0))) < 0 ) return -1; - if( write(fd, buf, strlen(buf)) < 0 ){ + if( write(fd, msg, strlen(msg)) < 0 ){ close(fd); return -1; } -- cgit v1.2.3