diff options
author | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-11-28 13:47:34 +0800 |
---|---|---|
committer | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-11-28 13:47:34 +0800 |
commit | 94ee5b0f546ecdb6558a4d24028c728997c175e2 (patch) | |
tree | bf6bf1e783fe3c41fadef406ff2168ea86f43002 | |
parent | 30edc2d47868e24f54a9505f7eb66c0a42c64b4d (diff) | |
download | pttbbs-94ee5b0f546ecdb6558a4d24028c728997c175e2.tar pttbbs-94ee5b0f546ecdb6558a4d24028c728997c175e2.tar.gz pttbbs-94ee5b0f546ecdb6558a4d24028c728997c175e2.tar.bz2 pttbbs-94ee5b0f546ecdb6558a4d24028c728997c175e2.tar.lz pttbbs-94ee5b0f546ecdb6558a4d24028c728997c175e2.tar.xz pttbbs-94ee5b0f546ecdb6558a4d24028c728997c175e2.tar.zst pttbbs-94ee5b0f546ecdb6558a4d24028c728997c175e2.zip |
1.#ifdef GQ_CONVERT
2.add info to FAQ
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1380 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | docs/FAQ | 11 | ||||
-rw-r--r-- | mbbsd/convert.c | 3 | ||||
-rw-r--r-- | mbbsd/io.c | 16 | ||||
-rw-r--r-- | mbbsd/mbbsd.c | 11 | ||||
-rw-r--r-- | pttbbs.mk | 2 |
5 files changed, 40 insertions, 3 deletions
@@ -118,3 +118,14 @@ Mbbsmail, P=/home/bbs/bin/bbsmail, F=lsSDFMhPu, U=bbs, S=10,R=20/40, LDFLAGS+= -liconv 改成: LDFLAGS+= -liconv -L/usr/local/lib + +8./usr/libexec/elf/ld: cannot find -lhz +Ptt 支援正體中文轉簡體中文的功能 +若您開啟了這個選項 (#define GB_CONVERT) +請先安裝 autoconvert + (/usr/ports/chinese/autoconvert in FreeBSD + package libhz0 in Debian/Linux ) +然後在 mbbsd/Makefile 的 LDFLAGS 中 + LDFLAGS+= -liconv +加上 + LDFLAGS+= -liconv -lhs diff --git a/mbbsd/convert.c b/mbbsd/convert.c index c7140d03..6e620e23 100644 --- a/mbbsd/convert.c +++ b/mbbsd/convert.c @@ -3,6 +3,8 @@ * The following code is copied and modified from "autoconvert" with GPL. */ +#ifdef GB_CONVERT + #include "convert.h" #define BtoG_bad1 0xa1 @@ -64,3 +66,4 @@ unsigned char *big2gb(unsigned char *s, int plen) unsigned char c = 0; return hzconvert(s, &plen, &c, b2g); } +#endif @@ -17,6 +17,8 @@ static int icurrchar = 0; /* ----------------------------------------------------- */ /* convert routines */ /* ----------------------------------------------------- */ +#ifdef GB_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; @@ -54,6 +56,7 @@ inline static int read_wrapper(int fd, void *buf, size_t count) { inline static int write_wrapper(int fd, void *buf, size_t count) { return (*write_type)(fd, buf, count); } +#endif /* ----------------------------------------------------- */ /* output routines */ @@ -62,7 +65,11 @@ void oflush() { if (obufsize) { +#ifdef GB_CONVERT write_wrapper(1, outbuf, obufsize); +#else + write(1, outbuf, obufsize); +#endif obufsize = 0; } } @@ -80,7 +87,11 @@ output(char *s, int len) assert(len<OBUFSIZE); if (obufsize + len > OBUFSIZE) { +#ifdef GB_CONVERT write_wrapper(1, outbuf, obufsize); +#else + write(1, outbuf, obufsize); +#endif obufsize = 0; } memcpy(outbuf + obufsize, s, len); @@ -175,7 +186,12 @@ dogetch() #ifdef SKIP_TELNET_CONTROL_SIGNAL do{ #endif + +#ifdef GB_CONVERT while ((len = read_wrapper(0, inbuf, IBUFSIZE)) <= 0) { +#else + while ((len = read(0, inbuf, IBUFSIZE)) <= 0) { +#endif if (len == 0 || errno != EINTR) abort_bbs(0); /* raise(SIGHUP); */ diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c index 2bfb225b..edd2f36d 100644 --- a/mbbsd/mbbsd.c +++ b/mbbsd/mbbsd.c @@ -498,9 +498,14 @@ inline static void mkuserdir(char *userid) static void login_query() { +#ifdef GB_CONVERT /* uid 加一位, for gb login */ char uid[IDLEN + 2], passbuf[PASSLEN]; int attempts, len; +#else + char uid[IDLEN + 1], passbuf[PASSLEN]; + int attempts; +#endif resolve_garbage(); now = time(0); @@ -528,14 +533,16 @@ login_query() getdata(20, 0, "請輸入代號,或以[guest]參觀,以[new]註冊:", uid, sizeof(uid), DOECHO); +#ifdef GB_CONVERT /* switch to gb mode if uid end with '.' */ len = strlen(uid); if (uid[0] && uid[len - 1] == '.') { set_converting_type(1); uid[len - 1] = 0; } - else if (len == IDLEN + 1) - uid[len - 1] = 0; + else if (len >= IDLEN + 1) + uid[IDLEN] = 0; +#endif if (strcasecmp(uid, str_new) == 0) { #ifdef LOGINASNEW @@ -7,7 +7,7 @@ CC?= gcc CCACHE!= which ccache|sed -e 's/^.*\///' PTT_CFLAGS= -Wall -pipe -DBBSHOME='"$(BBSHOME)"' -I../include PTT_LDFLAGS= -pipe -Wall -PTT_LIBS= -lcrypt -lhz +PTT_LIBS= -lcrypt # enable assert() #PTT_CFLAGS+= -DNDEBUG |