Sunday, 10 February 2008

あれ? (OSの課題)



なんか、#define BUFFSIZE 1024 とかやっている馬鹿が多い。これで、getdirentries とかやってる。これだとだめなんだよ。去年も文句言った記憶があるんだが...

とか、思ったら、問題の方に#define BUFFSIZE 1024 とか書いてある。これが原因かぁ。でも、問題にも「BUFSIZ使え」って書いてある。書いただけで修正しなかったんだな。きっと、授業中に「このソースじゃダメじゃん」ぐらい言ったときもあるんだろう。でも、今年は、あんまり解説しなかったからな :-p まぁ、問題が悪くても正しく解答するということで... 許して下さい。(もともと新城さんが書いたソースで僕が書いたんじゃないです、と言い訳するけど、見逃していたことも確かだが...)

readlink でも、20とか1024とかBUFSIZとか、まぁ、いろいろ使っているのがいる。BUFSIZは割と許せると思う。でも、これもdirent.h の中身を解説しているところでファイル名の最大長ってのを調べているんだよな。

とかいうのがあるわけなんだけど、おそらく、MAX_PATHを使うのが正しい。しかし...

    #define _POSIX_NAME_MAX         14

はぁ?! なんだこりゃ? hostname かな?

% grep  POSIX_PATH_MAX  /usr/include/*.h
/usr/include/limits.h:#define   _POSIX_PATH_MAX         256
% naha grep  POSIX_PATH_MAX  /usr/include/\*\*/\*.h
/usr/include/bits/posix1_lim.h:#define  _POSIX_PATH_MAX         256

まぁ、いろいろ謎ですね。

    http://risky-safety.org/zinnia/doc/maxpath.html


256 だと、ちょっと長い日本語ファイル名だと越えちゃいそう。まぁ、80文字って言ったら、普通の端末の二行なのでそんな長い名前はつけないだろうけど。でも、conditional symblic link とかだと越えそう。もっとも、conditional symbolic link なんてもは、既に死んでいるとは思うけど。

No comments: