2006-12-01から1ヶ月間の記事一覧

svr4_chksum

cpioのCRCフォーマット(svr4_chksum)に対応しました。 cpio_file_sink_impl.hpp cpio_file_source_impl.hpp raw_cpio_file_sink_impl.hppの差分 raw_cpio_file_source_impl.hppの差分 チェックサムに関係ないコードはraw_cpio_file_{sink,source}に移動して…

SVR4 cpio

cpioのsvr4フォーマットに対応しました。 cpio_file_sink_impl.hppの差分 cpio_file_source_impl.hppの差分 svr4フォーマットにはチェックサム付きのCRCフォーマット(実際にはCRCでなく、ただのチェックサムが付く)もあります。 ただ、これを実装しようとす…

binary cpio

cpioのbinaryフォーマットに対応しました。 cpio_file_sink_impl.hppの差分 cpio_file_source_impl.hppの差分 実装の過程で、binary_io_traitsのバグが見つかりました。 binary_io.hppの差分 char以外の配列のバイナリ読み書きがバグってました。 この辺りの…

cpio_file

結局、cpio_file_source/cpio_file_sinkを作りました。 cpio_file_sink_impl.hpp cpio_file_source_impl.hpp フォーマットの定数にposix(odc)、svr4(newc)、svr4_chksum(crc)、binary(bin)を用意していますが、まだposixしか対応してません。 GNU cpioの既定…

アーカイブの更新

ようやく追記の問題が解決しました。 これまで、lzh_file_append_sinkのような追記用のクラスを用意して、ファイルが存在すれば追記モード、なければlzh_file_sinkと同じ動作といったものを想像していました。 ar::lzh_file_append_sink sink("test.lzh"); a…

cpio

