diff options
author | scw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-04-01 11:51:01 +0800 |
---|---|---|
committer | scw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-04-01 11:51:01 +0800 |
commit | 12b4a208d439d19f17c46a31f04b23f3c088898e (patch) | |
tree | aa2b5037ebc0c9d311d423b9f40802e4bfaad733 | |
parent | 0f22ab6d1a36658633ab56eb1bf5b49575e57eb5 (diff) | |
download | pttbbs-12b4a208d439d19f17c46a31f04b23f3c088898e.tar pttbbs-12b4a208d439d19f17c46a31f04b23f3c088898e.tar.gz pttbbs-12b4a208d439d19f17c46a31f04b23f3c088898e.tar.bz2 pttbbs-12b4a208d439d19f17c46a31f04b23f3c088898e.tar.lz pttbbs-12b4a208d439d19f17c46a31f04b23f3c088898e.tar.xz pttbbs-12b4a208d439d19f17c46a31f04b23f3c088898e.tar.zst pttbbs-12b4a208d439d19f17c46a31f04b23f3c088898e.zip |
Fix bug in r1654, which is reverted in r1662.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1664 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | mbbsd/more.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/mbbsd/more.c b/mbbsd/more.c index 0bdb361c..ace229ee 100644 --- a/mbbsd/more.c +++ b/mbbsd/more.c @@ -54,10 +54,10 @@ more_readln(int fd, unsigned char *buf) int ch; unsigned char *data, *tail, *cc; - int len, bytes, in_ansi; + int len, bytes, in_ansi, in_big5; int size, head, ansilen; - len = bytes = in_ansi = ansilen = 0; + len = bytes = in_ansi = in_big5 = ansilen = 0; tail = buf + ANSILINELEN - 1; size = more_size; head = more_head; @@ -102,12 +102,27 @@ more_readln(int fd, unsigned char *buf) *buf++ = ch; if (!strchr(STR_ANSICODE, ch)) in_ansi = 0; + } else if (in_big5) { + ++len; + *buf++ = ch; + in_big5 = 0; } else if (isprint2(ch)) { len++; *buf++ = ch; + if (ch >= 0xa1 && ch <= 0xf9) /* first byte of big5 encoding */ + in_big5 = 1; } } while (len < t_columns && buf < tail); - if(len==t_columns && head<size && *data=='\n') { + + if (in_big5) { + strcpy(buf - 1, "\033[1;34m>\033[m"); + buf += 10; + --head; + --data; + --bytes; + } + + if (len == t_columns && head < size && *data == '\n') { /* XXX: not handle head==size, should read data */ /* no extra newline dirty hack for exact 80byte line */ data++; bytes++; head++; |