ぐいぐい01に関するメモ-28
- (by K, 2009.01.16)
- メモのうち重要な部分をそのうちまとめてまともなページを作る
(40) busyboxの真似
- IRCでmandel59さんが http://ja.wikipedia.org/wiki/BusyBox を例に出して、「ぐいぐい01」でも同じことをすればディスクスペースが節約できるのではないかと提案。たしかにそれはそうなので、どうやったらできるかを検討。
- 案1: efg01を改造して、アーカイブからの起動をサポートする。
- 悪くないけど、efg01にこの手の機能を付けるのはあまりうまくない気がする(efg01が多機能すぎて大きくなりすぎる)。
- 案2: busybox的な動作をする.g01アプリを作る。
- これがいい。まずはこの方法を検討して、ダメなら案1で考えよう。
- まずアーカイブ形式をどうするかという問題がある。「ASCIZファイル名+gh8のファイルサイズ+シグネチャを省略した.g01ファイル」をひとかたまりにして、これをcpyでつないでいったものを作ればいいかな(本当はコンパクト形式じゃなければファイルサイズ情報を省略できるんだけど、まあ最初は面倒なのでこれでいいや)。そうやって全部結合させてbin2objで.obj化すれば、とりあえず.g01版busybox本体にリンクできる。
- さて本体はどうしようか。まず自分の起動ファイル名は得られるし、普通に[cmd:]commandで、どのコマンドを実行させたいとユーザが思っているのかは解決できる。しかし、-usageはどうしよう。普通に-usageが来たら、busybox本体が反応するとして、--usageなら下請けコマンドのusageかな。
- となると、g01版busyboxのために必要になるのは、指定した内部プログラムに入れ替わるAPIだけかな。呼んで帰ってこれたら一番いいけど、それはまた面倒そうなので、とりあえずは帰らないモードで。
- まあ本来はファイルシステムで解決するべき問題ではある。そう考えると、むしろOSASKのアーカイブ型実行ファイルみたいなものを目指すべきじゃないのか?デフォルトで起動するファイルが決まってはいるけど、オプションであれを可変にすればいい。ARCINFO0.TXTをどれにするか選べれば十分。・・・これだとデータファイルなどもまとめて1ファイル化できる。
- たとえばファイルをいくつかとcpy.g01を入れておくと、自己解凍型プログラムにならないこともない。まあ、個々のファイル名が分かってないと取り出せないけど。
- ということはむしろ案1に近いな。
こめんと欄
Last-modified: 2009-11-21 (土) 00:00:00 (JST) (319d) by k-tan