Shiro Kawai
shiro****@lava*****
2003年 12月 12日 (金) 11:07:52 JST
From: Shoji Kuzukami <kuzuk****@manba*****> Subject: [Gauche-devel-jp] lib/slib.scmの(home-vicinity) Date: Fri, 12 Dec 2003 10:57:22 +0900 > 標準のslibでは,*-vicinityの返す値は, > おしりに"/"つまり,*dir-sep*が追加されているようです. > > もしよければ, > > lib/slibに > (define *dir-sep* "/") > (define (sane-vicinity f) > (define sl (string-length f)) > (define dsl (string-length *dir-sep*)) > (if (equal? (substring f (- sl dsl) sl) dsl) > f > (string-append f *dir-sep*))) > (define (home-vicinity) (sane-vicinity (getenv "HOME"))) > のような修正を行なってくれませんか? 了解です。srfi-13のstring-suffix? を使えば (define (sane-vicinity f) (if (string-suffix? *dir-sep* f) f (string-append f *dir-sep*))) かな。 (getenv "HOME") は以前HOMEが定義されない環境で問題が出たことがあるので、 (or (home-directory) (sys-getenv "HOME")) がいいかもしれません。 > あと > (define slib:load slib:load-source) よりか > (define (slib:load f) > (if (file-exists? f) > (%load f);でしたっけ? > (slib:load-source f))) > のほうが,SCMの動作に近いような気がします. あ、なるほど。slib:loadはサフィックスがついててもいいのですね。 それなら (define slib:load load) でいけるかな。Gaucheのloadは最初に名前のままのファイルを見て、 無ければ ".scm" をつけたものを調べます。 --shiro