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

file_descriptor.hpp

64ビットシークのため、<boost/iostreams/device/file_descriptor.hpp>の改良版を作りました。 <hamigaki/iostreams/device/file_descriptor.hpp> file_descriptor.cpp とりあえずコンパイル通しただけで、全然テストしてません。 最初はヘッダだけで済ませようと似非windows.hを作成していたのですが、UNIX用の実装でマクロ_LARGEFILE64_SOURCEを定義して</hamigaki/iostreams/device/file_descriptor.hpp></boost/iostreams/device/file_descriptor.hpp>…

64ビットseek

ZIPの4GB超ファイルサポートを実装しようと思って、7-ZIPで6.8GBほどのZIPファイルを作成し、試していたのですが、4GB超のシークがまともに動くSourceがないことに気が付きました。 hamigaki::iostreams::file_source →オフセットがlongの範囲まで(fseekの制…

version made by

ZIPヘッダに入れる作成時のシステムの番号(version made byの上位バイト)を定数にしようと思って、OSの正式名称やらなんやらをWikipediaで調べていたら、あっという間に時間が過ぎてしまいました。 Wikipediaのリンクを辿りだしたら切りがないですね。 struc…

zip_test

zip_fileもHamigaki.Archiversに移動しました。 ヘッダの構成を弄っただけで、中身はほとんど変わっていません。 合わせてdelete_zipサンプルと簡単なテストも追加しました。 delete_zip.cpp zip_test.cpp zip_crypt_test.cppSF.jpとは別にローカルに作業用S…

エントリのシーク

LHMelt等のGUIアーカイバでは、書庫中のファイルを一覧表示し、ユーザーが選択したファイルのみを取り出すことができます。 LZHの構造上、一覧表示をするためにはアーカイブ全体を読む必要があるものの、各エントリのオフセットを覚えておけば、そのオフセッ…

skip()

昨日から書いていたヘッダパース処理の整理とシークできないデバイスの対応をしました。 <hamigaki/archivers/detail/lzh_header_parser.hpp> raw_lzh_file_source_impl.hppの差分 シークできないデバイスに対応するため、seek()をskip()で置き換えました。 boost::iostreams::skip()を使いたいところですが、</hamigaki/archivers/detail/lzh_header_parser.hpp>…

Wii届きました

周りに買わないと言っておきながら、買ってしまいました。 社長インタビュー読んで「買わねば」と思った次第です。 ソフトは「はじめてのWii」、「Wii Sports」、「ゼルダ」の3本です。 ずっと対戦していたので、ゼルダはほとんど進んでません。 「はじめて…

Level2ヘッダのサイズ

LZHヘッダの処理を手直ししていてバグを見つけました。 raw_lzh_file_sink_impl.hppの差分 raw_lzh_file_source_impl.hppの差分 LZHファイルは終端に1バイトのヌル文字(エンドマーク)を使います。 逆に言えば、ヘッダの1バイト目はヌル文字であってはいけま…

auto_min

Boost.Iostreamsを弄っていると、std::streamsizeとstd::size_tの値を共に使用する場面に遭遇します。 特に小さいほうの値を選択するmin()操作はよく出てきます。 class hoge_source { public: std::streamsize read(char* s, std::streamsize n) { BOOST_AS…