libarchive-ruby-swig 0.6.0 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -281,11 +281,8 @@ class Entry
281
281
  try {
282
282
  $action
283
283
  } catch(Error &err) {
284
- static VALUE c_archive = rb_define_module("Archive");
285
- static VALUE e_archive =
286
- rb_define_class_under(c_archive, "Error", rb_eStandardError);
287
- static VALUE o_except = rb_exc_new2(e_archive, err.what());
288
- rb_exc_raise(o_except);
284
+ Error::ruby_raise(err);
285
+ SWIG_fail;
289
286
  }
290
287
  }
291
288
  #endif
@@ -0,0 +1,30 @@
1
+ /*
2
+ This file is part of "libarchive-ruby-swig", a simple SWIG wrapper around
3
+ libarchive.
4
+
5
+ Copyright 2011, Tobias Koch <tobias.koch@gmail.com>
6
+
7
+ libarchive-ruby-swig is licensed under a simplified BSD License. A copy of the
8
+ license text can be found in the file LICENSE.txt distributed with the source.
9
+ */
10
+
11
+ #include <ruby.h>
12
+ #include "error.h"
13
+
14
+ namespace {
15
+ VALUE archive_rb_error_class;
16
+ }
17
+
18
+ void Error::init() throw()
19
+ {
20
+ VALUE c_archive = rb_define_module("Archive");
21
+ archive_rb_error_class =
22
+ rb_define_class_under(c_archive, "Error", rb_eStandardError);
23
+ }
24
+
25
+ void Error::ruby_raise(const Error &err) throw()
26
+ {
27
+ VALUE o_except = rb_exc_new2(archive_rb_error_class, err.what());
28
+ rb_exc_raise(o_except);
29
+ }
30
+
@@ -11,6 +11,9 @@
11
11
  #ifndef CLASS_ARCHIVE_ERROR_H_INCLUDED
12
12
  #define CLASS_ARCHIVE_ERROR_H_INCLUDED
13
13
 
14
+ /* NOTE: This file is not interpreted by SWIG */
15
+
16
+ #include <string>
14
17
  #include <exception>
15
18
 
16
19
  class Error: public std::exception
@@ -27,6 +30,9 @@ class Error: public std::exception
27
30
  return error_msg.c_str();
28
31
  }
29
32
 
33
+ static void init() throw();
34
+ static void ruby_raise(const Error &err) throw();
35
+
30
36
  private:
31
37
 
32
38
  std::string error_msg;
@@ -22,6 +22,10 @@
22
22
  #include "error.h"
23
23
  %}
24
24
 
25
+ %init %{
26
+ Error::init();
27
+ %}
28
+
25
29
  %wrapper %{
26
30
  /* --- WRAPPER CODE START --- */
27
31
  %}
@@ -36,7 +36,7 @@ Reader::~Reader()
36
36
  void Reader::close()
