diff options
author | scw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-05-15 16:05:59 +0800 |
---|---|---|
committer | scw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-05-15 16:05:59 +0800 |
commit | a8b87ec695abd673d76c148985b0f255d7083ae5 (patch) | |
tree | d545f3d23782018e87b599f7c41a4d14adadcfc9 | |
parent | dc0a8eb34da824f63ad76564999deddcb2c74342 (diff) | |
download | pttbbs-a8b87ec695abd673d76c148985b0f255d7083ae5.tar pttbbs-a8b87ec695abd673d76c148985b0f255d7083ae5.tar.gz pttbbs-a8b87ec695abd673d76c148985b0f255d7083ae5.tar.bz2 pttbbs-a8b87ec695abd673d76c148985b0f255d7083ae5.tar.lz pttbbs-a8b87ec695abd673d76c148985b0f255d7083ae5.tar.xz pttbbs-a8b87ec695abd673d76c148985b0f255d7083ae5.tar.zst pttbbs-a8b87ec695abd673d76c148985b0f255d7083ae5.zip |
Work on linuxx.
git-svn-id: http://opensvn.csie.org/pttbbs/branches/scw.angel@1983 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | mbbsd/brc.c | 11 | ||||
-rw-r--r-- | mbbsd/io.c | 9 | ||||
-rw-r--r-- | mbbsd/talk.c | 35 |
3 files changed, 48 insertions, 7 deletions
diff --git a/mbbsd/brc.c b/mbbsd/brc.c index ede94386..b41e27a7 100644 --- a/mbbsd/brc.c +++ b/mbbsd/brc.c @@ -9,7 +9,7 @@ #define BRC_BLOCKSIZE 1024 -#if MAX_BOARD > 32767 || BRC_MAXSIZE > 32767 +#if MAX_BOARD > 65535 || BRC_MAXSIZE > 65535 #error Max number of boards or BRC_MAXSIZE cannot fit in unsighed short, \ please rewrite brc.c #endif @@ -138,7 +138,7 @@ brc_enlarge_buf() return 0; memcpy(buffer, brc_buf, brc_alloc); free(brc_buf); - brc_alloc += BRC_BLOCKSIZE; + do brc_alloc += BRC_BLOCKSIZE; while(brc_size > brc_alloc); brc_buf = (char*)malloc(brc_alloc); memcpy(brc_buf, buffer, brc_alloc - BRC_BLOCKSIZE); return 1; @@ -172,8 +172,9 @@ brc_insert_record(brcbid_t bid, brcnbrd_t num, time_t* list) brc_size -= tnum; /* put on the beginning */ - if (num && (new_size = - sizeof(brcbid_t) + sizeof(brcnbrd_t) + num * sizeof(time_t))){ + if (num){ + new_size = sizeof(brcbid_t) + sizeof(brcnbrd_t) + + num * sizeof(time_t); brc_size += new_size; if (brc_size > brc_alloc && !brc_enlarge_buf()) brc_size = BRC_MAXSIZE; @@ -330,6 +331,8 @@ brc_initial_board(const char *boardname) brc_update(); /* write back first */ currbid = getbnum(boardname); + if( currbid == 0 ) + currbid = getbnum(DEFAULT_BOARD); currboard = bcache[currbid - 1].brdname; currbrdattr = bcache[currbid - 1].brdattr; @@ -305,8 +305,8 @@ igetch() } } return ch; - case '\n': /* Ptt把 \n拿掉 */ - continue; + //case '\n': /* Ptt把 \n拿掉 */ + // continue; case Ctrl('T'): if (WATERMODE(WATER_ORIG) || WATERMODE(WATER_NEW)) { if (watermode > 0) { @@ -353,6 +353,11 @@ igetch() } } return ch; + + case Ctrl('J'): + CallAngel(); + continue; + case IAC: // disallow user input telnet protocol leading char IAC chr(255) // TODO parse telnet protocol diff --git a/mbbsd/talk.c b/mbbsd/talk.c index a8238da4..31846c54 100644 --- a/mbbsd/talk.c +++ b/mbbsd/talk.c @@ -2735,11 +2735,44 @@ t_changeangel(){ buf, 3, LCECHO); if( buf[0] == 'y' || buf[0] == 'Y' ){ cuser.myangel[0] = 0; - vmsg("小天使更新完成,下次呼叫時會選出新的小天使"); + outs("小天使更新完成,下次呼叫時會選出新的小天使"); } return 0; } +static int +FindAngel(void){ + return 0; +} + +static void +TalkToAngel(){ + if( cuser.myangel[0] == 0 ) + if( ! FindAngel() ){ + move(b_lines, 0); + outs("現在沒有小天使在線上,請先在新手板上尋找答案或發問"); + refresh(); + sleep(1); + if( currutmp->mode != EDITING ){ + brc_initial_board("PttNewHand"); + Read(); + } + return; + } + return; +} + void CallAngel(){ + screenline_t *screen0 = calloc(t_lines, sizeof(screenline_t)); + int x, y; + getyx(&y, &x); + memcpy(screen0, big_picture, t_lines * sizeof(screenline_t)); + + TalkToAngel(); + + memcpy(big_picture, screen0, t_lines * sizeof(screenline_t)); + move(y, x); + free(screen0); + redoscr(); } |