Re: 有沒有人試過讓maple支持非標准行列數?

看板Maple (BBS架站)作者時間21年前 (2003/05/16 13:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
下面的程式在使用 kkman 時會有問題。pcman,multiterm 都確認過可以用。 putty 也沒問題。 在 bbsd.c 裡面加入一個 term_init() void term_init() { #ifdef BIGTERM /* ask client to report it's term size */ static char svr[] = { IAC, DO, TELOPT_NAWS }; static char rvr[] = { IAC, WILL, TELOPT_NAWS, IAC, SB, TELOPT_NAWS, IAC, WONT, TELOPT_NAWS }; int len; char *cmd, *res; int rset; struct timeval to; char buf[64]; cmd = svr; len = 3; /* 問對方 (telnet client) 有沒有支援不同的螢幕寬高 */ send(0, cmd, len, 0); rset = 1; if (select(1, (fd_set *) & rset, NULL, NULL, &to) > 0) recv(0, buf, sizeof(buf), 0); /* try to read rows and columns of the client terminal */ cmd = rvr; res = buf; if (!memcmp(res, cmd, 3)) { /* got IAC WILL NAWS : 對方說有 */ res += 3; if (!memcmp(res, cmd+3, 3)) { /* got IAC SB NAWS :接著回傳資料 */ res += 3; t_width = res[0]*256+res[1]; t_height = res[2]*256+res[3]; } } else if (!memcmp(res, cmd+3, 3)) { /* got IAC SB NAWS */ res += 3; t_width = res[0]*256+res[1]; t_height = res[2]*256+res[3]; } else if (!memcmp(res, cmd+6, 3)) { /* got IAC WONT NAWS; default to 80x24 :對方說沒有 */ t_width = 80; t_height = 24; } else { /* what ever else; default to 80x24 :沒有回覆 */ t_width = 80; t_height = 24; } #else t_width = 80; t_height = 24; #endif /* BIGTERM */ } 在 bbsd.c 裡的 main() 最後 telnet_init(); term_init(); <--- 加入這一行 visio_init(); xover_init(); 另外,在 visio.c 裡面 /* 把這些 #define t_columns 80 #define t_lines 24 #define p_lines 18 換成下面那些 */ /* for term-size awareness */ extern int t_width; extern int t_height; #define t_columns t_width #define t_lines t_height #define p_lines t_lines - 6 int b_lines; ※ 引述《fuse.bbs@bbs.hightman.net (保險絲)》之銘言: > ※ 引述《LittleJohn2.bbs@bbs.cs.nthu.edu.tw》之銘言: > > 可以到 news.tfcis.org 的 TFCIS.personal.itoc 找找 > > 有支援超過 24 行長螢幕的程式 (抓 telnet 的 signal) > 多謝您的回應 > 找到了 > 這里有一段話看不懂,不知哪位大大可以解釋一下: > ---- > 發信人: itoc.bbs@processor.tfcis.org (:MM:), 信區: maplePlanITOC > 標 題: Re: [□□]_や穿□□_24_□□□□ > 發信站: XEON (Fri Apr 11 14:29:42 2003) > 轉信站: Feeling!news.tfcis.org!PROCESSOR > 出 處: svrequ.tnfsh.tn.edu.tw > 還沒上站就必須把視窗大小設好 > 視窗的大小是以剛上站時的大小為准 > 后來再改也沒用了 (因為我抓不到 SIGWINCH) > ----- > 我理解中.........在telnet剛建立時,會作協商: > server問:你會改變行列數么?(TN_NAWS) > client答:Yes, I do. (TNCH_DO) > 那么在連線時, > 當TERM變化行列數時就會發出: > TNCH_IAC + TNCH_SB + TN_NAWS + 行數列數 + TNCH_IAC + TNCH_SE; > 那么也就是在連線階段會發現這個串,解析就是了。 > 那itoc大大說的SIGWINCH又是什么意思呢? -- ※ Origin: 生命科學 BBS <bbs.life.nthu.edu.tw> ◆ From: feminism.life.nthu.edu.tw
文章代碼(AID): #-n7HE00 (Maple)
文章代碼(AID): #-n7HE00 (Maple)