37
37
  {
38
38
  if(_ar) {
39
- archive_read_finish(_ar);
39
+ archive_read_free(_ar);
40
40
  _ar = 0;
41
41
  }
42
42
 
@@ -53,10 +53,10 @@ Reader *Reader::read_open_filename(const char *filename, const char *cmd, bool r
53
53
 
54
54
  try {
55
55
  if(cmd) {
56
- if(archive_read_support_compression_program(ar, cmd) != ARCHIVE_OK)
56
+ if(archive_read_support_filter_program(ar, cmd) != ARCHIVE_OK)
57
57
  throw 0;
58
58
  } else {
59
- if(archive_read_support_compression_all(ar) != ARCHIVE_OK)
59
+ if(archive_read_support_filter_all(ar) != ARCHIVE_OK)
60
60
  throw 0;
61
61
  }
62
62
 
@@ -73,7 +73,7 @@ Reader *Reader::read_open_filename(const char *filename, const char *cmd, bool r
73
73
 
74
74
  } catch(...) {
75
75
  std::string error_msg = archive_error_string(ar);
76
- archive_read_finish(ar);
76
+ archive_read_free(ar);
77
77
  throw Error(error_msg);
78
78
  }
79
79
 
@@ -90,10 +90,10 @@ Reader *Reader::read_open_memory(const char *string, int length,
90
90
 
91
91
  try {
92
92
  if(cmd) {
93
- if(archive_read_support_compression_program(ar, cmd) != ARCHIVE_OK)
93
+ if(archive_read_support_filter_program(ar, cmd) != ARCHIVE_OK)
94
94
  throw 0;
95
95
  } else {
96
- if(archive_read_support_compression_all(ar) != ARCHIVE_OK)
96
+ if(archive_read_support_filter_all(ar) != ARCHIVE_OK)
97
97
  throw 0;
98
98
  }
99
99
 
@@ -110,7 +110,7 @@ Reader *Reader::read_open_memory(const char *string, int length,
110
110
 
111
111
  } catch(...) {
112
112
  std::string error_msg = archive_error_string(ar);
113
- archive_read_finish(ar);
113
+ archive_read_free(ar);
114
114
  free(content);
115
115
  throw Error(error_msg);
116
116
  }
@@ -34,11 +34,8 @@ class Reader
34
34
  try {
35
35
  $action
36
36
  } catch(Error &err) {
37
- static VALUE c_archive = rb_define_module("Archive");
38
- static VALUE e_archive =
39
- rb_define_class_under(c_archive, "Error", rb_eStandardError);
40
- static VALUE o_except = rb_exc_new2(e_archive, err.what());
41
- rb_exc_raise(o_except);
37
+ Error::ruby_raise(err);
38
+ SWIG_fail;
42
39
  }
43
40
  }
44
41
  #endif
@@ -35,7 +35,7 @@ Writer::~Writer()
35
35
  void Writer::close()
36
36
  {
37
37
  if(_ar) {
38
- archive_write_finish(_ar);
38
+ archive_write_free(_ar);
39
39
  _ar = 0;
40
40
  }
41
41
  }
@@ -48,7 +48,7 @@ Writer *Writer::write_open_filename(const char *filename,
48
48
  std::string error_msg;
49
49
  struct archive *ar = archive_write_new();
50
50
 
51
- archive_write_set_compression_program(ar, cmd);
51
+ archive_write_add_filter_program(ar, cmd);
52
52
  try {
53
53
  set_format_helper(ar, format);
54
54
 
@@ -58,7 +58,7 @@ Writer *Writer::write_open_filename(const char *filename,
58
58
  }
59
59
 
60
60
  } catch(...) {
61
- archive_write_finish(ar);
61
+ archive_write_free(ar);
62
62
  throw;
63
63
  }
64
64
 
@@ -76,22 +76,22 @@ Writer *Writer::write_open_filename(const char *filename,
76
76
 
77
77
  switch(compression) {
78
78
  case Archive::COMPRESSION_BZIP2:
79
- archive_write_set_compression_bzip2(ar);
79
+ archive_write_add_filter_bzip2(ar);
80
80
  break;
81
81
  case Archive::COMPRESSION_COMPRESS:
82
- archive_write_set_compression_compress(ar);
82
+ archive_write_add_filter_compress(ar);
83
83
  break;
84
84
  case Archive::COMPRESSION_GZIP:
85
- archive_write_set_compression_gzip(ar);
85
+ archive_write_add_filter_gzip(ar);
86
86
  break;
87
87
  case Archive::COMPRESSION_LZMA:
88
- archive_write_set_compression_lzma(ar);
88
+ archive_write_add_filter_lzma(ar);
89
89
  break;
90
90
  case Archive::COMPRESSION_NONE:
91
- archive_write_set_compression_none(ar);
91
+ archive_write_add_filter_none(ar);
92
92
  break;
93
93
  case Archive::COMPRESSION_XZ:
94
- archive_write_set_compression_xz(ar);
94
+ archive_write_add_filter_xz(ar);
95
95
  break;
96
96
  default:
97
97
  error_msg = "unknown or unsupported compression scheme";
@@ -106,7 +106,7 @@ Writer *Writer::write_open_filename(const char *filename,
106
106
  }
107
107
 
108
108
  } catch(...) {
109
- archive_write_finish(ar);
109
+ archive_write_free(ar);
110
110
  throw;
111
111
  }
112
112
 
@@ -65,11 +65,8 @@ class Writer
65
65
  try {
66
66
  $action
67
67
  } catch(Error &err) {
68
- static VALUE c_archive = rb_define_module("Archive");
69
- static VALUE e_archive =
70
- rb_define_class_under(c_archive, "Error", rb_eStandardError);
71
- static VALUE o_except = rb_exc_new2(e_archive, err.what());
72
- rb_exc_raise(o_except);
68
+ Error::ruby_raise(err);
69
+ SWIG_fail;
73
70
  }
74
71
  }
75
72
  #endif
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libarchive-ruby-swig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-12 00:00:00.000000000 Z
12
+ date: 2014-07-01 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Ruby bindings to libarchive allowing reading and creation of compressed
15
15
  archives in a variety of formats.
@@ -24,6 +24,7 @@ files:
24
24
  - ext/libarchive-ruby-swig/stat.h
25
25
  - ext/libarchive-ruby-swig/entry.cpp
26
26
  - ext/libarchive-ruby-swig/entry.h
27
+ - ext/libarchive-ruby-swig/error.cpp
27
28
  - ext/libarchive-ruby-swig/error.h
28
29
  - ext/libarchive-ruby-swig/libarchive.i
29
30
  - ext/libarchive-ruby-swig/reader.cpp