Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

LhaLib

LhaLib

LHaの抽出機能をRuby拡張ライブラリ化したもの

ダウンロード

パッケージ

http://www.artonx.org/data/lhalib

ソースコードリポジトリ

https://github.com/arton/lhalib

ライセンス

LGPL

オリジナルLHa for Unixの再配布条件の項番6にしたがって、派生した別ソフトウェアとして扱う。

使い方

xというメソッドのみ定義してあります。指定されたファイルをカレントディレクトリにディレクトリ情報付きで展開します。

require 'lhalib'
# 単に展開
LhaLib::x('lharchive.lzh')
  • 返値:展開済みファイル数(ディレクトリ含む)
require 'lhalib'
# 展開しながら情報を取得
LhaLib::x('lharchive.lzh') do |info|
  puts "name=#{info[:name]}"
  puts "filesize=#{info[:original_size]}"
  puts "timestamp=#{info[:stamp]}"
  puts "permission=#{info[:permission] & 0777}"
  if (info[:permission] & 040000) != 0
    puts 'directory'
  end
end
  • ブロック: 各ファイルの展開直後に、展開情報を与える
  • info: ヘッダ情報のハッシュ
  • 返値:展開済みファイル数(ディレクトリ含む)

注意事項

ブロックを与えた場合、Rubyレベルでもスレッドセーフではなくなります。グローバル変数を使いまくりなので。ブロックを与えなければライブラリ内ですべての処理が完了するため、Rubyレベルでスレッドセーフです。

その他

相当手抜きな実装なので、いろいろ不都合はありそうですので、試していただけたら嬉しいです。

謝辞

元のLHa for Unixを開発された田川さん、沖さん、綿崎さん、Sourceforgeでメンテを続けられている新井さん、DOS版LHaを開発された吉崎栄泰さん, その他の開発者各位に感謝します。

English page

Last modified:2014/10/04 21:30:43
Keyword(s):
References:[LhaLib] [LhaLibEn]