⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;&nbsp;<A HREF="mailto:yes.bbs@firebird.cs.ccu.edu.tw">yes.bbs@firebird.cs.ccu.edu.tw</A>&nbsp;(□),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;看板&nbsp;&nbsp;linux&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;&nbsp;使&nbsp;NcFTP&nbsp;2.3.0&nbsp;可以看彩色与中文&nbsp;<BR>发信站:&nbsp;&nbsp;中正大学四百年来第一站&nbsp;(Sun&nbsp;Jan&nbsp;28&nbsp;23:01:02&nbsp;1996)&nbsp;<BR>转信站:&nbsp;<BR>&nbsp;<BR>如何让&nbsp;NcFTP&nbsp;2.3.0&nbsp;在&nbsp;Visual&nbsp;Mode&nbsp;下也可以看到含彩色控制码与中文的画面&nbsp;<BR>&nbsp;<BR>*此修改版本使用&nbsp;NcFTP&nbsp;2.3.0&nbsp;与&nbsp;ncurses&nbsp;1.9.8a。作业系统&nbsp;Linux,&nbsp;kernel&nbsp;<BR>&nbsp;版本&nbsp;1.2.13。&nbsp;<BR>&nbsp;<BR>需要修改的档案:&nbsp;<BR>NcFTP:&nbsp;Util.c&nbsp;Win.c&nbsp;<BR>ncurses:&nbsp;lib_addch.c&nbsp;lib_addstr.c&nbsp;<BR>&nbsp;<BR>由於&nbsp;ncurses&nbsp;本身的&nbsp;waddstr&nbsp;等&nbsp;function&nbsp;会过滤控制字元,使得即使我们修&nbsp;<BR>改&nbsp;NcFTP&nbsp;的原始程式使其不过滤控制码,到了&nbsp;ncurses&nbsp;的层次仍会被滤掉。底&nbsp;<BR>下所说明的修改法便是同时修改这两套软体的原始程式,使我们在使用&nbsp;NcFTP时&nbsp;<BR>即使在&nbsp;visual&nbsp;mode&nbsp;下也可以看到正常的彩色字。&nbsp;<BR>&nbsp;<BR>修改&nbsp;NcFTP&nbsp;的部份只要是使其不过滤中文字与&nbsp;ESC&nbsp;这个控制字元,以及在输出&nbsp;<BR>时改成呼叫我们增加的&nbsp;esc_waddnstr()&nbsp;这个&nbsp;function。&nbsp;<BR>&nbsp;<BR>修改&nbsp;ncurses&nbsp;的部份主要是增加了&nbsp;esc_waddnstr()&nbsp;这个&nbsp;function,以及其所&nbsp;<BR>使用的两个&nbsp;function,使其不过滤&nbsp;ESC。&nbsp;<BR>&nbsp;<BR>修改之处如下:&nbsp;<BR>Util.c:(改&nbsp;MakeStringPrintable())&nbsp;<BR>while&nbsp;((i&nbsp;&lt;&nbsp;siz)&nbsp;&amp;&amp;&nbsp;(*src&nbsp;!=&nbsp;'\0'))&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;=&nbsp;*src++;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isprint(c)&nbsp;||&nbsp;(c&nbsp;==&nbsp;'\n')&nbsp;||&nbsp;(c&nbsp;==&nbsp;'\t')&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;(c&nbsp;&amp;&nbsp;0x80)&nbsp;||&nbsp;(c&nbsp;==&nbsp;0x1b))&nbsp;{&nbsp;&nbsp;/*&nbsp;不过滤中文与&nbsp;ESC&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*dst++&nbsp;=&nbsp;c;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++i;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(iscntrl(c)&nbsp;&amp;&amp;&nbsp;(c&nbsp;!=&nbsp;0x7f))&nbsp;{&nbsp;<BR>&nbsp;<BR>Win.c:(改&nbsp;PrintToListWindow())&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Weird&nbsp;things&nbsp;happened&nbsp;if&nbsp;I&nbsp;did&nbsp;wprintw(gListWin,&nbsp;&quot;%s&quot;,&nbsp;startp).&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;原本呼叫&nbsp;waddstr()&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esc_waddnstr(gListWin,&nbsp;startp,&nbsp;-1);&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;May&nbsp;need&nbsp;to&nbsp;gCurRow++&nbsp;if&nbsp;line&nbsp;wraps&nbsp;around&nbsp;other&nbsp;side...&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(haveNL)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gCurRow++;&nbsp;<BR>&nbsp;<BR>lib_addch.c:(增加以下的&nbsp;function)&nbsp;<BR>/*&nbsp;取消对&nbsp;ESC&nbsp;的过滤&nbsp;*/&nbsp;<BR>/*&nbsp;加在&nbsp;waddch_nosync()&nbsp;之後,#undef&nbsp;DO_NEWLINE&nbsp;之前&nbsp;*/&nbsp;<BR>static&nbsp;inline&nbsp;<BR>int&nbsp;esc_waddch_nosync(WINDOW&nbsp;*win,&nbsp;const&nbsp;chtype&nbsp;c)&nbsp;<BR>/*&nbsp;the&nbsp;workhorse&nbsp;function&nbsp;--&nbsp;add&nbsp;a&nbsp;character&nbsp;to&nbsp;the&nbsp;given&nbsp;window&nbsp;*/&nbsp;<BR>{&nbsp;<BR>register&nbsp;chtype&nbsp;ch&nbsp;=&nbsp;c;&nbsp;<BR>register&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;x,&nbsp;y;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newx;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;win-&gt;_curx;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;win-&gt;_cury;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CHECK_POSITION(win,&nbsp;x,&nbsp;y);&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ch&nbsp;&amp;&nbsp;A_ALTCHARSET)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;noctrl;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(ch&amp;A_CHARTEXT)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'\t':&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(win-&gt;_flags&nbsp;&amp;&nbsp;_NEED_WRAP)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newx&nbsp;=&nbsp;min(TABSIZE,&nbsp;win-&gt;_maxx+1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newx&nbsp;=&nbsp;min(x&nbsp;+&nbsp;(TABSIZE-(x%TABSIZE)),&nbsp;win-&gt;_maxx+1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(win-&gt;_curx&nbsp;&lt;&nbsp;newx)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(waddch_literal(win,&nbsp;'&nbsp;'&nbsp;|&nbsp;(ch&amp;A_ATTRIBUTES))&nbsp;==&nbsp;ERR)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(ERR);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(OK);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'\n':&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wclrtoeol(win);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DO_NEWLINE&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'\r':&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;win-&gt;_flags&nbsp;&amp;=&nbsp;~_NEED_WRAP;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'\b':&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(win-&gt;_flags&nbsp;&amp;&nbsp;_NEED_WRAP)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;win-&gt;_flags&nbsp;&amp;=&nbsp;~_NEED_WRAP;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(--x&nbsp;&lt;&nbsp;0)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(is7bits(ch&nbsp;&amp;&nbsp;A_CHARTEXT)&nbsp;&amp;&amp;&nbsp;iscntrl(ch&nbsp;&amp;&nbsp;A_CHARTEXT)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;((ch&nbsp;&amp;&nbsp;A_CHARTEXT)&nbsp;!=&nbsp;0x1b))&nbsp;&nbsp;&nbsp;/*&nbsp;不过滤&nbsp;ESC&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(waddstr(win,&nbsp;unctrl((unsigned&nbsp;char)ch)));&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;FALL&nbsp;THROUGH&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noctrl:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;waddch_literal(win,&nbsp;ch);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(OK);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;win-&gt;_curx&nbsp;=&nbsp;x;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;win-&gt;_cury&nbsp;=&nbsp;y;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(OK);&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>/*&nbsp;加在档案最後即可&nbsp;*/&nbsp;<BR>int&nbsp;_esc_nc_waddch_nosync(WINDOW&nbsp;*win,&nbsp;const&nbsp;chtype&nbsp;c)&nbsp;<BR>/*&nbsp;export&nbsp;copy&nbsp;of&nbsp;waddch_nosync()&nbsp;so&nbsp;the&nbsp;string-put&nbsp;functions&nbsp;can&nbsp;use&nbsp;it&nbsp;*/&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return(esc_waddch_nosync(win,&nbsp;c));&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>lib_addstr.c:(增加以下的&nbsp;function)&nbsp;<BR>/*&nbsp;加在档案最後即可&nbsp;*/&nbsp;<BR>int&nbsp;<BR>esc_waddnstr(WINDOW&nbsp;*win,&nbsp;const&nbsp;char&nbsp;*astr,&nbsp;int&nbsp;n)&nbsp;<BR>{&nbsp;<BR>unsigned&nbsp;char&nbsp;*str&nbsp;=&nbsp;(unsigned&nbsp;char&nbsp;*)astr;&nbsp;<BR>int&nbsp;code&nbsp;=&nbsp;ERR;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T((&quot;esc_waddnstr(%p,\&quot;%s\&quot;,%d)&nbsp;called&nbsp;%s&quot;,&nbsp;win,&nbsp;_nc_visbuf(astr),&nbsp;n,&nbsp;_tr&nbsp;<BR>aceattr(win-&gt;_attrs)));&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str&nbsp;!=&nbsp;NULL)&nbsp;{&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR(TRACE_VIRTPUT,&nbsp;(&quot;str&nbsp;is&nbsp;not&nbsp;null&quot;));&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;code&nbsp;=&nbsp;OK;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(n&nbsp;&lt;&nbsp;0)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;strlen(astr);&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((n--&nbsp;&gt;&nbsp;0)&nbsp;&amp;&amp;&nbsp;(*str&nbsp;!=&nbsp;'\0'))&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR(TRACE_VIRTPUT,&nbsp;(&quot;*str&nbsp;=&nbsp;%x&quot;,&nbsp;*str));&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(_esc_nc_waddch_nosync(win,&nbsp;(unsigned&nbsp;char)*str++)&nbsp;==&nbsp;<BR>&nbsp;ERR)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;code&nbsp;=&nbsp;ERR;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_nc_synchook(win);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR(TRACE_VIRTPUT,&nbsp;(&quot;esc_waddnstr&nbsp;returns&nbsp;%d&quot;,&nbsp;code));&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;code;&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -