う ご か ない

時代がInfernoかどうかは知りませんが、折角本を買ったので今日から読んでいて、今Channelの所だったりします。


で、折角載っていたのと、これはまぁ割と楽にフッくれてるよなーとか思ったので、次のコードをEmu Inferno on OS Xで動かそうと思いました。

http://www.gemusehaken.org/ipwl/sourcecode/book-examples/simplefileserver.b

多少変更を加えて

	alt
	{
		(off, nbytes, fid, rc) := <-chanref.read =>
		{
                    sys->print("in read req\n");
...

		(offset, writedata, fid, wc) := <-chanref.write =>
		{
                    sys->print("in write\n");

まぁこんな感じで。


で、/usr/infernoしかいなかったので、/usr/pipをmkdirして、synthetic.fileを作って、catやらechoしても何も表示されない。


しょうがないから、手前で

implement Test;

include "sys.m";
include "draw.m";

sys : Sys;

Test: module
{
init : fn(nil : ref Draw->Context,nil : list of string);
};

init(nil : ref Draw->Context,nil : list of string)
{
	buf : array of byte;
	buf = array [500] of byte;
	sys = load Sys Sys->PATH;

	fd := sys->open("/usr/pip/synthetic.file",sys->OREAD);
	n := sys->read(fd,buf,len buf);
	buf = buf[:n];
	sys->print("=> %s\n",string buf);
}

とかやったが音沙汰無し。なんでだろーなー。


とか思ったが、別shellじゃなくて、./simplefileserverをやったシェル上で上記のreadするのを実行したらprintされた。普通にcatでも問題無し。
なんでだろ。


飛ばして読んだ所に、何か書いてるんだろうか。


ちなみに、今誰でログインしてる事になってんだ?www
それを確認する方法も、useraddも分からない。ふへー。