2010-04-11

netatalkからシンボリックリンクが見えん

netatalk-2.1beta2/libatalk/adouble/ad_open.c lines 1295 あたり。

シンボリックリンクを O_NOFOLLOW でopenしたとき、ELOOPが返る事を期待してるようだが、FreeBSDではEMLINKが返るのだ。

なので、そう書き換えて再インストールしたらシンボリックリンクもちゃんと読めるようになった。

CVSの最新では直ってるのかね。


追記:
どこをどう変えたのか具体的な手順を。
netatalk-2.1beta2/libatalk/adouble/ad_open.c の 1295 行目で、元のコードはELOOPでのみ判定してるところを以下のようにEMLINKでもifの条件に落ちるようにしてやる。

if (ad->ad_data_fork.adf_fd == -1 && (errno == ELOOP || errno == EMLINK)) {

一行書き換えるだけ。


追記:4月29日
netatalk2.1がリリースされましたね。βが取れてます。

Xcodeのプロジェクト置き場のフォルダとしてnetatalkの共有フォルダを指定してみましたが、問題なくビルドと実行ができています。
すばらしい!

netatalkのUNIX側の文字コード

標準で添付されてくる AppleVolumes.default が
:DEFAULTS: options:upriv,usedots

とかなってるもんだから正しいと信じて疑わなかったが、じつは
:DEFAULT: ...

が正しい。

:DEFAULTS: じゃなく :DEFAULT: 。単数形。

おいおい、たのむよ。

2010-04-04

なんでGPLのLinuxのほうが成功したんだ?

制限の緩いBSDのほうが成功しても良さそうなのに。
まあ、ライセンスの違いに答えを求めてもそれは違うかもしれないが。

組み込みではAndroidが大流行である。
AndroidはApache2.0ライセンスなのでカテゴリ的にはBSDライセンス系の制限の緩いものだ。
ビジネスで使うにはコードを公開しない選択肢が好まれるためそうなっているという。

制限が緩いため、これをベースにした派生バージョンのAndroid以外への適用なども期待されているそうだ。

はたしてそううまく行くだろうか。

Linux成功の鍵は、リーナスブランチへのコードの収斂やGPLにもとづくコードの公開の強制にあったのじゃないかと思う。
BSDライセンス系は一見自由なようなんだが、派生バージョンへの発散と独自コード部分の隠蔽という負の側面へ落ちていく事への制限もまた無いわけで。
人は低きに流れる。金のためとあらばなおさらの事。ビジネスという大義名分があればどこまでも、だ。

まあまあ、ネガティブな事はまあいいや。
考えるべきはポジティブな事だ。

今必要なのは、完全にGPLでライセンスされたモバイルデバイスのためのプラットフォームじゃなかろうか。
気になる動作をするときはすぐコードを見れて、知識さえあればすぐ修正して試せて、それを人にあげる事もできて、かつ強欲で虫のいい企業に盗まれる心配もなく、もっといいコードを書ける世界の強者に出会えて知識を共有できたり、そういうソフトウェアが進化していくために必要な土壌のようなものをGPLは提供してくれていたのではないか。
だからあんなにLinuxの進化は早いんじゃないのか。
LinuxがPCでそれを証明したのなら、モバイルでも同じく成功するのはGPL式のやりかたではないか。

組み込みすなわちコード公開はそぐわない、という短絡思考が気にいらない。
ほんとにそうなのか?ほんとにできないのか?
コード非公開が唯一成功する道なのか?
ただ誰もやってないから成功例を誰も知らないというだけなんじゃないのか。