追記サポートが上手くまとまらず、気分転換にcpioフォーマットでも実装しようかなぁと思い、調べてみました。 フォーマット自体は単純なのですが、 ファイルサイズが32ビット(フォーマットによっては33ビットまでは可能) i-node番号が16ビット(正確には18ビ…

typeof on VC8

久々にML読んでたら、VC8でもバグを利用してtypeof(native版)が実装できたらしいことを知りました。 http://thread.gmane.org/gmane.comp.lib.boost.devel/152648/focus=152648 なんか、MLでの反応が面白いです。 この修正がBoost 1.34に入らないであろうこ…

file_attributes

使い勝手が悪かったので、file_attributesとfile_permissionsにファイル種別のビットも混ぜました。 取得の場合にのみ有効で、設定時は無視されます。 Win32やPOSIXのAPIと同じ仕様ということです。 file_status.hppの差分 file_attributesとfile_permission…

SeekableDevice

SeekableSourceかつSeekableSinkなコンセプトを追加しようとして困りました。 Boost.IostreamsだとSeekableDeviceになるんですけど、自分は別の意味(フィルタでないシーク可能なもの)で既に使っていました。 意味が違うと紛らわしいので、Boost.Iostreamsに…

ファイルへの追記

Hamigaki.Archiversの追記サポートが中途半端なままだったので再開です。 追記の場合、ほとんどのフォーマットと読み書き両用でファイルを開く必要があるため、まずは準備としてfile_sinkとfile_sourceをまとめたfileクラスを追加しました。 <hamigaki/iostreams/device/file.hpp> 同様にfile_des</hamigaki/iostreams/device/file.hpp>…

Boost.Testが動かない

急にBoost.Testが動かなくなりました。 Boost.Testの中でSEGVになって無限ループになる場合があれば、普通に動く場合もあり、なんか変です。 多分、昨日Cygwinのバージョンアップしてからだと思います。 一旦バージョン戻してみます。 (12/24 追記) 原因はCy…

ldが遅い件

ldが遅すぎなのが気になって、ちょっとテストしてみました。 テストに使ったのは、チュートリアルのZIP作成サンプルです。 % time g++ -c -I/home/hamigaki/src/hamigaki -I/usr/include/boost-1_33_1 mk_zip.cpp real 0m16.954s user 0m15.685s sys 0m1.186…

ディレクトリエントリ

ディレクトリの説明を追加しました。 http://hamigaki.sourceforge.jp/doc/html/archivers/advanced_topics.html あとは、バグ潰しとか、VC8 SP1にしてから初の退行テストを行いました。 http://hamigaki.sourceforge.jp/status/ 変更点: tar_file_sourceで…

続 ヘッダのコンセプト化

ヘッダにファイル種別を設定する操作の問題点を挙げてみます。 MS-DOSファイル属性、UNIXパーミッション共に、ファイルの種類と付加的な情報が混在している ZIPのようにMS-DOSファイル属性とUNIXパーミッションの両方を持つ場合、両者の整合性をとる必要があ…

VC++2005 SP1の変更点

C++

Visual Studio 2005 SP1をインストールしました。 予めCRTソースをバックアップしておいたので、C/C++標準ライブラリの差分をざっと確認したところ、こんな感じでした。 search_n()のアルゴリズムバグの修正 list::remove()で削除前に引数が一時オブジェクト…

ヘッダのコンセプト化

チュートリアルでディレクトリを扱うサンプルを書こうとして詰まりました。 フォーマット毎にファイル属性の表現方法が異なるため、説明もバラバラになってしまいます。 とりあえず、ファイル種別判定用にBoost.Filesystemライクなメンバ関数is_regular()、i…

継承→包含

これまで、 class lzh_file_source : public basic_lzh_file_source<hamigaki::iostreams::file_source> { public: explicit lzh_file_source(const std::string&); }; のように手抜きで継承していた箇所を包含を使って書き直しました。 lzh_file.hppの差分 ドキュメント上は「Exposition only</hamigaki::iostreams::file_source>…

using-class

BoostBookのメモ。 <using-class name="hamigaki::archivers::basic_tar_file_sink"/> とすると、 <methodname>create_entry</methodname> で、hamigaki::archivers::basic_tar_file_sink::create_entryにリンクを張れます。 using-classを使わない場合は、 <methodname alt="hamigaki::archivers::basic_tar_file_sink::create_entry">create_entry</methodname></using-class>

チュートリアルの続き

引き続きチュートリアルを書いています。 今日は「tarファイルの展開」と「ZIPファイルの作成」を書きました。 http://hamigaki.sourceforge.jp/doc/html/archivers/tutorial.html tarの展開は単純なので、ZIPの書き込みを載せておきます。 #include <hamigaki/archivers/zip_file.hpp> #inclu</hamigaki/archivers/zip_file.hpp>…

チュートリアルを書き始めました

ArchiverとExtractorのコンセプトをまとめて、チュートリアルを書き始めました。 http://hamigaki.sourceforge.jp/doc/html/Archiver.html http://hamigaki.sourceforge.jp/doc/html/Extractor.html 最初の例として圧縮がないため単純なtarを選びました。 #i…

SeekableSink

今日もドキュメントの整備です。 以前にも書きましたが、BoostBookはテンプレート仮引数の名前がコンセプト名と一致する場合、自動でリンクを張ってくれます。 テンプレート仮引数に適切な名前を与えるだけで、その型に対する制約を示すことができ、非常に便…

シンタックス・ハイライトの元ネタ

昨日導入されたシンタックス・ハイライトの記法ですが、対応言語が多いのと、妙にマイナーなのが混じっていることから推測するにエディタか何かの設定ファイルを流用しているに違いありません。 最初の10個くらいのファイルタイプでググった感触としては、元…

__attribute__の括弧

C

Binary 2.0カンファレンス2006 に動画とIRCで参加してきました。 http://0xcc.net/blog/archives/000149.html 動画をキャプチャしながら見ていたので、IRCとのタイムラグが結構ありました。 技術的にはブログなどで既知のものが多かったんですが、PS3 Linux…

引き続きドキュメント書き

tarとZIPのドキュメントも追加しました。 http://hamigaki.sourceforge.jp/doc/html/archivers/reference.html ヘッダの各項目の説明も書いています。 必要なライブラリとカスタマイズ用のマクロもまとめました。 http://hamigaki.sourceforge.jp/doc/html/a…

non-intrusive で ad hoc な interface 定義の導入

C++

http://d.hatena.ne.jp/Cryolite/20061213#p2 に関して。 あくまでストリーム入出力とlexical_castに限って、参照を保持するアダプタクラスを作成することを考えます。 次のような使用を想定します。 #include class hoge; hoge func(); int main() { hoge x…

ドキュメント書き始めました

各フォーマットのサポート状況とlzh_file.hppのリファレンスを書きました。 http://hamigaki.sourceforge.jp/libs/archivers ドキュメント書いていて気が付いた未実装項目 LZHのh1フォーマットの更新日時ヘッダ OptimallyBufferedコンセプトのサポート ZIPの…

アーカイバ関連コード移行

tar_file.hppの移行も終わり、アーカイバ関連コードを完全にHamigaki.Archiversに移動しました。 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/hamigaki/trunk/hamigaki/archivers/?root=hamigaki Hamigaki.Iostreamsに残していたヘッダも削除したので、 …

LZHの4GB超対応

ZIPに続き、LZHも4GB超ファイルに対応しました。 raw_lzh_file_sink_impl.hppの差分 実際には随分前に4GB対応したつもりだったのですが、ディスク容量の都合でテストできず、バグったままになっていました。 試してみると、ヘッダの内容が同じであるにも関わ…

Zip64の書き出し

ようやくZip64の書き出しに成功しました。 raw_zip_file_sink_impl.hppの差分 Regression Testsも更新しました。 http://hamigaki.sourceforge.jp/status/ CodeWarriorでFailになっているのはBoost.Iostreamsのビルド忘れていた所為です。 あとでビルドして…

Zip64の読み込み

file_descriptorのバグ修正とZIPのZip64(4GB超データのサポート)の読み込みに対応しました。 file_descriptor.hppの差分 file_descriptor.cppの差分 raw_zip_file_source_impl.hppの差分 file_descriptorのテストも追加しています。 file_descriptor_test.cp…