[Gauche-devel-jp] directory 作成時の mode

Back to archive index

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 で立ち上げてしまって、悔しい思いをすることが時々。。

-- 





Gauche-devel-jp メーリングリストの案内
Back to archive index