libmspack 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: