summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwens <wens@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2010-11-14 11:20:26 +0800
committerwens <wens@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2010-11-14 11:20:26 +0800
commit02044c7342b1ed08ae52769958153a794d5c9214 (patch)
tree4ac5fd4f0e80b7d18a2b42dbac95006f5d03b346
parent7f24f168c197b3a9827684a1f515048852efe7a7 (diff)
downloadpttbbs-02044c7342b1ed08ae52769958153a794d5c9214.tar
pttbbs-02044c7342b1ed08ae52769958153a794d5c9214.tar.gz
pttbbs-02044c7342b1ed08ae52769958153a794d5c9214.tar.bz2
pttbbs-02044c7342b1ed08ae52769958153a794d5c9214.tar.lz
pttbbs-02044c7342b1ed08ae52769958153a794d5c9214.tar.xz
pttbbs-02044c7342b1ed08ae52769958153a794d5c9214.tar.zst
pttbbs-02044c7342b1ed08ae52769958153a794d5c9214.zip
Add DBCS and conversion functions.
Define INFTIM. git-svn-id: http://opensvn.csie.org/pttbbs/trunk@5259 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/mbbsd/nios.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/pttbbs/mbbsd/nios.c b/pttbbs/mbbsd/nios.c
index 93afe6c7..152ad04b 100644
--- a/pttbbs/mbbsd/nios.c
+++ b/pttbbs/mbbsd/nios.c
@@ -52,6 +52,11 @@
#define VKEY_PROTO
#endif
+// Linux does not define INFTIM
+#ifndef INFTIM
+#define INFTIM (-1)
+#endif
+
// XXX use this temporary...
int process_pager_keys(int ch);
@@ -284,10 +289,21 @@ cin_fetch_fd(int fd)
assert(fd == cin_fd);
#if 1
// XXX we don't know how to deal with telnetctx/convert yet...
- char buf[sizeof(cin_buf)];
+ // let's just keep using the old functions for now
+ char _buf[sizeof(cin_buf) + 2], *buf = _buf;
ssize_t sz;
do {
- sz = tty_read((unsigned char*)buf, vbuf_space(cin));
+ if ((sz = tty_read((unsigned char*)buf, vbuf_space(cin))) < 0)
+ continue;
+
+#ifdef DBCSAWARE
+ if (ISDBCSAWARE() && HasUserFlag(UF_DBCS_DROP_REPEAT))
+ sz = vtkbd_ignore_dbcs_evil_repeats(buf, sz);
+#endif
+#ifdef CONVERT
+ sz = input_wrapper(buf, sz);
+#endif
+
// for tty_read: sz<0 = EAGAIN
if (sz > 0)
{