archive_r_ruby 0.1.21 → 0.1.22

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -21
  3. data/NOTICE +116 -116
  4. data/README.md +106 -106
  5. data/VERSION +1 -1
  6. data/ext/archive_r/archive_r_ext.cc +1098 -1098
  7. data/ext/archive_r/extconf.rb +125 -125
  8. data/ext/archive_r/vendor/archive_r/LICENSE +21 -21
  9. data/ext/archive_r/vendor/archive_r/NOTICE +116 -116
  10. data/ext/archive_r/vendor/archive_r/include/archive_r/data_stream.h +42 -42
  11. data/ext/archive_r/vendor/archive_r/include/archive_r/entry.h +180 -180
  12. data/ext/archive_r/vendor/archive_r/include/archive_r/entry_fault.h +34 -34
  13. data/ext/archive_r/vendor/archive_r/include/archive_r/entry_metadata.h +56 -56
  14. data/ext/archive_r/vendor/archive_r/include/archive_r/multi_volume_stream_base.h +46 -46
  15. data/ext/archive_r/vendor/archive_r/include/archive_r/path_hierarchy.h +92 -92
  16. data/ext/archive_r/vendor/archive_r/include/archive_r/path_hierarchy_utils.h +36 -36
  17. data/ext/archive_r/vendor/archive_r/include/archive_r/platform_compat.h +34 -34
  18. data/ext/archive_r/vendor/archive_r/include/archive_r/traverser.h +156 -156
  19. data/ext/archive_r/vendor/archive_r/src/archive_stack_cursor.cc +300 -300
  20. data/ext/archive_r/vendor/archive_r/src/archive_stack_cursor.h +110 -110
  21. data/ext/archive_r/vendor/archive_r/src/archive_stack_orchestrator.cc +161 -161
  22. data/ext/archive_r/vendor/archive_r/src/archive_stack_orchestrator.h +53 -53
  23. data/ext/archive_r/vendor/archive_r/src/archive_type.cc +545 -545
  24. data/ext/archive_r/vendor/archive_r/src/archive_type.h +77 -77
  25. data/ext/archive_r/vendor/archive_r/src/data_stream.cc +35 -35
  26. data/ext/archive_r/vendor/archive_r/src/entry.cc +238 -238
  27. data/ext/archive_r/vendor/archive_r/src/entry_fault.cc +26 -26
  28. data/ext/archive_r/vendor/archive_r/src/entry_fault_error.cc +54 -54
  29. data/ext/archive_r/vendor/archive_r/src/entry_fault_error.h +32 -32
  30. data/ext/archive_r/vendor/archive_r/src/entry_impl.h +56 -56
  31. data/ext/archive_r/vendor/archive_r/src/multi_volume_manager.cc +76 -76
  32. data/ext/archive_r/vendor/archive_r/src/multi_volume_manager.h +39 -39
  33. data/ext/archive_r/vendor/archive_r/src/multi_volume_stream_base.cc +208 -208
  34. data/ext/archive_r/vendor/archive_r/src/path_hierarchy.cc +127 -127
  35. data/ext/archive_r/vendor/archive_r/src/path_hierarchy_utils.cc +251 -251
  36. data/ext/archive_r/vendor/archive_r/src/simple_profiler.h +109 -109
  37. data/ext/archive_r/vendor/archive_r/src/system_file_stream.cc +294 -294
  38. data/ext/archive_r/vendor/archive_r/src/system_file_stream.h +46 -46
  39. data/ext/archive_r/vendor/archive_r/src/traverser.cc +295 -295
  40. data/lib/archive_r.rb +120 -120
  41. metadata +3 -6
