libmspack 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.travis.yml +5 -0
  4. data/.yardopts +1 -0
  5. data/Gemfile +4 -0
  6. data/README.md +75 -0
  7. data/Rakefile +22 -0
  8. data/UNLICENSE +24 -0
  9. data/ext/Rakefile +16 -0
  10. data/ext/i386-windows/libmspack.dll +0 -0
  11. data/ext/libmspack/AUTHORS +12 -0
  12. data/ext/libmspack/COPYING.LIB +504 -0
  13. data/ext/libmspack/ChangeLog +491 -0
  14. data/ext/libmspack/Makefile.am +100 -0
  15. data/ext/libmspack/NEWS +0 -0
  16. data/ext/libmspack/README +130 -0
  17. data/ext/libmspack/TODO +8 -0
  18. data/ext/libmspack/cleanup.sh +9 -0
  19. data/ext/libmspack/configure.ac +50 -0
  20. data/ext/libmspack/debian/changelog +6 -0
  21. data/ext/libmspack/debian/control +14 -0
  22. data/ext/libmspack/debian/rules +101 -0
  23. data/ext/libmspack/doc/Doxyfile.in +22 -0
  24. data/ext/libmspack/doc/Makefile.in +14 -0
  25. data/ext/libmspack/doc/szdd_kwaj_format.html +331 -0
  26. data/ext/libmspack/libmspack.pc.in +10 -0
  27. data/ext/libmspack/mspack/cab.h +127 -0
  28. data/ext/libmspack/mspack/cabc.c +24 -0
  29. data/ext/libmspack/mspack/cabd.c +1444 -0
  30. data/ext/libmspack/mspack/chm.h +122 -0
  31. data/ext/libmspack/mspack/chmc.c +24 -0
  32. data/ext/libmspack/mspack/chmd.c +1392 -0
  33. data/ext/libmspack/mspack/crc32.c +95 -0
  34. data/ext/libmspack/mspack/crc32.h +17 -0
  35. data/ext/libmspack/mspack/des.h +15 -0
  36. data/ext/libmspack/mspack/hlp.h +33 -0
  37. data/ext/libmspack/mspack/hlpc.c +24 -0
  38. data/ext/libmspack/mspack/hlpd.c +24 -0
  39. data/ext/libmspack/mspack/kwaj.h +118 -0
  40. data/ext/libmspack/mspack/kwajc.c +24 -0
  41. data/ext/libmspack/mspack/kwajd.c +561 -0
  42. data/ext/libmspack/mspack/lit.h +35 -0
  43. data/ext/libmspack/mspack/litc.c +24 -0
  44. data/ext/libmspack/mspack/litd.c +24 -0
  45. data/ext/libmspack/mspack/lzss.h +66 -0
  46. data/ext/libmspack/mspack/lzssd.c +93 -0
  47. data/ext/libmspack/mspack/lzx.h +221 -0
  48. data/ext/libmspack/mspack/lzxc.c +18 -0
  49. data/ext/libmspack/mspack/lzxd.c +895 -0
  50. data/ext/libmspack/mspack/mspack.def +28 -0
  51. data/ext/libmspack/mspack/mspack.h +2353 -0
  52. data/ext/libmspack/mspack/mszip.h +126 -0
  53. data/ext/libmspack/mspack/mszipc.c +18 -0
  54. data/ext/libmspack/mspack/mszipd.c +514 -0
  55. data/ext/libmspack/mspack/oab.h +60 -0
  56. data/ext/libmspack/mspack/oabc.c +24 -0
  57. data/ext/libmspack/mspack/oabd.c +408 -0
  58. data/ext/libmspack/mspack/qtm.h +128 -0
  59. data/ext/libmspack/mspack/qtmc.c +18 -0
  60. data/ext/libmspack/mspack/qtmd.c +489 -0
  61. data/ext/libmspack/mspack/readbits.h +207 -0
  62. data/ext/libmspack/mspack/readhuff.h +173 -0
  63. data/ext/libmspack/mspack/sha.h +15 -0
  64. data/ext/libmspack/mspack/system.c +239 -0
  65. data/ext/libmspack/mspack/system.h +124 -0
  66. data/ext/libmspack/mspack/szdd.h +39 -0
  67. data/ext/libmspack/mspack/szddc.c +24 -0
  68. data/ext/libmspack/mspack/szddd.c +247 -0
  69. data/ext/libmspack/rebuild.sh +8 -0
  70. data/ext/libmspack/test/cabd_c10 +19 -0
  71. data/ext/libmspack/test/cabd_compare +34 -0
  72. data/ext/libmspack/test/cabd_md5.c +161 -0
  73. data/ext/libmspack/test/cabd_memory.c +179 -0
  74. data/ext/libmspack/test/cabd_test.c +386 -0
  75. data/ext/libmspack/test/cabrip.c +81 -0
  76. data/ext/libmspack/test/chmd_compare +38 -0
  77. data/ext/libmspack/test/chmd_find.c +95 -0
  78. data/ext/libmspack/test/chmd_md5.c +67 -0
  79. data/ext/libmspack/test/chmd_order.c +144 -0
  80. data/ext/libmspack/test/chminfo.c +284 -0
  81. data/ext/libmspack/test/chmx.c +216 -0
  82. data/ext/libmspack/test/error.h +22 -0
  83. data/ext/libmspack/test/expand.c +79 -0
  84. data/ext/libmspack/test/md5.c +457 -0
  85. data/ext/libmspack/test/md5.h +165 -0
  86. data/ext/libmspack/test/md5_fh.h +123 -0
  87. data/ext/libmspack/test/msdecompile_md5 +24 -0
  88. data/ext/libmspack/test/msexpand_md5 +39 -0
  89. data/ext/libmspack/test/multifh.c +435 -0
  90. data/ext/libmspack/test/oabx.c +41 -0
  91. data/ext/libmspack/test/test_files/cabd/1.pl +84 -0
  92. data/ext/libmspack/test/test_files/cabd/2.pl +75 -0
  93. data/ext/libmspack/test/test_files/cabd/bad_folderindex.cab +0 -0
  94. data/ext/libmspack/test/test_files/cabd/bad_nofiles.cab +0 -0
  95. data/ext/libmspack/test/test_files/cabd/bad_nofolders.cab +0 -0
  96. data/ext/libmspack/test/test_files/cabd/bad_signature.cab +0 -0
  97. data/ext/libmspack/test/test_files/cabd/multi_basic_pt1.cab +0 -0
  98. data/ext/libmspack/test/test_files/cabd/multi_basic_pt2.cab +0 -0
  99. data/ext/libmspack/test/test_files/cabd/multi_basic_pt3.cab +0 -0
  100. data/ext/libmspack/test/test_files/cabd/multi_basic_pt4.cab +0 -0
  101. data/ext/libmspack/test/test_files/cabd/multi_basic_pt5.cab +0 -0
  102. data/ext/libmspack/test/test_files/cabd/normal_255c_filename.cab +0 -0
  103. data/ext/libmspack/test/test_files/cabd/normal_2files_1folder.cab +0 -0
  104. data/ext/libmspack/test/test_files/cabd/partial_nodata.cab +0 -0
  105. data/ext/libmspack/test/test_files/cabd/partial_nofiles.cab +0 -0
  106. data/ext/libmspack/test/test_files/cabd/partial_nofolder.cab +0 -0
  107. data/ext/libmspack/test/test_files/cabd/partial_shortextheader.cab +0 -0
  108. data/ext/libmspack/test/test_files/cabd/partial_shortfile1.cab +0 -0
  109. data/ext/libmspack/test/test_files/cabd/partial_shortfile2.cab +0 -0
  110. data/ext/libmspack/test/test_files/cabd/partial_shortfolder.cab +0 -0
  111. data/ext/libmspack/test/test_files/cabd/partial_shortheader.cab +0 -0
  112. data/ext/libmspack/test/test_files/cabd/partial_str_nofname.cab +0 -0
  113. data/ext/libmspack/test/test_files/cabd/partial_str_noninfo.cab +0 -0
  114. data/ext/libmspack/test/test_files/cabd/partial_str_nonname.cab +0 -0
  115. data/ext/libmspack/test/test_files/cabd/partial_str_nopinfo.cab +0 -0
  116. data/ext/libmspack/test/test_files/cabd/partial_str_nopname.cab +0 -0
  117. data/ext/libmspack/test/test_files/cabd/partial_str_shortfname.cab +0 -0
  118. data/ext/libmspack/test/test_files/cabd/partial_str_shortninfo.cab +0 -0
  119. data/ext/libmspack/test/test_files/cabd/partial_str_shortnname.cab +0 -0
  120. data/ext/libmspack/test/test_files/cabd/partial_str_shortpinfo.cab +0 -0
  121. data/ext/libmspack/test/test_files/cabd/partial_str_shortpname.cab +0 -0
  122. data/ext/libmspack/test/test_files/cabd/reserve_---.cab +0 -0
  123. data/ext/libmspack/test/test_files/cabd/reserve_--D.cab +0 -0
  124. data/ext/libmspack/test/test_files/cabd/reserve_-F-.cab +0 -0
  125. data/ext/libmspack/test/test_files/cabd/reserve_-FD.cab +0 -0
  126. data/ext/libmspack/test/test_files/cabd/reserve_H--.cab +0 -0
  127. data/ext/libmspack/test/test_files/cabd/reserve_H-D.cab +0 -0
  128. data/ext/libmspack/test/test_files/cabd/reserve_HF-.cab +0 -0
  129. data/ext/libmspack/test/test_files/cabd/reserve_HFD.cab +0 -0
  130. data/ext/libmspack/test/test_files/cabd/search_basic.cab +0 -0
  131. data/ext/libmspack/test/test_files/cabd/search_tricky1.cab +0 -0
  132. data/ext/libmspack/winbuild.sh +26 -0
  133. data/ext/x86_64-windows/libmspack.dll +0 -0
  134. data/lib/libmspack/constants.rb +9 -0
  135. data/lib/libmspack/exceptions.rb +12 -0
  136. data/lib/libmspack/mscab.rb +722 -0
  137. data/lib/libmspack/mschm.rb +301 -0
  138. data/lib/libmspack/mshlp.rb +15 -0
  139. data/lib/libmspack/mskwaj.rb +124 -0
  140. data/lib/libmspack/mslit.rb +18 -0
  141. data/lib/libmspack/msoab.rb +36 -0
  142. data/lib/libmspack/mspack.rb +208 -0
  143. data/lib/libmspack/msszdd.rb +81 -0
  144. data/lib/libmspack/system.rb +84 -0
  145. data/lib/libmspack/version.rb +4 -0
  146. data/lib/libmspack.rb +121 -0
  147. data/libmspack.gemspec +33 -0
  148. data/spec/libmspack_spec.rb +26 -0
  149. data/spec/spec_helper.rb +5 -0
  150. metadata +309 -0
