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,84 @@
1
+ #!perl -w
2
+ use strict;
3
+
4
+ sub byte($) {pack 'c',$_[0]};
5
+ sub ubyte($) {pack 'C',$_[0]};
6
+ sub uword($) {pack 'v',$_[0]};
7
+ sub ulong($) {pack 'V',$_[0]};
8
+
9
+ my $RESV_HEADER = 'reserved header test 12345';
10
+ #my $RESV_HEADER = '';
11
+ #my $RESV_FOLDER = 'reserved folder test 12345';
12
+ my $RESV_FOLDER = '';
13
+ my $RESV_DATA = 'reserved data test 12345';
14
+ #my $RESV_DATA = '';
15
+
16
+ my $header
17
+ = 'MSCF' # 00 SIGNATURE
18
+ . ulong(0) # 04
19
+ . ulong(0) # 08 CABINET SIZE
20
+ . ulong(0) # 0C
21
+ . ulong(0) # 10 FILES OFFSET
22
+ . ulong(0) # 14
23
+ . ubyte(3) # 18 MINOR VERSION
24
+ . ubyte(1) # 19 MAJOR VERSION
25
+ . uword(1) # 1A number of folders
26
+ . uword(2) # 1C number of files
27
+ . uword(4) # 1E flags
28
+ . uword(1) # 20 set id
29
+ . uword(0) # 22 cab index
30
+
31
+ . uword(length($RESV_HEADER)) # 00 header reserved
32
+ . ubyte(length($RESV_FOLDER)) # 02 folder resv
33
+ . ubyte(length($RESV_DATA)) # 03 data resv
34
+ . $RESV_HEADER
35
+ ;
36
+
37
+ my $folder
38
+ = ulong(0) # data offset
39
+ . uword(2) # number of blocks
40
+ . uword(0) # compression method
41
+ . $RESV_FOLDER
42
+ ;
43
+
44
+ my $files
45
+ = ulong(5) # uncompressed size
46
+ . ulong(0) # folder offset
47
+ . uword(0) # folder index
48
+ . uword(0x226C) # time
49
+ . uword(0x59BA) # date
50
+ . uword(0x20) # attribs
51
+ . "test1.txt\0"
52
+
53
+ . ulong(5) # uncompressed size
54
+ . ulong(5) # folder offset
55
+ . uword(0) # folder index
56
+ . uword(0x226C) # time
57
+ . uword(0x59BA) # date
58
+ . uword(0x20) # attribs
59
+ . "test2.txt\0"
60
+ ;
61
+
62
+ my $datablocks
63
+ = ulong(0) # checksum
64
+ . uword(5) # compressed size
65
+ . uword(5) # uncompressed size
66
+ . $RESV_DATA
67
+ . "TEST\n" # actual data
68
+
69
+ . ulong(0) # checksum
70
+ . uword(5) # compressed size
71
+ . uword(5) # uncompressed size
72
+ . $RESV_DATA
73
+ . "test\n" # actual data
74
+ ;
75
+
76
+ my $pre_files = $header . $folder;
77
+ my $pre_data = $pre_files . $files;
78
+ my $cab = $pre_data . $datablocks;
79
+
80
+ substr($header, 0x08, 4, ulong(length($cab)));
81
+ substr($header, 0x10, 4, ulong(length($pre_files)));
82
+ substr($folder, 0x00, 4, ulong(length($pre_data)));
83
+
84
+ print $header . $folder . $files . $datablocks;
@@ -0,0 +1,75 @@
1
+ #!perl -w
2
+ use strict;
3
+
4
+ sub byte($) {pack 'c',$_[0]};
5
+ sub ubyte($) {pack 'C',$_[0]};
6
+ sub uword($) {pack 'v',$_[0]};
7
+ sub ulong($) {pack 'V',$_[0]};
8
+
9
+ my $header
10
+ = 'MSCF' # 00 SIGNATURE
11
+ . ulong(0) # 04
12
+ . ulong(0) # 08 CABINET SIZE
13
+ . ulong(0) # 0C
14
+ . ulong(0) # 10 FILES OFFSET
15
+ . ulong(0) # 14
16
+ . ubyte(3) # 18 MINOR VERSION
17
+ . ubyte(1) # 19 MAJOR VERSION
18
+ . uword(1) # 1A number of folders
19
+ . uword(3) # 1C number of files
20
+ . uword(1) # 1E flags
21
+ . uword(12345) # 20 set id
22
+ . uword(4) # 22 cab index
23
+ . "cabd_multi_basic_pt4.cab\0"
24
+ . "basic multipart test part 4\0"
25
+
26
+ ;
27
+
28
+ my $folder
29
+ = ulong(0) # data offset
30
+ . uword(1) # number of blocks
31
+ . uword(0) # compression method
32
+ ;
33
+
34
+ my $files
35
+ = ulong(76) # uncompressed size
36
+ . ulong(0) # folder offset
37
+ . uword(0xFFFD) # folder index
38
+ . uword(0x226C) # time
39
+ . uword(0x59BA) # date
40
+ . uword(0x20) # attribs
41
+ . "test1.txt\0"
42
+
43
+ . ulong(38) # uncompressed size
44
+ . ulong(76) # folder offset
45
+ . uword(0xFFFD) # folder index
46
+ . uword(0x226C) # time
47
+ . uword(0x59BA) # date
48
+ . uword(0x20) # attribs
49
+ . "test2.txt\0"
50
+
51
+ . ulong(76) # uncompressed size
52
+ . ulong(76+38) # folder offset
53
+ . uword(0xFFFD) # folder index
54
+ . uword(0x226C) # time
55
+ . uword(0x59BA) # date
56
+ . uword(0x20) # attribs
57
+ . "test3.txt\0"
58
+ ;
59
+
60
+ my $datablocks
61
+ = ulong(0) # checksum
62
+ . uword(38) # compressed size
63
+ . uword(190) # uncompressed size
64
+ . "This is the data from cabinet part 5.\n" # actual data
65
+ ;
66
+
67
+ my $pre_files = $header . $folder;
68
+ my $pre_data = $pre_files . $files;
69
+ my $cab = $pre_data . $datablocks;
70
+
71
+ substr($header, 0x08, 4, ulong(length($cab)));
72
+ substr($header, 0x10, 4, ulong(length($pre_files)));
73
+ substr($folder, 0x00, 4, ulong(length($pre_data)));
74
+
75
+ print $header . $folder . $files . $datablocks;
@@ -0,0 +1,26 @@
1
+ #!/bin/sh
2
+ cat <<END
3
+ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
4
+ This builds the libmspack into mspack.dll on
5
+ Windows with Microsoft compiler.
6
+ After compilation find the library in the
7
+ directory mspack
8
+ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!
9
+ END
10
+
11
+ cat >config.h <<END
12
+ #define inline __inline
13
+ #define HAVE_STRING_H 1
14
+ #define HAVE_LIMITS_H 1
15
+ #define HAVE_MEMCMP 1
16
+ END
17
+
18
+ cd mspack
19
+
20
+ cl /O2 -I. /c *.c
21
+ link *.obj /DLL /DEF:mspack.def /IMPLIB:mspack.lib
22
+
23
+ cd ..
24
+
25
+ ls -l mspack/mspack.dll
26
+ ls -l mspack/mspack.lib
Binary file
@@ -0,0 +1,9 @@
1
+ module LibMsPack
2
+ module Constants
3
+ include LibMsPack::MsPack::Constants
4
+ include LibMsPack::MsCab::Constants
5
+ include LibMsPack::MsChm::Constants
6
+ include LibMsPack::MsKwaj::Constants
7
+ include LibMsPack::MsSzdd::Constants
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module LibMsPack
2
+ module Exceptions
3
+ class NotInitializedError < RuntimeError
4
+ end
5
+
6
+ class AlreadyInitializedError < RuntimeError
7
+ end
8
+
9
+ class LibMsPackError < RuntimeError
10
+ end
11
+ end
12
+ end