summaryrefslogtreecommitdiffstats
path: root/mbbsd/stuff.c
diff options
context:
space:
mode:
authorjack <jack@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-05-03 05:58:08 +0800
committerjack <jack@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-05-03 05:58:08 +0800
commite443776eb7025c569df22f801965f0ec84798e35 (patch)
treea6200d5ccc57109dfece0b30180da83a9915785c /mbbsd/stuff.c
parent886fd091d3cc9e39e342e13e994fb63acb30c34b (diff)
downloadpttbbs-e443776eb7025c569df22f801965f0ec84798e35.tar
pttbbs-e443776eb7025c569df22f801965f0ec84798e35.tar.gz
pttbbs-e443776eb7025c569df22f801965f0ec84798e35.tar.bz2
pttbbs-e443776eb7025c569df22f801965f0ec84798e35.tar.lz
pttbbs-e443776eb7025c569df22f801965f0ec84798e35.tar.xz
pttbbs-e443776eb7025c569df22f801965f0ec84798e35.tar.zst
pttbbs-e443776eb7025c569df22f801965f0ec84798e35.zip
merge trunk to branches and corrected confliction
git-svn-id: http://opensvn.csie.org/pttbbs/branches/Jaky.i18n@1919 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/stuff.c')
-rw-r--r--mbbsd/stuff.c112
1 files changed, 71 insertions, 41 deletions
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;
}