diff options
author | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-01-03 17:53:35 +0800 |
---|---|---|
committer | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-01-03 17:53:35 +0800 |
commit | 38262b22bfe8cfe1f7de6f272e18a3aae340f83a (patch) | |
tree | 819e75228a3d78d922eaaa9a4e81df89219457da /mbbsd/io.c | |
parent | 63bc2dad6f3d3fdb6b3495a4eda10a14a5647c6a (diff) | |
download | pttbbs-38262b22bfe8cfe1f7de6f272e18a3aae340f83a.tar pttbbs-38262b22bfe8cfe1f7de6f272e18a3aae340f83a.tar.gz pttbbs-38262b22bfe8cfe1f7de6f272e18a3aae340f83a.tar.bz2 pttbbs-38262b22bfe8cfe1f7de6f272e18a3aae340f83a.tar.lz pttbbs-38262b22bfe8cfe1f7de6f272e18a3aae340f83a.tar.xz pttbbs-38262b22bfe8cfe1f7de6f272e18a3aae340f83a.tar.zst pttbbs-38262b22bfe8cfe1f7de6f272e18a3aae340f83a.zip |
support utf8 convertion, but still buggy
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1456 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/io.c')
-rw-r--r-- | mbbsd/io.c | 39 |
1 files changed, 6 insertions, 33 deletions
@@ -17,37 +17,10 @@ static int icurrchar = 0; /* ----------------------------------------------------- */ /* convert routines */ /* ----------------------------------------------------- */ -#ifdef GB_CONVERT +#ifdef CONVERT -typedef int (* read_write_type)(int, void *, size_t); -static read_write_type write_type = (read_write_type)write; -static read_write_type read_type = read; - -int converting_read(int fd, void *buf, size_t count) -{ - int len = read(fd, buf, count); - if (len >= 0) - gb2big(buf, len); - return len; -} - -int converting_write(int fd, void *buf, size_t count) -{ - big2gb(buf, count); - return write(fd, buf, count); -} - -void set_converting_type(int which) -{ - if (which == 0) { - read_type = read; - write_type = (read_write_type)write; - } - else if (which == 1) { - read_type = converting_read; - write_type = converting_write; - } -} +read_write_type write_type = (read_write_type)write; +read_write_type read_type = read; inline static int read_wrapper(int fd, void *buf, size_t count) { return (*read_type)(fd, buf, count); @@ -65,7 +38,7 @@ void oflush() { if (obufsize) { -#ifdef GB_CONVERT +#ifdef CONVERT write_wrapper(1, outbuf, obufsize); #else write(1, outbuf, obufsize); @@ -87,7 +60,7 @@ output(char *s, int len) assert(len<OBUFSIZE); if (obufsize + len > OBUFSIZE) { -#ifdef GB_CONVERT +#ifdef CONVERT write_wrapper(1, outbuf, obufsize); #else write(1, outbuf, obufsize); @@ -193,7 +166,7 @@ dogetch() do{ #endif -#ifdef GB_CONVERT +#ifdef CONVERT while ((len = read_wrapper(0, inbuf, IBUFSIZE)) <= 0) { #else while ((len = read(0, inbuf, IBUFSIZE)) <= 0) { |