data/lib/archive_r.rb CHANGED
@@ -1,120 +1,120 @@
1
- # SPDX-License-Identifier: MIT
2
- # Copyright (c) 2025 archive_r Team
3
-
4
- begin
5
- # Windows/MSVC specific: Ensure dependent DLLs (like libarchive.dll) are found.
6
- # If LIBARCHIVE_ROOT is set, add its bin directory to the DLL search path.
7
- if RUBY_PLATFORM =~ /mswin|mingw|cygwin/
8
- if ENV['LIBARCHIVE_ROOT']
9
- bin_dir = File.join(ENV['LIBARCHIVE_ROOT'], 'bin')
10
- if Dir.exist?(bin_dir)
11
- if defined?(RubyInstaller::Runtime)
12
- RubyInstaller::Runtime.add_dll_directory(bin_dir)
13
- else
14
- ENV['PATH'] = "#{bin_dir};#{ENV['PATH']}"
15
- end
16
- end
17
- end
18
- end
19
-
20
- load_errors = []
21
- extension_candidates = [
22
- ['require_relative', 'archive_r/archive_r'],
23
- ['require_relative', '../archive_r'],
24
- ['require', 'archive_r/archive_r']
25
- ]
26
-
27
- loaded = false
28
- extension_candidates.each do |method_name, target|
29
- begin
30
- __send__(method_name, target)
31
- loaded = true
32
- break
33
- rescue LoadError => e
34
- load_errors << [method_name, target, e.message]
35
- end
36
- end
37
-
38
- unless loaded
39
- details = load_errors.map { |method_name, target, message| "#{method_name}(#{target}): #{message}" }.join(' | ')
40
- raise LoadError, "Failed to load archive_r native extension. #{details}"
41
- end
42
- end
43
-
44
- module Archive_r
45
- version_path = File.expand_path('../VERSION', __dir__)
46
- unless File.exist?(version_path)
47
- version_path = File.expand_path('../../../VERSION', __dir__)
48
- end
49
- VERSION = File.read(version_path).strip
50
- # Common archive formats excluding libarchive's mtree/raw pseudo formats
51
- STANDARD_FORMATS = %w[
52
- 7zip ar cab cpio empty iso9660 lha rar tar warc xar zip
53
- ].freeze
54
-
55
- def self.normalize_options(opts = nil)
56
- options =
57
- case opts
58
- when nil
59
- {}
60
- when Hash
61
- opts.dup
62
- else
63
- opts.to_hash.dup
64
- end
65
-
66
- options[:formats] = STANDARD_FORMATS unless options.key?(:formats)
67
- options
68
- end
69
-
70
- def self.traverse(paths, **opts, &block)
71
- options = normalize_options(opts)
72
-
73
- if block
74
- Traverser.open(paths, options) { |traverser| traverser.each(&block) }
75
- else
76
- Traverser.new(paths, options).each
77
- end
78
- end
79
-
80
- class Entry
81
- # Additional helper methods can be added here
82
-
83
- def to_s
84
- path
85
- end
86
-
87
- def inspect
88
- "#<Archive_r::Entry path=#{path.inspect} size=#{size} depth=#{depth}>"
89
- end
90
- end
91
-
92
- class Traverser
93
- # Additional helper methods can be added here
94
-
95
- class << self
96
- alias_method :__archive_r_c_open, :open
97
-
98
- def open(paths, opts = nil, &block)
99
- __archive_r_c_open(paths, Archive_r.normalize_options(opts), &block)
100
- end
101
-
102
- def open_hierarchy(hierarchy, opts = nil, &block)
103
- open([hierarchy], opts, &block)
104
- end
105
- end
106
-
107
- alias_method :__archive_r_c_initialize, :initialize
108
-
109
- def initialize(paths, opts = nil)
110
- __archive_r_c_initialize(paths, Archive_r.normalize_options(opts))
111
- end
112
-
113
- # Count entries
114
- def count
115
- n = 0
116
- each { |entry| n += 1 }
117
- n
118
- end
119
- end
120
- end
1
+ # SPDX-License-Identifier: MIT
2
+ # Copyright (c) 2025 archive_r Team
3
+
4
+ begin
5
+ # Windows/MSVC specific: Ensure dependent DLLs (like libarchive.dll) are found.
6
+ # If LIBARCHIVE_ROOT is set, add its bin directory to the DLL search path.
7
+ if RUBY_PLATFORM =~ /mswin|mingw|cygwin/
8
+ if ENV['LIBARCHIVE_ROOT']
9
+ bin_dir = File.join(ENV['LIBARCHIVE_ROOT'], 'bin')
10
+ if Dir.exist?(bin_dir)
11
+ if defined?(RubyInstaller::Runtime)
12
+ RubyInstaller::Runtime.add_dll_directory(bin_dir)
13
+ else
14
+ ENV['PATH'] = "#{bin_dir};#{ENV['PATH']}"
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ load_errors = []
21
+ extension_candidates = [
22
+ ['require_relative', 'archive_r/archive_r'],
23
+ ['require_relative', '../archive_r'],
24
+ ['require', 'archive_r/archive_r']
25
+ ]
26
+
27
+ loaded = false
28
+ extension_candidates.each do |method_name, target|
29
+ begin
30
+ __send__(method_name, target)
31
+ loaded = true
32
+ break
33
+ rescue LoadError => e
34
+ load_errors << [method_name, target, e.message]
35
+ end
36
+ end
37
+
38
+ unless loaded
39
+ details = load_errors.map { |method_name, target, message| "#{method_name}(#{target}): #{message}" }.join(' | ')
40
+ raise LoadError, "Failed to load archive_r native extension. #{details}"
41
+ end
42
+ end
43
+
44
+ module Archive_r
45
+ version_path = File.expand_path('../VERSION', __dir__)
46
+ unless File.exist?(version_path)
47
+ version_path = File.expand_path('../../../VERSION', __dir__)
48
+ end
49
+ VERSION = File.read(version_path).strip
50
+ # Common archive formats excluding libarchive's mtree/raw pseudo formats
51
+ STANDARD_FORMATS = %w[
52
+ 7zip ar cab cpio empty iso9660 lha rar tar warc xar zip
53
+ ].freeze
54
+
55
+ def self.normalize_options(opts = nil)
56
+ options =
57
+ case opts
58
+ when nil
59
+ {}
60
+ when Hash
61
+ opts.dup
62
+ else
63
+ opts.to_hash.dup
64
+ end
65
+
66
+ options[:formats] = STANDARD_FORMATS unless options.key?(:formats)
67
+ options
68
+ end
69
+
70
+ def self.traverse(paths, **opts, &block)
71
+ options = normalize_options(opts)
72
+
73
+ if block
74
+ Traverser.open(paths, options) { |traverser| traverser.each(&block) }
75
+ else
76
+ Traverser.new(paths, options).each
77
+ end
78
+ end
79
+
80
+ class Entry
81
+ # Additional helper methods can be added here
82
+
83
+ def to_s
84
+ path
85
+ end
86
+
87
+ def inspect
88
+ "#<Archive_r::Entry path=#{path.inspect} size=#{size} depth=#{depth}>"
89
+ end
90
+ end
91
+
92
+ class Traverser
93
+ # Additional helper methods can be added here
94
+
95
+ class << self
96
+ alias_method :__archive_r_c_open, :open
97
+
98
+ def open(paths, opts = nil, &block)
99
+ __archive_r_c_open(paths, Archive_r.normalize_options(opts), &block)
100
+ end
101
+
102
+ def open_hierarchy(hierarchy, opts = nil, &block)
103
+ open([hierarchy], opts, &block)
104
+ end
105
+ end
106
+
107
+ alias_method :__archive_r_c_initialize, :initialize
108
+
109
+ def initialize(paths, opts = nil)
110
+ __archive_r_c_initialize(paths, Archive_r.normalize_options(opts))
111
+ end
112
+
113
+ # Count entries
114
+ def count
115
+ n = 0
116
+ each { |entry| n += 1 }
117
+ n
118
+ end
119
+ end
120
+ end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: archive_r_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.21
4
+ version: 0.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - raizo.tcs
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2026-03-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rake
@@ -96,7 +95,6 @@ metadata:
96
95
  source_code_uri: https://github.com/raizo-tcs/archive_r
97
96
  bug_tracker_uri: https://github.com/raizo-tcs/archive_r/issues
98
97
  changelog_uri: https://github.com/raizo-tcs/archive_r/releases
99
- post_install_message:
100
98
  rdoc_options: []
101
99
  require_paths:
102
100
  - lib
@@ -111,8 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
109
  - !ruby/object:Gem::Version
112
110
  version: '0'
113
111
  requirements: []
114
- rubygems_version: 3.1.6
115
- signing_key:
112
+ rubygems_version: 3.6.9
116
113
  specification_version: 4
117
114
  summary: 'Ruby bindings for archive_r: libarchive-based streaming traversal for recursive
118
115
  nested archives (no temp files, no large in-memory buffers)'