diff options
author | wens <wens@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2010-11-14 11:20:26 +0800 |
---|---|---|
committer | wens <wens@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2010-11-14 11:20:26 +0800 |
commit | 02044c7342b1ed08ae52769958153a794d5c9214 (patch) | |
tree | 4ac5fd4f0e80b7d18a2b42dbac95006f5d03b346 | |
parent | 7f24f168c197b3a9827684a1f515048852efe7a7 (diff) | |
download | pttbbs-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.c | 20 |
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) { |