@@ -0,0 +1,81 @@
1
+ module LibMsPack
2
+ module MsSzdd
3
+ module Constants
4
+ MSSZDDC_PARAM_MISSINGCHAR = 0
5
+ MSSZDD_FMT_NORMAL = 0
6
+ MSSZDD_FMT_QBASIC = 1
7
+ end
8
+
9
+ class MsSzdddHeader < FFI::Struct
10
+ layout({
11
+ :format => :int,
12
+ :length => :off_t,
13
+ :missing_char => :char
14
+ })
15
+
16
+ def format
17
+ self[:format]
18
+ end
19
+
20
+ def length
21
+ self[:length]
22
+ end
23
+
24
+ def missing_char
25
+ self[:missing_char]
26
+ end
27
+ end
28
+
29
+ class MsSzddCompressor < FFI::Struct
30
+ layout({
31
+ :compress => callback([ :pointer, :string, :string, :off_t ], :int),
32
+ :set_param => callback([ :pointer, :int, :uint ], :int),
33
+ :last_error => callback([ :pointer ], :int)
34
+ })
35
+
36
+ def compress
37
+ self[:compress]
38
+ end
39
+
40
+ def set_param
41
+ self[:set_param]
42
+ end
43
+
44
+ def last_error
45
+ self[:last_error]
46
+ end
47
+
48
+ end
49
+
50
+ class MsSzddDecompressor < FFI::Struct
51
+ layout({
52
+ :open => callback([ :pointer, :string ], :pointer),
53
+ :close => callback([ :pointer, :pointer ], :void),
54
+ :extract => callback([ :pointer, :pointer, :string ], :int),
55
+ :decompress => callback([ :pointer, :string, :string ], :int),
56
+ :last_error => callback([ :pointer ], :int)
57
+ })
58
+
59
+ def open
60
+ self[:open]
61
+ end
62
+
63
+ def close
64
+ self[:close]
65
+ end
66
+
67
+ def extract
68
+ self[:extract]
69
+ end
70
+
71
+ def decompress
72
+ self[:decompress]
73
+ end
74
+
75
+ def last_error
76
+ self[:last_error]
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,84 @@
1
+ module LibMsPack
2
+ module RubySystem
3
+
4
+ MsPack::RubyPackSystem.open = FFI::Function.new(MsPack::MsPackFile.ptr, [ MsPack::MsPackSystem.ptr, :string, :int ]) do |system, filename, mode|
5
+ case mode
6
+ when LibMsPack::MSPACK_SYS_OPEN_READ
7
+ fmode = "rb"
8
+ when LibMsPack::MSPACK_SYS_OPEN_WRITE
9
+ fmode = "wb"
10
+ when LibMsPack::MSPACK_SYS_OPEN_UPDATE
11
+ fmode = "r+b"
12
+ when LibMsPack::MSPACK_SYS_OPEN_APPEND
13
+ fmode = "ab"
14
+ else
15
+ return nil
16
+ end
17
+
18
+ file = MsPack::MsPackFile.new
19
+ file.name = filename
20
+ file.file = File.new(filename, fmode)
21
+ file
22
+ end
23
+
24
+ MsPack::RubyPackSystem.close = FFI::Function.new(:void, [ MsPack::MsPackFile.ptr ]) do |file|
25
+ return nil unless file
26
+ file.file.close if file.file
27
+ file.file = nil
28
+ file.name = nil
29
+ file = nil
30
+ end
31
+
32
+ MsPack::RubyPackSystem.read = FFI::Function.new(:int, [ MsPack::MsPackFile.ptr, :buffer_inout, :int ]) do |file, buffer, bytes|
33
+ return -1 if file.nil? or buffer.nil? or bytes.nil? or bytes < 0
34
+ file.file.read(bytes, buffer)
35
+ end
36
+
37
+ MsPack::RubyPackSystem.write = FFI::Function.new(:int, [ MsPack::MsPackFile.ptr, :buffer_inout, :int ]) do |file, buffer, bytes|
38
+ return -1 if file.nil? or buffer.nil? or bytes.nil? or bytes < 0
39
+ file.file.write(buffer.get_string(bytes))
40
+ end
41
+
42
+ MsPack::RubyPackSystem.seek = FFI::Function.new(:int, [ MsPack::MsPackFile.ptr, :off_t, :int ]) do |file, offset, mode|
43
+ return nil unless file
44
+ case mode
45
+ when LibMsPack::MSPACK_SYS_SEEK_START
46
+ fmode = IO::SEEK_START
47
+ when LibMsPack::MSPACK_SYS_SEEK_CUR
48
+ fmode = IO::SEEK_CUR
49
+ when LibMsPack::MSPACK_SYS_SEEK_END
50
+ fmode = IO::SEEK_END
51
+ else
52
+ return nil
53
+ end
54
+ file.file.seek(offset, fmode)
55
+ end
56
+
57
+ MsPack::RubyPackSystem.tell = FFI::Function.new(:int, [ MsPack::MsPackFile.ptr ]) do |file|
58
+ return nil unless file
59
+ file.tell
60
+ end
61
+
62
+ MsPack::RubyPackSystem.message = FFI::Function.new(:int, [ MsPack::MsPackFile.ptr, :string, :varargs ]) do |file, format, vars|
63
+ $stderr.puts file.name if file
64
+ $stderr.printf(format, vars)
65
+ $stderr.puts
66
+ $stderr.flush
67
+ end
68
+
69
+ MsPack::RubyPackSystem.alloc = FFI::Function.new(:pointer, [ :size_t ]) do |bytes|
70
+ FFI::MemoryPointer.new(bytes)
71
+ end
72
+
73
+ MsPack::RubyPackSystem.free = FFI::Function.new(:void, [ :pointer ]) do |buffer|
74
+ buffer.free
75
+ buffer = nil
76
+ end
77
+
78
+ MsPack::RubyPackSystem.copy = FFI::Function.new(:void, [ :buffer_in, :buffer_out, :size_t ]) do |src, dst, bytes|
79
+ dst.write_string(src.read_string(bytes), bytes)
80
+ end
81
+
82
+ MsPack::RubyPackSystem.copy = nil
83
+ end
84
+ end
@@ -0,0 +1,4 @@
1
+ module LibMsPack
2
+ # Version
3
+ VERSION = '0.0.1'
4
+ end
data/lib/libmspack.rb ADDED
@@ -0,0 +1,121 @@
1
+ require 'ffi'
2
+ require 'ffi-compiler/loader'
3
+ require 'libmspack/version'
4
+ require 'libmspack/exceptions'
5
+ require 'libmspack/mspack'
6
+ require 'libmspack/system'
7
+ require 'libmspack/mscab'
8
+ require 'libmspack/mschm'
9
+ require 'libmspack/mshlp'
10
+ require 'libmspack/mskwaj'
11
+ require 'libmspack/mslit'
12
+ require 'libmspack/msoab'
13
+ require 'libmspack/msszdd'
14
+ require 'libmspack/constants'
15
+
16
+ module LibMsPack
17
+ extend FFI::Library
18
+ ffi_lib FFI::Compiler::Loader.find('libmspack')
19
+
20
+ include LibMsPack::Constants
21
+ include LibMsPack::MsPack
22
+ include LibMsPack::MsCab
23
+ include LibMsPack::MsChm
24
+ include LibMsPack::MsHlp
25
+ include LibMsPack::MsKwaj
26
+ include LibMsPack::MsLit
27
+ include LibMsPack::MsOab
28
+ include LibMsPack::MsSzdd
29
+
30
+ attach_function :SysSelfTestInternal, :mspack_sys_selftest_internal, [ :int ], :int
31
+
32
+ # Enquire about the binary compatibility version of a specific interface in the library.
33
+ #
34
+ # Currently, the following interfaces are defined:
35
+ #
36
+ # * MSPACK_VER_LIBRARY: the overall library
37
+ # * MSPACK_VER_SYSTEM: the MsPackSystem interface
38
+ # * MSPACK_VER_MSCABD: the MsCabDecompressor interface
39
+ # * MSPACK_VER_MSCABC: the MsCabCompressor interface
40
+ # * MSPACK_VER_MSCHMD: the MsChmDecompressor interface
41
+ # * MSPACK_VER_MSCHMC: the MsChmCompressor interface
42
+ # * MSPACK_VER_MSLITD: the MsLitDecompressor interface
43
+ # * MSPACK_VER_MSLITC: the MsLitCompressor interface
44
+ # * MSPACK_VER_MSHLPD: the MsHlpDecompressor interface
45
+ # * MSPACK_VER_MSHLPC: the MsHlpCompressor interface
46
+ # * MSPACK_VER_MSSZDDD: the MsSzddDecompressor interface
47
+ # * MSPACK_VER_MSSZDDC: the MsSzddCompressor interface
48
+ # * MSPACK_VER_MSKWAJD: the MsKwajDecompressor interface
49
+ # * MSPACK_VER_MSKWAJC: the MsKwajCompressor interface
50
+ # * MSPACK_VER_MSOABD: the MsOabDecompressor interface
51
+ # * MSPACK_VER_MSOABC: the MsOabCompressor interface
52
+ #
53
+ # The result of the function should be interpreted as follows:
54
+ #
55
+ # * -1: this interface is completely unknown to the library
56
+ # * 0: this interface is known, but non-functioning
57
+ # * 1: this interface has all basic functionality
58
+ # * 2, 3, ...: this interface has additional functionality, clearly marked in the documentation as "version 2", "version 3" and so on.
59
+ #
60
+ # @!method Version(entity)
61
+ # @param [Fixnum] entity the interface to request current version of
62
+ # @return [Fixnum] the version of the requested interface
63
+ attach_function :Version, :mspack_version, [ :int ], :int
64
+
65
+ # Creates a new CAB compressor.
66
+ # @!method CreateCabCompressor(sys)
67
+ # @param [MsPack::MsPackSystem, nil] sys a custom mspack system, or nil to use the default
68
+ # @return [MsCab::MsCabCompressor, nil]
69
+ attach_function :CreateCabCompressor, :mspack_create_cab_compressor, [ MsPackSystem.ptr ], MsCabCompressor.ptr
70
+
71
+ # Destroys an existing CAB compressor.
72
+ # @!method DestroyCabCompressor(system)
73
+ # @param [MsCab::MsCabCompressor] compressor the MsCab::MsCabCompressor to destroy
74
+ attach_function :DestroyCabCompressor, :mspack_destroy_cab_compressor, [ MsCabCompressor.ptr ], :void
75
+
76
+ # Creates a new CAB decompressor.
77
+ # @!method CreateCabDecompressor(sys)
78
+ # @param [MsPack::MsPackSystem, nil] sys a custom mspack system, or nil to use the default
79
+ # @return [MsCab::MsCabDecompressor, nil]
80
+ attach_function :CreateCabDecompressor, :mspack_create_cab_decompressor, [ MsPackSystem.ptr ], MsCabDecompressor.ptr
81
+
82
+ # Destroys an existing CAB decompressor.
83
+ # @!method DestroyCabDecompressor(decompressor)
84
+ # @param [MsCab::MsCabDecompressor] decompressor the MsCab::MsCabDecompressor to destroy
85
+ attach_function :DestroyCabDecompressor, :mspack_destroy_cab_decompressor, [ MsCabDecompressor.ptr ], :void
86
+
87
+ attach_function :CreateChmCompressor, :mspack_create_chm_compressor, [ MsPackSystem.ptr ], :pointer
88
+ attach_function :DestroyChmCompressor, :mspack_destroy_chm_compressor, [ :pointer ], :void
89
+ attach_function :CreateChmDecompressor, :mspack_create_chm_decompressor, [ MsPackSystem.ptr ], :pointer
90
+ attach_function :DestroyChmDecompressor, :mspack_destroy_chm_decompressor, [ :pointer ], :void
91
+ attach_function :CreateLitCompressor, :mspack_create_lit_compressor, [ MsPackSystem.ptr ], MsLitCompressor.ptr
92
+ attach_function :DestroyLitCompressor, :mspack_destroy_lit_compressor, [ MsLitCompressor.ptr ], :void
93
+ attach_function :CreateLitDecompressor, :mspack_create_lit_decompressor, [ MsPackSystem.ptr ], MsLitDecompressor.ptr
94
+ attach_function :DestroyLitDecompressor, :mspack_destroy_lit_decompressor, [ MsLitDecompressor.ptr ], :void
95
+ attach_function :CreateHlpCompressor, :mspack_create_hlp_compressor, [ MsPackSystem.ptr ], MsHlpCompressor.ptr
96
+ attach_function :DestroyHlpCompressor, :mspack_destroy_hlp_compressor, [ MsHlpCompressor.ptr ], :void
97
+ attach_function :CreateHlpDecompressor, :mspack_create_hlp_decompressor, [ MsPackSystem.ptr ], MsHlpDecompressor.ptr
98
+ attach_function :DestroyHlpDecompressor, :mspack_destroy_hlp_decompressor, [ MsHlpDecompressor.ptr ], :void
99
+ attach_function :CreateSzddCompressor, :mspack_create_szdd_compressor, [ MsPackSystem.ptr ], :pointer
100
+ attach_function :DestroySzddCompressor, :mspack_destroy_szdd_compressor, [ :pointer ], :void
101
+ attach_function :CreateSzddDecompressor, :mspack_create_szdd_decompressor, [ MsPackSystem.ptr ], :pointer
102
+ attach_function :DestroySzddDecompressor, :mspack_destroy_szdd_decompressor, [ :pointer ], :void
103
+ attach_function :CreateKwajCompressor, :mspack_create_kwaj_compressor, [ MsPackSystem.ptr ], :pointer
104
+ attach_function :DestroyKwajCompressor, :mspack_destroy_kwaj_compressor, [ :pointer ], :void
105
+ attach_function :CreateKwajDecompressor, :mspack_create_kwaj_decompressor, [ MsPackSystem.ptr ], :pointer
106
+ attach_function :DestroyKwajDecompressor, :mspack_destroy_kwaj_decompressor, [ :pointer ], :void
107
+ attach_function :CreateOabCompressor, :mspack_create_oab_compressor, [ MsPackSystem.ptr ], :pointer
108
+ attach_function :DestroyOabCompressor, :mspack_destroy_oab_compressor, [ :pointer ], :void
109
+ attach_function :CreateOabDecompressor, :mspack_create_oab_decompressor, [ MsPackSystem.ptr ], :pointer
110
+ attach_function :DestroyOabDecompressor, :mspack_destroy_oab_decompressor, [ :pointer ], :void
111
+
112
+ # System self-test function, to ensure both library and calling program can use one another.
113
+ #
114
+ # A result of MSPACK_ERR_OK means the library and caller are compatible. Any other result indicates that the library and caller are not compatible and should not be used. In particular, a value of MSPACK_ERR_SEEK means the library and caller use different off_t datatypes.
115
+ #
116
+ # @return [Fixnum] the result of the self-test
117
+ def self.SysSelfTest
118
+ LibMsPack.SysSelfTestInternal(8)
119
+ end
120
+
121
+ end
data/libmspack.gemspec ADDED
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'libmspack/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'libmspack'
8
+ spec.version = LibMsPack::VERSION
9
+ spec.authors = ['Dāvis']
10
+ spec.email = ['davispuh@gmail.com']
11
+ spec.description = 'A library for compressing and decompressing some loosely related Microsoft compression formats, CAB, CHM, HLP, LIT, KWAJ and SZDD.'
12
+ spec.summary = 'Ruby wrapper for libmspack.'
13
+ spec.homepage = 'https://github.com/davispuh/ruby-libmspack'
14
+ spec.license = 'UNLICENSE'
15
+
16
+ spec.platform = Gem::Platform::RUBY
17
+ spec.files = `git ls-files`.split($/)
18
+ spec.files += Dir.glob('ext/**/*')
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
+ spec.require_paths = ['lib']
22
+ spec.extensions << 'ext/Rakefile'
23
+
24
+ spec.add_runtime_dependency 'ffi'
25
+ spec.add_runtime_dependency 'ffi-compiler'
26
+
27
+ spec.add_development_dependency 'bundler'
28
+ spec.add_development_dependency 'rake'
29
+ spec.add_development_dependency 'rspec'
30
+ spec.add_development_dependency 'yard'
31
+ spec.add_development_dependency 'simplecov'
32
+ spec.add_development_dependency 'svn-downloader'
33
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ describe LibMsPack do
5
+
6
+ describe '.MsPackSelfTest' do
7
+ it 'should pass' do
8
+ LibMsPack.SysSelfTest.should eq(LibMsPack::MSPACK_ERR_OK)
9
+ end
10
+ end
11
+
12
+ describe '.Version' do
13
+ it 'should return LIBRARY version' do
14
+ LibMsPack.Version(LibMsPack::MSPACK_VER_LIBRARY).should eq(1)
15
+ end
16
+
17
+ it 'should return SYSTEM version' do
18
+ LibMsPack.Version(LibMsPack::MSPACK_VER_SYSTEM).should eq(1)
19
+ end
20
+
21
+ it 'should return MSCHMD version' do
22
+ LibMsPack.Version(LibMsPack::MSPACK_VER_MSCHMD).should eq(2)
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,5 @@
1
+ # encoding: UTF-8
2
+ require 'simplecov'
3
+
4
+ SimpleCov.start
5
+ require_relative '../lib/libmspack'
metadata ADDED
@@ -0,0 +1,309 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: libmspack
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Dāvis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ffi-compiler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: svn-downloader
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: A library for compressing and decompressing some loosely related Microsoft
126
+ compression formats, CAB, CHM, HLP, LIT, KWAJ and SZDD.
127
+ email:
128
+ - davispuh@gmail.com
129
+ executables: []
130
+ extensions:
131
+ - ext/Rakefile
132
+ extra_rdoc_files: []
133
+ files:
134
+ - ".gitignore"
135
+ - ".travis.yml"
136
+ - ".yardopts"
137
+ - Gemfile
138
+ - README.md
139
+ - Rakefile
140
+ - UNLICENSE
141
+ - ext/Rakefile
142
+ - lib/libmspack.rb
143
+ - lib/libmspack/constants.rb
144
+ - lib/libmspack/exceptions.rb
145
+ - lib/libmspack/mscab.rb
146
+ - lib/libmspack/mschm.rb
147
+ - lib/libmspack/mshlp.rb
148
+ - lib/libmspack/mskwaj.rb
149
+ - lib/libmspack/mslit.rb
150
+ - lib/libmspack/msoab.rb
151
+ - lib/libmspack/mspack.rb
152
+ - lib/libmspack/msszdd.rb
153
+ - lib/libmspack/system.rb
154
+ - lib/libmspack/version.rb
155
+ - libmspack.gemspec
156
+ - spec/libmspack_spec.rb
157
+ - spec/spec_helper.rb
158
+ - ext/i386-windows/libmspack.dll
159
+ - ext/libmspack/AUTHORS
160
+ - ext/libmspack/ChangeLog
161
+ - ext/libmspack/cleanup.sh
162
+ - ext/libmspack/configure.ac
163
+ - ext/libmspack/COPYING.LIB
164
+ - ext/libmspack/debian/changelog
165
+ - ext/libmspack/debian/control
166
+ - ext/libmspack/debian/rules
167
+ - ext/libmspack/doc/Doxyfile.in
168
+ - ext/libmspack/doc/Makefile.in
169
+ - ext/libmspack/doc/szdd_kwaj_format.html
170
+ - ext/libmspack/libmspack.pc.in
171
+ - ext/libmspack/Makefile.am
172
+ - ext/libmspack/mspack/cab.h
173
+ - ext/libmspack/mspack/cabc.c
174
+ - ext/libmspack/mspack/cabd.c
175
+ - ext/libmspack/mspack/chm.h
176
+ - ext/libmspack/mspack/chmc.c
177
+ - ext/libmspack/mspack/chmd.c
178
+ - ext/libmspack/mspack/crc32.c
179
+ - ext/libmspack/mspack/crc32.h
180
+ - ext/libmspack/mspack/des.h
181
+ - ext/libmspack/mspack/hlp.h
182
+ - ext/libmspack/mspack/hlpc.c
183
+ - ext/libmspack/mspack/hlpd.c
184
+ - ext/libmspack/mspack/kwaj.h
185
+ - ext/libmspack/mspack/kwajc.c
186
+ - ext/libmspack/mspack/kwajd.c
187
+ - ext/libmspack/mspack/lit.h
188
+ - ext/libmspack/mspack/litc.c
189
+ - ext/libmspack/mspack/litd.c
190
+ - ext/libmspack/mspack/lzss.h
191
+ - ext/libmspack/mspack/lzssd.c
192
+ - ext/libmspack/mspack/lzx.h
193
+ - ext/libmspack/mspack/lzxc.c
194
+ - ext/libmspack/mspack/lzxd.c
195
+ - ext/libmspack/mspack/mspack.def
196
+ - ext/libmspack/mspack/mspack.h
197
+ - ext/libmspack/mspack/mszip.h
198
+ - ext/libmspack/mspack/mszipc.c
199
+ - ext/libmspack/mspack/mszipd.c
200
+ - ext/libmspack/mspack/oab.h
201
+ - ext/libmspack/mspack/oabc.c
202
+ - ext/libmspack/mspack/oabd.c
203
+ - ext/libmspack/mspack/qtm.h
204
+ - ext/libmspack/mspack/qtmc.c
205
+ - ext/libmspack/mspack/qtmd.c
206
+ - ext/libmspack/mspack/readbits.h
207
+ - ext/libmspack/mspack/readhuff.h
208
+ - ext/libmspack/mspack/sha.h
209
+ - ext/libmspack/mspack/system.c
210
+ - ext/libmspack/mspack/system.h
211
+ - ext/libmspack/mspack/szdd.h
212
+ - ext/libmspack/mspack/szddc.c
213
+ - ext/libmspack/mspack/szddd.c
214
+ - ext/libmspack/NEWS
215
+ - ext/libmspack/README
216
+ - ext/libmspack/rebuild.sh
217
+ - ext/libmspack/test/cabd_c10
218
+ - ext/libmspack/test/cabd_compare
219
+ - ext/libmspack/test/cabd_md5.c
220
+ - ext/libmspack/test/cabd_memory.c
221
+ - ext/libmspack/test/cabd_test.c
222
+ - ext/libmspack/test/cabrip.c
223
+ - ext/libmspack/test/chmd_compare
224
+ - ext/libmspack/test/chmd_find.c
225
+ - ext/libmspack/test/chmd_md5.c
226
+ - ext/libmspack/test/chmd_order.c
227
+ - ext/libmspack/test/chminfo.c
228
+ - ext/libmspack/test/chmx.c
229
+ - ext/libmspack/test/error.h
230
+ - ext/libmspack/test/expand.c
231
+ - ext/libmspack/test/md5.c
232
+ - ext/libmspack/test/md5.h
233
+ - ext/libmspack/test/md5_fh.h
234
+ - ext/libmspack/test/msdecompile_md5
235
+ - ext/libmspack/test/msexpand_md5
236
+ - ext/libmspack/test/multifh.c
237
+ - ext/libmspack/test/oabx.c
238
+ - ext/libmspack/test/test_files/cabd/1.pl
239
+ - ext/libmspack/test/test_files/cabd/2.pl
240
+ - ext/libmspack/test/test_files/cabd/bad_folderindex.cab
241
+ - ext/libmspack/test/test_files/cabd/bad_nofiles.cab
242
+ - ext/libmspack/test/test_files/cabd/bad_nofolders.cab
243
+ - ext/libmspack/test/test_files/cabd/bad_signature.cab
244
+ - ext/libmspack/test/test_files/cabd/multi_basic_pt1.cab
245
+ - ext/libmspack/test/test_files/cabd/multi_basic_pt2.cab
246
+ - ext/libmspack/test/test_files/cabd/multi_basic_pt3.cab
247
+ - ext/libmspack/test/test_files/cabd/multi_basic_pt4.cab
248
+ - ext/libmspack/test/test_files/cabd/multi_basic_pt5.cab
249
+ - ext/libmspack/test/test_files/cabd/normal_255c_filename.cab
250
+ - ext/libmspack/test/test_files/cabd/normal_2files_1folder.cab
251
+ - ext/libmspack/test/test_files/cabd/partial_nodata.cab
252
+ - ext/libmspack/test/test_files/cabd/partial_nofiles.cab
253
+ - ext/libmspack/test/test_files/cabd/partial_nofolder.cab
254
+ - ext/libmspack/test/test_files/cabd/partial_shortextheader.cab
255
+ - ext/libmspack/test/test_files/cabd/partial_shortfile1.cab
256
+ - ext/libmspack/test/test_files/cabd/partial_shortfile2.cab
257
+ - ext/libmspack/test/test_files/cabd/partial_shortfolder.cab
258
+ - ext/libmspack/test/test_files/cabd/partial_shortheader.cab
259
+ - ext/libmspack/test/test_files/cabd/partial_str_nofname.cab
260
+ - ext/libmspack/test/test_files/cabd/partial_str_noninfo.cab
261
+ - ext/libmspack/test/test_files/cabd/partial_str_nonname.cab
262
+ - ext/libmspack/test/test_files/cabd/partial_str_nopinfo.cab
263
+ - ext/libmspack/test/test_files/cabd/partial_str_nopname.cab
264
+ - ext/libmspack/test/test_files/cabd/partial_str_shortfname.cab
265
+ - ext/libmspack/test/test_files/cabd/partial_str_shortninfo.cab
266
+ - ext/libmspack/test/test_files/cabd/partial_str_shortnname.cab
267
+ - ext/libmspack/test/test_files/cabd/partial_str_shortpinfo.cab
268
+ - ext/libmspack/test/test_files/cabd/partial_str_shortpname.cab
269
+ - ext/libmspack/test/test_files/cabd/reserve_---.cab
270
+ - ext/libmspack/test/test_files/cabd/reserve_--D.cab
271
+ - ext/libmspack/test/test_files/cabd/reserve_-F-.cab
272
+ - ext/libmspack/test/test_files/cabd/reserve_-FD.cab
273
+ - ext/libmspack/test/test_files/cabd/reserve_H--.cab
274
+ - ext/libmspack/test/test_files/cabd/reserve_H-D.cab
275
+ - ext/libmspack/test/test_files/cabd/reserve_HF-.cab
276
+ - ext/libmspack/test/test_files/cabd/reserve_HFD.cab
277
+ - ext/libmspack/test/test_files/cabd/search_basic.cab
278
+ - ext/libmspack/test/test_files/cabd/search_tricky1.cab
279
+ - ext/libmspack/TODO
280
+ - ext/libmspack/winbuild.sh
281
+ - ext/x86_64-windows/libmspack.dll
282
+ homepage: https://github.com/davispuh/ruby-libmspack
283
+ licenses:
284
+ - UNLICENSE
285
+ metadata: {}
286
+ post_install_message:
287
+ rdoc_options: []
288
+ require_paths:
289
+ - lib
290
+ required_ruby_version: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - ">="
293
+ - !ruby/object:Gem::Version
294
+ version: '0'
295
+ required_rubygems_version: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ requirements: []
301
+ rubyforge_project:
302
+ rubygems_version: 2.1.11
303
+ signing_key:
304
+ specification_version: 4
305
+ summary: Ruby wrapper for libmspack.
306
+ test_files:
307
+ - spec/libmspack_spec.rb
308
+ - spec/spec_helper.rb
309
+ has_rdoc: