mspack_rb 0.1.6 → 0.1.7
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.
- checksums.yaml +4 -4
- data/bin/console +1 -1
- data/ext/mspack_native/chm_decompressor.c +8 -6
- data/ext/mspack_native/chm_decompressor_file.c +24 -17
- data/ext/mspack_native/chm_decompressor_file.h +9 -0
- data/ext/mspack_native/chm_decompressor_header.c +6 -3
- data/lib/mspack/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ca23ebbd613db3fe80bd92522255ba960a7b039
|
4
|
+
data.tar.gz: a9f7f8bb5d4be741d535d3c6c4b03ae2430c80d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 413f41de3155794d82dcfb7d0e4e5f58319cd4026f652dcaa333ea0b62a300008aa4f27e3edf8d428c3d0d83000becc008b602ad65d98206dc7ab89f6daea72c
|
7
|
+
data.tar.gz: 91758d054375b7d19a7de6e6551b5627161e6eb14744858dbf73394f18b7255f115dfe47260ab20cf32312a984fcb1faf44e7e45f45714409fa75d710a79c955
|
data/bin/console
CHANGED
@@ -124,11 +124,11 @@ VALUE chmd_extract_to_path(VALUE self, VALUE file, VALUE outputPath) {
|
|
124
124
|
struct mschm_decompressor *decom;
|
125
125
|
Data_Get_Struct(self, struct mschm_decompressor, decom);
|
126
126
|
|
127
|
-
struct
|
128
|
-
Data_Get_Struct(file, struct
|
127
|
+
struct chmd_file_wrapper *wrapper;
|
128
|
+
Data_Get_Struct(file, struct chmd_file_wrapper, wrapper);
|
129
129
|
const char *pathStr = StringValueCStr(outputPath);
|
130
130
|
|
131
|
-
int result = decom->extract(decom,
|
131
|
+
int result = decom->extract(decom, wrapper->file, pathStr);
|
132
132
|
return result == MSPACK_ERR_OK ? Qtrue : Qfalse;
|
133
133
|
}
|
134
134
|
|
@@ -167,9 +167,11 @@ VALUE chmd_fast_find(VALUE self, VALUE header, VALUE filename) {
|
|
167
167
|
file->filename = malloc(sizeof(char) * strlen(filenameStr) + 1);
|
168
168
|
strcpy(file->filename, filenameStr);
|
169
169
|
|
170
|
-
|
171
|
-
|
172
|
-
|
170
|
+
struct chmd_file_wrapper *wrapper = malloc(sizeof(struct chmd_file_wrapper));
|
171
|
+
wrapper->is_fast_find = 1;
|
172
|
+
wrapper->file = file;
|
173
|
+
|
174
|
+
return Data_Wrap_Struct(ChmDFile, NULL, chmd_file_free, wrapper);
|
173
175
|
}
|
174
176
|
|
175
177
|
void Init_chm_decompressor() {
|
@@ -4,44 +4,51 @@
|
|
4
4
|
#include <mspack.h>
|
5
5
|
|
6
6
|
void chmd_file_free(void *ptr) {
|
7
|
-
struct
|
7
|
+
struct chmd_file_wrapper *wrapper = (struct chmd_file_wrapper *)ptr;
|
8
8
|
|
9
|
-
if (
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
if (wrapper->is_fast_find) {
|
10
|
+
if (wrapper->file->filename) {
|
11
|
+
free(wrapper->file->filename);
|
12
|
+
}
|
13
13
|
|
14
|
-
free(file);
|
14
|
+
free(wrapper->file);
|
15
15
|
}
|
16
|
+
|
17
|
+
free(ptr);
|
16
18
|
}
|
17
19
|
|
18
20
|
VALUE chmd_file_filename(VALUE self) {
|
19
|
-
struct
|
20
|
-
Data_Get_Struct(self, struct
|
21
|
+
struct chmd_file_wrapper *wrapper;
|
22
|
+
Data_Get_Struct(self, struct chmd_file_wrapper, wrapper);
|
21
23
|
|
22
|
-
if (!file->filename) {
|
24
|
+
if (!wrapper->file->filename) {
|
23
25
|
return Qnil;
|
24
26
|
}
|
25
27
|
|
26
|
-
return rb_str_new2(file->filename);
|
28
|
+
return rb_str_new2(wrapper->file->filename);
|
27
29
|
}
|
28
30
|
|
29
31
|
VALUE chmd_file_next(VALUE self) {
|
30
|
-
struct
|
31
|
-
Data_Get_Struct(self, struct
|
32
|
-
struct mschmd_file *next = file->next;
|
32
|
+
struct chmd_file_wrapper *wrapper;
|
33
|
+
Data_Get_Struct(self, struct chmd_file_wrapper, wrapper);
|
34
|
+
struct mschmd_file *next = wrapper->file->next;
|
33
35
|
|
34
36
|
if (!next) {
|
35
37
|
return Qnil;
|
36
38
|
}
|
37
39
|
|
38
|
-
|
39
|
-
|
40
|
-
|
40
|
+
struct chmd_file_wrapper *next_wrapper =
|
41
|
+
malloc(sizeof(struct chmd_file_wrapper));
|
42
|
+
next_wrapper->is_fast_find = 0;
|
43
|
+
next_wrapper->file = next;
|
44
|
+
|
45
|
+
return Data_Wrap_Struct(ChmDFile, NULL, chmd_file_free, next_wrapper);
|
41
46
|
}
|
42
47
|
|
43
48
|
VALUE chmd_file_is_fast_find(VALUE self) {
|
44
|
-
|
49
|
+
struct chmd_file_wrapper *wrapper;
|
50
|
+
Data_Get_Struct(self, struct chmd_file_wrapper, wrapper);
|
51
|
+
return wrapper->is_fast_find ? Qtrue : Qfalse;
|
45
52
|
}
|
46
53
|
|
47
54
|
void Init_chm_decompressor_file() {
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#include "chm_decompressor_header.h"
|
2
|
+
#include "chm_decompressor_file.h"
|
2
3
|
#include "mspack_native.h"
|
3
4
|
|
4
5
|
#include <mspack.h>
|
@@ -16,10 +17,12 @@ VALUE chmd_header_files(VALUE self) {
|
|
16
17
|
if (!header->files) {
|
17
18
|
return Qnil;
|
18
19
|
}
|
20
|
+
|
21
|
+
struct chmd_file_wrapper *wrapper = malloc(sizeof(struct chmd_file_wrapper));
|
22
|
+
wrapper->is_fast_find = 0;
|
23
|
+
wrapper->file = header->files;
|
19
24
|
|
20
|
-
|
21
|
-
rb_iv_set(file, "is_fast_find", Qfalse);
|
22
|
-
return file;
|
25
|
+
return Data_Wrap_Struct(ChmDFile, NULL, chmd_file_free, wrapper);
|
23
26
|
}
|
24
27
|
|
25
28
|
VALUE chmd_header_is_fast_open(VALUE self) {
|
data/lib/mspack/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mspack_rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|