namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
byte order and bit length problem (Re: はじめまして )
- From: Satoru Takabayashi <ccsatoru@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 26 Feb 1998 04:08:06 +0900
- X-ml-name: namazu
- X-mail-count: 00269
- References: <199802251755.CAA00455@g1.mariko.to>
site <takashi@xxxxxx> wrote:
>ちょっと訳あってFreeBSDからMklinux(DR2.1 UPDATE5)への移行を行っているので
>すが、
>Ver.110a以降からMklinux上で検索が出来なくなってしまったようではまりました^^;。
>
>いろいろ試した結果、Ver.1112のnamazu.cgiを使ってVer.100のmknmz.plでINDEX化し
>たものは
>検索できるようですので、Ver.110a以降のmknmzが原因ではないかと思っています。
v1.1.0 の時に mknmz.pl を Perl5 風に大幅に書き直したのでそれが原因
かもしれません。お使いの Perl のヴァージョンを教えていただけると何
か分かるかもしれません。
あ、そういえば Mklinux のマシンと FreeBSD のマシンって byte order
が違いませんか? Intel の CPU は little-endian ですが、 PowerPC は
どっちだろう…? もし違うなら、同じインデックスは使えませんね。
GNU の od(1) ならば
% perl -e 'print pack("I", 1);' | od -t x1
で byte order を調べられます。 GNU のじゃなければ
% perl -e 'print pack("I", 1);' | od -x
かな? 私は Linux + GNU Utilities の環境なのでよくわからない。
ちなみに、 Pentium の Linux だと
0000000 01 00 00 00
で、 HP-UX B.10.20 A 9000/715 のマシンだと
0000000 00 00 00 01
のような結果になります。
う〜む、やっぱり真面目に byte order の対応を考えた方が良さそうです
ね。インデックスはそのままで namazu 側で対応すればいいかな。
NMZ.bo のようなファイルに int の 1 を記録しておいてそれをチェック
するとか。
あと、処理はすべて int で行っているのですが、これだと 32bit/64bit
でまた問題になるかな…。周囲に 64bit なマシンはないのでテストでき
ませんが。
ところで、 K&R第2版によると
| 守るべき唯一の条件は, short と int は少なくとも 16 ビット, long
| は少なくとも 32 ビット, short は int より長くてはならず、 int は
| long より長くてはいけないということである。
だそうなので、もし、32bit に統一したいと思ったらなんだか結構厄介そ
うですね。この辺、 JAVA だと明確なんですが。このあたりの事情につい
て知恵をお貸しくださると助かります。
# 64bit マシンの short, long って何 bit だろう?
OS/2 対応パッチのマージと SunOS4 + perl5.003 問題を解決した版が手
元にあるのですが、どうせなら byte order の問題も一緒に解決して
v1.1.1.3 としてリリースしようと思います。
--
高林 哲 Satoru Takabayashi