[Gauche-devel-jp] Gauche on Cygwin でのsys-normalize-pathname

Back to archive index

齊藤 maldi****@gmail*****
2008年 3月 14日 (金) 19:55:30 JST


> (sys-normarize-pathname "~/abc" :expand #t)
> 
> が$HOMEと値が異なっているようです。
> 
> ~/abc -> C:\Document and Settings\○○○
> $HOME -> C:\unixtools\home
> 
> となっています。上はどうもレジストリで設定しているようなのですが、Cygwin
> の場合のsys-normalize-pathnameは ~ のどの値を見ているのでしょうか?

sys-normarize-pathnameでgrepして見つからずに困ってしまいました。
sys-normalize-pathnameのtypoですね。

ソースコードを順に追って行くと実際にこの処理をしているコードは
src/system.cの中にあるput_user_home関数です。

geteuid関数でユーザーのIDを取得してそれをgetpwuid関数に渡し、
(ホームディレクトリ等の)ユーザー情報を得ています。
geteuidもgetpwuidも本来はWindowsにないものですから、
cygwinランタイムがそれっぽい結果を返しているわけです。

では、具体的にcygwinはどのような処理をしているのかということになると、
ざっと調べてみたところでは、
cygwinをインストールしたディレクトリの下の/etc/passwdファイルを見ている
ようです。
そのファイルの中であなたのIDを探してみてください。
その右のほうに C:\Document and Settings\○○○ とありませんか?

----
齊藤敦志




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