mspack_rb 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|