#あれ、HEADが、termiosのテストで刺さるようになった(FreeBSD 8.2R)
#termios変えた。ptyが使えるときは使うようにしたんだけどそのせいかな。
#変えたってのはテストを変えたってこと。ext/termios/test.scmの(sys-openpty), (open-input-fd-port) あたりに#?=噛ませるとどうなります?
#test termios-tcsetattr, expects (#<undef> #<undef> #<undef>) ==>
#止まってるのはここですね
#ああ、ptyのオープンはうまくいってるんですね。ptyに対してsetattrするとまずいものがあるんだろうか。
#TCSADRAINかTCSAFLUSHで、master側が何かするまで待っちゃってるのかな。今、 (list TCSANOW TCSADRAIN TCSAFLUSH) と3つのフラグをテストしてますが、これをひとつづつテストしたら、どれでつっかえてるかわかります?
#やってみます
#TCSADRAIN で止まりますね
#TCSAFLUSH でも止まる
#その二つはmaster側のアクションを待つということか… Linuxのmanpageでは「変更のタイミング」に関しては述べられているけど、関数が戻るか戻らないかは何とも言ってないんですよね。
#アドホックだけど、(1)/dev/ttyのオープンを試みてだめだったらptyにフォールバック(2)ptyにフォールバックした場合はTCSANOWだけ試す、ということにしようかな。
#TCSADRAIN The change occurs after all output written to fd has been
transmitted to the terminal. This value of action should be
used when changing parameters that affect output.
TCSAFLUSH The change occurs after all output written to fd has been
transmitted to the terminal. Additionally, any input that has
been received but not read is discarded.
#それはLinuxの記述と同じですね。ただ、そこで言っているのはパラメータの変更が端末に反映されるタイミングであって、tcsetattrがその変更が起きるまで待つということは言ってないと思うんですよ。
#確かにそうですね。
#変更前に戻っちゃうと何らかのバッファリングが必要なので、実装上待ちたくなるのはわかりますが。
#関数そのものがブロックするかどうかについては、記述がないですね。
##(let1 term (sys-ctermid) の下に (error <system-error>) をつけてもらえば、ptyを使う方のパスをテストできます。
#pushしときました。
#止まらなくなりました。
#まはろ〜。
#ちょっとしたtypoを見つけました。diff --git a/doc/modgauche.texi b/doc/modgauche.texi
index 3d0bc86..414eb22 100644
--- a/doc/modgauche.texi
+++ b/doc/modgauche.texi
@@ -7858,7 +7858,7 @@ so that a parameter can be used as if it were a procedure.
@example
;; p is a parameter with initial value 2
-(define p (make-parametre 2))
+(define p (make-parameter 2))
;; calling p with no arguments returns the current value
(p) @result{} 2
#ども。直しました。
#ヘルツにちなんだ今日のGoogleロゴだけど円弧を繋いだ波形ってのは(普段あんまり目にしないので)見ててちょっと異質な感じ。どんなスペクトルになるんだろ。
##デザインとしてはわかるのだけれど、現実の波形ではあんま見ないですよね。でも方形波は綺麗な無限和で作れるから、円弧をつないだ波形も案外すっきり作れたりして。
#直前の tcflow(TCIOFF) tcflow(TCION) でおくられた ^S/^Q が出力バッファにあるから止まってるんですね.
#そっか。ということは何か送る前にテストすれば止まらずに済むかな。
#tcflush のテストを間にもってくるとか
#pty使ってる場合、tcflushもmasterで読み出すまで止まったりしませんかね。
#tcflush はキューにある文字を捨てる関数のようなので大丈夫じゃないですかね?
#とりあえず手元では動きました.
#お、じゃあそっちの方がいいかな。今の変更は(pty使用時には)あんまり意味のないテストになっちゃってるので。
##あ、ptyのパスを試すにはctermidの方のコードでエラーを投げるかなんかしてください。
#そうですね.動きました.
#tcflush のテストをコメントアウトするととまったのでたぶんちゃんと pty 使われてると思います.
#ありがとです。