Osamu NAKAMURA
naka****@hasak*****
2004年 9月 1日 (水) 18:14:38 JST
中村といいます。 directory 作成時の mode について、何点か 教えて頂きたけませんか? 1.sys-mkdir 、make-directory* ともに mode は umask でマスクされると思いますが、 生成される directory の mode を直接(umask と関係なく) 指定できる関数は用意されてませんか? (直接指定できるほうが使いやすそうな気がするけれど、 特にそうしてない理由があるなら知りたい、と。) sys-mkdir は、man 2 mkdir を見て、これに忠実に 作ってあるんだなぁと思いましたが、make-directory* も同様に動作するようなので、わけありなのかなぁ、と。 (ついでに、make-directory* 等のアスタリスクはどういう 関数の名前につけてあるものですか?) 2.そもそも、mode としてどういう数値を与えたらいいのか 理解できてません。(情けなし) shell の環境設定で umask コマンドに与える数値とは 別物ですよね? (16877 で、rdxr_xr_x になりました。) ”POSIXスタイルのパーミッションビットマスク”という ものを与えるのでしょうか? man umask を見るように、とありましたが、いくつかの UNIX系OS の man umask では、それらしい記述をみつけ られませんでした。 web で参照できるような情報があれば教えて頂けないで しょうか。 3.umask を scope 毎に簡単に切替えられると嬉しいかも、 と思っています。 gosh の環境内に gosh が参照する umask を収めた変数 があるとしたら、それを local に変更するとその scope でだけ local な umask が適用される、という使い方はできないでしょうか? こんな感じ (let ((gauche-umask localumask)) proc1 ... ;この中でのファイル生成には、localumask が適用される。 ) マクロで作るならこんな感じ? (define-syntax let-umask (syntax-rules () ((_ (umask) proc1 ...) (let ((oldumask (sys-umask umask))) proc1 ... (sys-umask oldumask))) )) 使い方 (let-umask (localumask) proc1 ... ) (マクロ歴2日なので、なんちゃってマクロです。) (素人ユーザーのため、用語等おかしいところは指摘いただけると ありがたいです。) p.s. ついでのついでなんですが、gosh のインタープリタで、行編集 や履歴を使うようにはできないでしょうか。 通常は、emacs の shell mode で使ってますが、ふと、そこにある terminal で立ち上げてしまって、悔しい思いをすることが時々。。 --