tarruby 0.1.3-mswin32 → 0.1.4-mswin32
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.
- data/README.txt +5 -0
- data/ext/tarruby.c +32 -2
- data/lib/i386-mswin32/tarruby.so +0 -0
- metadata +2 -2
data/README.txt
CHANGED
@@ -48,11 +48,16 @@ gem install tarruby
|
|
48
48
|
|
49
49
|
require 'tarruby'
|
50
50
|
|
51
|
+
buf = 'ABCDEFG'
|
52
|
+
|
51
53
|
Tar.open('bar.tar', File::CREAT | File::WRONLY, 0644, Tar::GNU | Tar::VERBOSE) do |tar|
|
52
54
|
Dir.glob('**/*.c').each do |filename|
|
53
55
|
tar.append_file(filename)
|
54
56
|
end
|
55
57
|
|
58
|
+
# append from buffer
|
59
|
+
tar.append_buffer('zoo.txt, buf)
|
60
|
+
|
56
61
|
##if append directory
|
57
62
|
#tar.append_tree('dirname')
|
58
63
|
end
|
data/ext/tarruby.c
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
|
34
34
|
#define INT2TIME(i) rb_funcall(rb_cTime, rb_intern("at"), 1, INT2NUM(i))
|
35
35
|
|
36
|
-
#define VERSION "0.1.
|
36
|
+
#define VERSION "0.1.4"
|
37
37
|
|
38
38
|
static VALUE Tar;
|
39
39
|
static VALUE Error;
|
@@ -271,6 +271,35 @@ static VALUE tarruby_append_file(int argc, VALUE *argv, VALUE self) {
|
|
271
271
|
return Qnil;
|
272
272
|
}
|
273
273
|
|
274
|
+
static int tarruby_append_buffer0(char *buf, int len, void *data) {
|
275
|
+
char **p_buffer = (char **) data;
|
276
|
+
memcpy(buf, *p_buffer, len);
|
277
|
+
p_buffer += len;
|
278
|
+
return len;
|
279
|
+
}
|
280
|
+
|
281
|
+
/* */
|
282
|
+
static VALUE tarruby_append_buffer(VALUE self, VALUE savename, VALUE buffer) {
|
283
|
+
struct tarruby_tar *p_tar;
|
284
|
+
char *s_savename, *s_buffer;
|
285
|
+
int i_size;
|
286
|
+
|
287
|
+
Check_Type(savename, T_STRING);
|
288
|
+
Check_Type(buffer, T_STRING);
|
289
|
+
s_savename = RSTRING_PTR(savename);
|
290
|
+
strip_sep(s_savename);
|
291
|
+
s_buffer = RSTRING_PTR(buffer);
|
292
|
+
i_size = RSTRING_LEN(buffer);
|
293
|
+
|
294
|
+
Data_Get_Struct(self, struct tarruby_tar, p_tar);
|
295
|
+
|
296
|
+
if (tar_append_function(p_tar->tar, s_savename, i_size, (void *) &s_buffer, tarruby_append_buffer0) != 0) {
|
297
|
+
rb_raise(Error, "Append buffer failed: %s", strerror(errno));
|
298
|
+
}
|
299
|
+
|
300
|
+
return Qnil;
|
301
|
+
}
|
302
|
+
|
274
303
|
/* */
|
275
304
|
static VALUE tarruby_append_tree(int argc, VALUE *argv, VALUE self) {
|
276
305
|
VALUE realdir, savedir;
|
@@ -323,7 +352,7 @@ static VALUE tarruby_extract_file(VALUE self, VALUE realname) {
|
|
323
352
|
static int tarruby_extract_buffer0(char *buf, int len, void *data) {
|
324
353
|
VALUE buffer = (VALUE) data;
|
325
354
|
rb_str_buf_cat(buffer, buf, len);
|
326
|
-
return
|
355
|
+
return len;
|
327
356
|
}
|
328
357
|
|
329
358
|
/* */
|
@@ -650,6 +679,7 @@ void DLLEXPORT Init_tarruby() {
|
|
650
679
|
#endif
|
651
680
|
rb_define_method(Tar, "close", tarruby_close, 0);
|
652
681
|
rb_define_method(Tar, "append_file", tarruby_append_file, -1);
|
682
|
+
rb_define_method(Tar, "append_buffer", tarruby_append_buffer, 2);
|
653
683
|
rb_define_method(Tar, "append_tree", tarruby_append_tree, -1);
|
654
684
|
rb_define_method(Tar, "extract_file", tarruby_extract_file, 1);
|
655
685
|
rb_define_method(Tar, "extract_buffer", tarruby_extract_buffer, 0);
|
data/lib/i386-mswin32/tarruby.so
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tarruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: mswin32
|
6
6
|
authors:
|
7
7
|
- winebarrel
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-09-
|
12
|
+
date: 2008-09-16 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|