Blog

KDDIのadd_crc.cってさ

By Hiroyuki OYAMA Tue Apr 6 04:37:40 2004

KDDIのWebサイトに掲載されている、EZweb端末へのダウンロードファイルにチェックサムを埋め込むツールのソースコードについて小さな、ホントに小さな小言。

EZweb + HDMLで着メロや壁紙をダウンロードさせる場合、ファイルにCRCチェックの値を埋め込む必要がある、というのは携帯サイト運営に携わる方は既にご存知のことと思います(私はそれを昨日一昨日知ったヘタレ。だって使わないんだもん...)。で、その処理のサンプルとしてadd_crc.cというCのコードが配布されているのですが、これプラットフォーム毎のバイトオーダの差異を意識しない作りなので、PowerPCやSPARCやMIPSなどのビッグエンディアンな環境では間違ったフォーマットでCRC値を埋め込んでしまいます。

一応サンプルを用意した中の人もその辺は認識されているらしく、コメントには
/* チェックバリュー付加                                                      */
/*   注)動作させるプラットフォームによってセットするバイトが逆の場合もある。*/
/*       (ビッグエンディアン/リトルエンディアン)                          */
と書いてありますが、何故広く使われうるにもかかわらず環境非依存なサンプルを最初から用意しないのか謎です。だいたいこんな感じで書いてあります
write(fd, (char *)&crc+1, 1);
write(fd, (char *)&crc,   1);
これを単に
fputc((crc >> 8) & 0xff, fp);
fputc(crc & 0xff,        fp);
とか書けば済むことなんだけど...もしかしてKDDIはIntelアーキテクチャ以外での携帯サイト運営を推奨していないのでしょうか!(違)



GNU Autoconf/Automake/Libtoolプログラミング作法詳解UNIXプログラミング
このヘンの移植性に関するお話はGNU Autoconf / Automake / Libtoolプログラミング作法に詳しく書いてあるので興味のある方はぜひご一読を。
また、バイトオーダの話題は扱っていませんがUNIXのプログラミング環境における実装ごとのAPIやパラメータなどの差異や互換性や歴史的経緯については詳解UNIXプログラミングが良い塩梅に詳しいのであわせてオススメです。この本は他にもシステムコールの裏側などの基礎の基礎といえる部分の解説も豊富なので、UNIXプログラマ必読ですね。

mod_ezweb_downloadについて

半分冗談でつくったmod_ezweb_downloadモジュール
なんですが、はたしてこれって必要とされる物なのでしょうか?イマドキのEZweb端末ならXHTMLでフツーにobjectタグでリンクするだけでダウンロードさせられるのですが、HDMLしか解さない端末はドレくらい生き残っているんだろう。また普通の商用携帯サイトではそのへんどう扱ってるんだろう?

というわけで冗談で作ったソフトウェアなのでライセンスも冗談らしく、GPLとコマーシャルライセンス(有料)のデュアルライセンスにしました(最低だよあんた)
コードを書く時間よりもパッケージ化(ビルドツールとかcopyrightとか)する方が時間かかったのは秘密です。
とまぁサーバの負荷と戦う携帯サイト管理者の方は是非お試しくださいませ。

Comments

Post a comment

Name:


URL:


Comments:


WebエンジニアのためのApacheモジュールプログラミングガイド

ApacheをHackする!
モジュールプログラミング強烈初体験!!
定価: 2,919円(税込)
ISBN: 4-7741-1799-4

hiroyuki_oyama IM status

Apache Users

Apache Modules

CPAN


Home > Blog > KDDIのadd_crc.cってさ