rblkid 0.0.1

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.
@@ -0,0 +1,134 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/constants'
21
+ require 'rblkid/c'
22
+
23
+ require 'rblkid/dev'
24
+ require 'rblkid/cache'
25
+ require 'rblkid/dev_iterate'
26
+ require 'rblkid/partition'
27
+ require 'rblkid/partlist'
28
+ require 'rblkid/parttable'
29
+ require 'rblkid/probe'
30
+ require 'rblkid/tag_iterate'
31
+ require 'rblkid/topology'
32
+
33
+ module BlkID
34
+ class << self
35
+ def evaluate_tag (token, value, cache=nil)
36
+ cache = cache.ptr if cache.is_a?(BlkID::Cache)
37
+
38
+ BlkID::C.blkid_evaluate_tag(token, value, cache)
39
+ end
40
+
41
+ def evaluate_spec(spec, cache=nil)
42
+ cache = cache.ptr if cache.is_a?(BlkID::Cache)
43
+
44
+ BlkID::C.evaluate_spec(spec, cache)
45
+ end
46
+
47
+ def known_fstype? (fstype)
48
+ BlkID::C.blkid_known_fstype(fstype)
49
+ end
50
+
51
+ def name (idx)
52
+ name = FFI::MemoryPointer.new(:string)
53
+ usage = FFI::MemoryPointer.new(:int)
54
+
55
+ BlkID::C.blkid_superblocks_get_name(idx, FFI::MemoryPointer.new(:pointer).write_pointer(name), usage).tap {|res|
56
+ break [name.read_string, usage.read_int] if res
57
+ }
58
+ end
59
+
60
+ def filter_superblocks_type (flag, names)
61
+ n = FFI::MemoryPointer.new(:pointer, names.size + 1)
62
+ names.each_with_index {|s, i|
63
+ n[i].put_pointer(0, FFI::MemoryPointer.from_string(s))
64
+ }
65
+ n[names.size].put_pointer(0, nil)
66
+
67
+ BlkID::C.blkid_probe_filter_superblocks_type(@struct, flag, n)
68
+ end
69
+
70
+ def filter_superblocks_usage (flag, usage)
71
+ BlkID::C.blkid_probe_filter_superblocks_usage(@struct, flag, usage)
72
+ end
73
+
74
+ def invert_superblocks_filter
75
+ BlkID::C.blkid_probe_invert_superblocks_filter(@struct)
76
+ end
77
+
78
+ def reset_superblocks_filter
79
+ BlkID::C.blkid_probe_reset_superblocks_filter(@struct)
80
+ end
81
+
82
+ def superblocks_flags= (flags)
83
+ BlkID::C.blkid_probe_set_superblocks_flags(@struct, flags)
84
+ end
85
+
86
+ def partitions= (bool)
87
+ BlkID::C.blkid_probe_enable_partitions(@struct, bool)
88
+ end
89
+
90
+ def partitions_flags= (flags)
91
+ BlkID::C.blkid_probe_set_partitions_flags(@struct, flags)
92
+ end
93
+
94
+ def filter_partitions_type (flag, names)
95
+ n = FFI::MemoryPointer.new(:pointer, names.size + 1)
96
+ names.each_with_index {|s, i|
97
+ n[i].put_pointer(0, FFI::MemoryPointer.from_string(s))
98
+ }
99
+ n[names.size].put_pointer(0, nil)
100
+
101
+ BlkID::C.blkid_probe_filter_partitions_type(@struct, flag, n)
102
+ end
103
+
104
+ def invert_partitions_filter
105
+ BlkID::C.blkid_probe_invert_partitions_filter(@struct)
106
+ end
107
+
108
+ def reset_partitions_filter
109
+ BlkID::C.blkid_probe_reset_partitions_filter(@struct)
110
+ end
111
+
112
+ def known_pttype? (pttype)
113
+ BlkID::C.blkid_known_pttype(pttype)
114
+ end
115
+
116
+ def devno_to_devname (devno)
117
+ BlkID::C.blkid_devno_to_devname(devno)
118
+ end
119
+
120
+ def devno_to_wholedisk (dev)
121
+ diskdevno = FFI::MemoryPointer.new(:ulong, 1)
122
+ BlkID::C.blkid_devno_to_wholedisk(dev, nil, 0, diskdevno)
123
+ diskdevno.read_ulong
124
+ end
125
+
126
+ def dev_size (fd)
127
+ BlkID::C.blkid_get_dev_size(fd)
128
+ end
129
+
130
+ def send_uevent (devname, action)
131
+ BlkID::C.blkid_send_uevent(devname, action)
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,31 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'ffi'
21
+ require 'rblkid/constants'
22
+
23
+ module BlkID
24
+ module C
25
+ extend FFI::Library
26
+ ffi_lib ['blkid', 'libblkid.so.1']
27
+ end
28
+ end
29
+
30
+ require 'rblkid/c/types'
31
+ require 'rblkid/c/functions'
@@ -0,0 +1,146 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c/types'
21
+
22
+ module BlkID
23
+ module C
24
+ # evaluate {{{
25
+ attach_function :blkid_evaluate_tag, [:string, :string, :pointer], :string
26
+ attach_function :blkid_send_uevent, [:string, :string], :blkid_bool
27
+ #attach_function :blkid_evaluate_spec, [:string, :pointer], :string
28
+ # }}}
29
+
30
+ # cache {{{
31
+ attach_function :blkid_gc_cache, [BlkIDCache], :void
32
+ attach_function :blkid_get_cache, [:pointer, :string], :blkid_bool
33
+ attach_function :blkid_put_cache, [BlkIDCache], :void
34
+ attach_function :blkid_probe_all, [BlkIDCache], :blkid_bool
35
+ attach_function :blkid_probe_all_removable, [BlkIDCache], :blkid_bool
36
+ attach_function :blkid_probe_all_new, [BlkIDCache], :blkid_bool
37
+ attach_function :blkid_verify, [BlkIDCache, BlkIDDev], BlkIDDev
38
+ # }}}
39
+
40
+ # search and iterate {{{
41
+ attach_function :blkid_dev_devname, [BlkIDDev], :string
42
+ attach_function :blkid_dev_has_tag, [BlkIDDev, :string, :string], :bool
43
+ attach_function :blkid_dev_iterate_begin, [BlkIDCache], BlkIDDevIterate
44
+ attach_function :blkid_dev_iterate_end, [BlkIDDevIterate], :void
45
+ attach_function :blkid_dev_next, [BlkIDDevIterate, :pointer], :blkid_bool
46
+ attach_function :blkid_dev_set_search, [BlkIDDevIterate, :string, :string], :blkid_bool
47
+ attach_function :blkid_find_dev_with_tag, [BlkIDCache, :string, :string], BlkIDDev
48
+ attach_function :blkid_get_dev, [BlkIDCache, :string, :int], BlkIDDev
49
+ attach_function :blkid_get_devname, [BlkIDCache, :string, :string], :string
50
+ attach_function :blkid_tag_iterate_begin, [BlkIDDev], BlkIDTagIterate
51
+ attach_function :blkid_tag_iterate_end, [BlkIDTagIterate], :void
52
+ attach_function :blkid_tag_next, [BlkIDTagIterate, :pointer, :pointer], :blkid_bool
53
+ # }}}
54
+
55
+ # low-level probing {{{
56
+ attach_function :blkid_free_probe, [BlkIDProbe], :void
57
+ attach_function :blkid_new_probe, [], BlkIDProbe
58
+ attach_function :blkid_new_probe_from_filename, [:string], BlkIDProbe
59
+ attach_function :blkid_probe_get_devno, [BlkIDProbe], :dev_t
60
+ attach_function :blkid_probe_get_fd, [BlkIDProbe], :int
61
+ attach_function :blkid_probe_get_sectorsize, [BlkIDProbe], :uint
62
+ attach_function :blkid_probe_get_sectors, [BlkIDProbe], :blkid_loff_t
63
+ attach_function :blkid_probe_get_size, [BlkIDProbe], :blkid_loff_t
64
+ attach_function :blkid_probe_get_offset, [BlkIDProbe], :blkid_loff_t
65
+ attach_function :blkid_probe_get_wholedisk_devno, [BlkIDProbe], :dev_t
66
+ attach_function :blkid_probe_set_device, [BlkIDProbe, :int, :blkid_loff_t, :blkid_loff_t], :int
67
+ attach_function :blkid_probe_is_wholedisk, [BlkIDProbe], :bool
68
+ attach_function :blkid_reset_probe, [BlkIDProbe], :void
69
+ # }}}
70
+
71
+ # low-level tags {{{
72
+ attach_function :blkid_do_fullprobe, [BlkIDProbe], :blkid_bool
73
+ attach_function :blkid_do_probe, [BlkIDProbe], :blkid_bool
74
+ attach_function :blkid_do_safeprobe, [BlkIDProbe], :blkid_bool
75
+ attach_function :blkid_probe_get_value, [BlkIDProbe, :int, :pointer, :pointer, :pointer], :int
76
+ attach_function :blkid_probe_has_value, [BlkIDProbe, :string], :bool
77
+ attach_function :blkid_probe_lookup_value, [BlkIDProbe, :string, :pointer, :pointer], :blkid_bool
78
+ attach_function :blkid_probe_numof_values, [BlkIDProbe], :int
79
+ # }}}
80
+
81
+ # superblocks probing {{{
82
+ attach_function :blkid_probe_enable_superblocks, [BlkIDProbe, :bool], :blkid_bool
83
+ attach_function :blkid_known_fstype, [:string], :bool
84
+ attach_function :blkid_superblocks_get_name, [:uint, :pointer, :pointer], :blkid_bool
85
+ attach_function :blkid_probe_filter_superblocks_type, [BlkIDProbe, :int, :pointer], :blkid_bool
86
+ attach_function :blkid_probe_filter_superblocks_usage, [BlkIDProbe, :int, :int], :blkid_bool
87
+ attach_function :blkid_probe_invert_superblocks_filter, [BlkIDProbe], :blkid_bool
88
+ attach_function :blkid_probe_reset_superblocks_filter, [BlkIDProbe], :blkid_bool
89
+ attach_function :blkid_probe_set_superblocks_flags, [BlkIDProbe, :int], :blkid_bool
90
+ attach_function :blkid_probe_reset_filter, [BlkIDProbe], :blkid_bool
91
+ attach_function :blkid_probe_filter_types, [BlkIDProbe, :int, :pointer], :blkid_bool
92
+ attach_function :blkid_probe_filter_usage, [BlkIDProbe, :int, :int], :blkid_bool
93
+ attach_function :blkid_probe_invert_filter, [BlkIDProbe], :blkid_bool
94
+ attach_function :blkid_probe_set_request, [BlkIDProbe, :int], :blkid_bool
95
+ # }}}
96
+
97
+ # partitions probing {{{
98
+ attach_function :blkid_probe_enable_partitions, [BlkIDProbe, :bool], :blkid_bool
99
+ attach_function :blkid_probe_set_partitions_flags, [BlkIDProbe, :int], :blkid_bool
100
+ attach_function :blkid_probe_filter_partitions_type, [BlkIDProbe, :int, :pointer], :blkid_bool
101
+ attach_function :blkid_probe_invert_partitions_filter, [BlkIDProbe], :blkid_bool
102
+ attach_function :blkid_probe_reset_partitions_filter, [BlkIDProbe], :blkid_bool
103
+ attach_function :blkid_known_pttype, [:string], :bool
104
+ attach_function :blkid_partition_get_name, [BlkIDPartition], :string
105
+ attach_function :blkid_partition_get_flags, [BlkIDPartition], :ulong_long
106
+ attach_function :blkid_partition_get_partno, [BlkIDPartition], :int
107
+ attach_function :blkid_partition_get_size, [BlkIDPartition], :blkid_loff_t
108
+ attach_function :blkid_partition_get_start, [BlkIDPartition], :blkid_loff_t
109
+ attach_function :blkid_partition_get_table, [BlkIDPartition], BlkIDPartTable
110
+ attach_function :blkid_partition_get_type, [BlkIDPartition], :int
111
+ attach_function :blkid_partition_get_type_string, [BlkIDPartition], :string
112
+ attach_function :blkid_partition_get_uuid, [BlkIDPartition], :string
113
+ attach_function :blkid_partition_is_extended, [BlkIDPartition], :bool
114
+ attach_function :blkid_partition_is_logical, [BlkIDPartition], :bool
115
+ attach_function :blkid_partition_is_primary, [BlkIDPartition], :bool
116
+ attach_function :blkid_partlist_get_partition, [BlkIDPartList, :int], BlkIDPartition
117
+ attach_function :blkid_partlist_numof_partitions, [BlkIDPartList], :int
118
+ attach_function :blkid_partlist_devno_to_partition, [BlkIDPartList, :dev_t], BlkIDPartition
119
+ attach_function :blkid_partlist_get_table, [BlkIDPartList], BlkIDPartTable
120
+ attach_function :blkid_parttable_get_offset, [BlkIDPartTable], :blkid_loff_t
121
+ attach_function :blkid_parttable_get_parent, [BlkIDPartTable], BlkIDPartition
122
+ attach_function :blkid_parttable_get_type, [BlkIDPartTable], :string
123
+ attach_function :blkid_probe_get_partitions, [BlkIDProbe], BlkIDPartList
124
+ # }}}
125
+
126
+ # Topology information {{{
127
+ attach_function :blkid_probe_enable_topology, [BlkIDProbe, :bool], :blkid_bool
128
+ attach_function :blkid_probe_get_topology, [BlkIDProbe], BlkIDTopology
129
+ attach_function :blkid_topology_get_alignment_offset, [BlkIDTopology], :ulong
130
+ attach_function :blkid_topology_get_logical_sector_size, [BlkIDTopology], :ulong
131
+ attach_function :blkid_topology_get_minimum_io_size, [BlkIDTopology], :ulong
132
+ attach_function :blkid_topology_get_optimal_io_size, [BlkIDTopology], :ulong
133
+ attach_function :blkid_topology_get_physical_sector_size, [BlkIDTopology], :ulong
134
+ # }}}
135
+
136
+ # Miscellaneous utils {{{
137
+ attach_function :blkid_devno_to_devname, [:dev_t], :string
138
+ attach_function :blkid_devno_to_wholedisk, [:dev_t, :string, :size_t, :pointer], :blkid_bool
139
+ attach_function :blkid_get_dev_size, [:int], :blkid_loff_t
140
+ attach_function :blkid_get_library_version, [:pointer, :pointer], :int
141
+ attach_function :blkid_parse_tag_string, [:string, :pointer, :pointer], :int
142
+ attach_function :blkid_parse_version_string, [:string], :int
143
+ attach_function :blkid_send_uevent, [:string, :string], :blkid_bool
144
+ # }}}
145
+ end
146
+ end
@@ -0,0 +1,231 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+
22
+ module BlkID
23
+ module C
24
+ module Bool
25
+ extend FFI::DataConverter
26
+ native_type FFI::Type::INT
27
+
28
+ def self.to_native(value, ctx)
29
+ [0, false, nil].include?(value) ? 0 : 1
30
+ end
31
+
32
+ def self.from_native(value, ctx)
33
+ !value.zero?
34
+ end
35
+ end
36
+
37
+ module BlkIDBool
38
+ extend FFI::DataConverter
39
+ native_type FFI::Type::INT
40
+
41
+ def self.to_native (value, ctx)
42
+ [0, false, nil].include?(value) ? 1 : 0
43
+ end
44
+
45
+ def self.from_native (value, ctx)
46
+ value.zero?
47
+ end
48
+ end
49
+
50
+ FFI.typedef(Bool, :bool)
51
+ FFI.typedef(BlkIDBool, :blkid_bool)
52
+ FFI.typedef(:int64, :blkid_loff_t)
53
+
54
+ class ListHead < FFI::Struct
55
+ layout \
56
+ :next, :pointer,
57
+ :prev, :pointer
58
+ end
59
+
60
+ class BlkIDCache < FFI::Struct
61
+ layout \
62
+ :bic_devs, ListHead,
63
+ :bic_tags, ListHead,
64
+ :bic_time, :time_t,
65
+ :bic_ftime, :time_t,
66
+ :bic_flags, :uint,
67
+ :bic_filename, :pointer
68
+ end
69
+
70
+ class BlkIDDev < FFI::Struct
71
+ layout \
72
+ :bid_devs, ListHead,
73
+ :bid_tags, ListHead,
74
+ :bid_cache, BlkIDCache,
75
+ :bid_name, :pointer,
76
+ :bid_type, :pointer,
77
+ :bid_pri, :int,
78
+ :bid_devno, :dev_t,
79
+ :bid_time, :time_t,
80
+ :bid_flags, :uint,
81
+ :bid_label, :pointer,
82
+ :bid_uuid, :pointer
83
+ end
84
+
85
+ class BlkIDTag < FFI::Struct
86
+ layout \
87
+ :bit_tags, ListHead,
88
+ :bit_names, ListHead,
89
+ :bit_name, :pointer,
90
+ :bit_val, :pointer,
91
+ :bit_dev, BlkIDDev
92
+ end
93
+
94
+ class BlkIDDevIterate < FFI::Struct
95
+ layout \
96
+ :magic, :int,
97
+ :cache, BlkIDCache,
98
+ :search_type, :pointer,
99
+ :search_value, :pointer,
100
+ :p, :pointer
101
+ end
102
+
103
+ class BlkIDTagIterate < FFI::Struct
104
+ layout \
105
+ :magic, :int,
106
+ :dev, BlkIDDev,
107
+ :p, :pointer
108
+ end
109
+
110
+ class BlkIDIdMag < FFI::Struct
111
+ layout \
112
+ :magic, :pointer,
113
+ :len, :uint,
114
+ :kboff, :long,
115
+ :sboff, :uint
116
+ end
117
+
118
+ class BlkIDPrVal < FFI::Struct
119
+ layout \
120
+ :name, :pointer,
121
+ :data, :pointer,
122
+ :len, :uint,
123
+ :chain, :pointer
124
+ end
125
+
126
+ class BlkIDProbe < FFI::Struct
127
+ end
128
+
129
+ callback :probefunccb, [BlkIDProbe, BlkIDIdMag], :int
130
+
131
+ class BlkIDIdInfo < FFI::Struct
132
+ layout \
133
+ :name, :pointer,
134
+ :usage, :int,
135
+ :flags, :int,
136
+ :minsz, :int,
137
+ :probefunc, :probefunccb,
138
+ :magics, :pointer
139
+ end
140
+
141
+ callback :probecb, [BlkIDProbe, :pointer], :int
142
+ callback :safeprobecb, [BlkIDProbe, :pointer], :int
143
+ callback :free_datacb, [BlkIDProbe, :pointer], :void
144
+
145
+ class BlkIDChainDrv < FFI::Struct
146
+ layout \
147
+ :id, :int,
148
+ :name, :string,
149
+ :dflt_flags, :int,
150
+ :dflt_enabled, :int,
151
+ :has_fltr, :int,
152
+ :idinfos, :pointer,
153
+ :nidinfos, :uint,
154
+ :probe, :probecb,
155
+ :safeprobe, :safeprobecb,
156
+ :free_data, :free_datacb
157
+ end
158
+
159
+ class BlkIDChain < FFI::Struct
160
+ layout \
161
+ :driver, :pointer,
162
+ :enabled, :int,
163
+ :flags, :int,
164
+ :binary, :int,
165
+ :idx, :int,
166
+ :fltr, :ulong,
167
+ :data, :pointer
168
+ end
169
+
170
+ class BlkIDProbe
171
+ layout \
172
+ :fd, :int,
173
+ :off, :blkid_loff_t,
174
+ :size, :blkid_loff_t,
175
+ :devno, :dev_t,
176
+ :disk_devno, :dev_t,
177
+ :blkssz, :uint,
178
+ :mode, :mode_t,
179
+ :flags, :int,
180
+ :prob_flags, :int,
181
+ :wipe_off, :blkid_loff_t,
182
+ :wipe_size, :blkid_loff_t,
183
+ :wipe_chain, :pointer,
184
+ :buffers, ListHead,
185
+ :chains, [BlkIDChain, BlkID::BLKID_NCHAINS],
186
+ :cur_chain, :pointer,
187
+ :vals, [BlkIDPrVal, BlkID::BLKID_NVALS],
188
+ :nvals, :int
189
+ end
190
+
191
+ class BlkIDPartition < FFI::Struct
192
+ layout \
193
+ :start, :blkid_loff_t,
194
+ :size, :blkid_loff_t,
195
+ :type, :int,
196
+ :typestr, [:char, 37],
197
+ :flags, :ulong_long,
198
+ :partno, :int,
199
+ :uuid, [:char, 37],
200
+ :name, [:uchar, 128]
201
+ end
202
+
203
+ class BlkIDPartTable < FFI::Struct
204
+ layout \
205
+ :type, :pointer,
206
+ :offset, :blkid_loff_t,
207
+ :nparts, :int,
208
+ :parent, BlkIDPartition,
209
+ :t_tabs, ListHead
210
+ end
211
+
212
+ class BlkIDPartList < FFI::Struct
213
+ layout \
214
+ :next_partno, :int,
215
+ :next_parent, BlkIDPartition,
216
+ :nparts, :int,
217
+ :nparts_max, :int,
218
+ :parts, BlkIDPartition,
219
+ :l_tabs, ListHead
220
+ end
221
+
222
+ class BlkIDTopology < FFI::Struct
223
+ layout \
224
+ :alignment_offset, :ulong,
225
+ :minimum_io_size, :ulong,
226
+ :optimal_io_size, :ulong,
227
+ :logical_sector_size, :ulong,
228
+ :physical_sector_size, :ulong
229
+ end
230
+ end
231
+ end
@@ -0,0 +1,72 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+ require 'rblkid/dev'
22
+
23
+ module BlkID
24
+ class Cache
25
+ def initialize (filename=nil)
26
+ @struct = BlkID::C::BlkIDCache.new
27
+
28
+ raise "Error while getting cache" unless BlkID::C.blkid_get_cache(@struct.pointer, filename)
29
+ end
30
+
31
+ def save
32
+ BlkID::C.blkid_put_cache(@struct)
33
+ self
34
+ end
35
+
36
+ def probe_all
37
+ BlkID::C.blkid_probe_all(@struct)
38
+ end
39
+
40
+ def probe_all_removable
41
+ BlkID::C.blkid_probe_all_removable(@struct)
42
+ end
43
+
44
+ def probe_all_new
45
+ BlkID::C.blkid_probe_all_new(@struct)
46
+ end
47
+
48
+ def verify (dev)
49
+ BlkID::C.blkid_verify(@struct, dev.to_ffi)
50
+ end
51
+
52
+ def find_dev_with_tag (type, value)
53
+ Dev.new(BlkID::C.blkid_find_dev_with_tag(@struct, type, value))
54
+ end
55
+
56
+ def dev (devname, flags)
57
+ Dev.new(BlkID::C.blkid_get_dev(@struct, devname, flags))
58
+ end
59
+
60
+ def devname (token, value)
61
+ BlkID::C.blkid_get_tag_value(@struct, tagname, devname)
62
+ end
63
+
64
+ def to_ffi
65
+ @struct
66
+ end
67
+
68
+ def ptr
69
+ to_ffi.ptr
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,52 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ module BlkID
21
+ BLKID_PROBVAL_BUFSIZ = 64
22
+ BLKID_NVALS_SUBLKS = 14
23
+ BLKID_NVALS_TOPLGY = 5
24
+ BLKID_NVALS_PARTS = 10
25
+ BLKID_NVALS = BLKID_NVALS_SUBLKS + BLKID_NVALS_TOPLGY + BLKID_NVALS_PARTS
26
+ BLKID_CHAIN_SUBLKS = 0
27
+ BLKID_CHAIN_TOPLGY = 1
28
+ BLKID_CHAIN_PARTS = 2
29
+ BLKID_NCHAINS = 3
30
+ BLKID_FLTR_NOTIN = 1
31
+ BLKID_FLTR_ONLYIN = 2
32
+ BLKID_DEV_CREATE = 0x0001
33
+ BLKID_DEV_FIND = 0x0000
34
+ BLKID_DEV_VERIFY = 0x0002
35
+ BLKID_DEV_NORMAL = BLKID_DEV_CREATE | BLKID_DEV_VERIFY
36
+ BLKID_PARTS_ENTRY_DETAILS = 1 << 2
37
+ BLKID_PARTS_FORCE_GPT = (1 << 1)
38
+ BLKID_SUBLKS_DEFAULT = 0
39
+ BLKID_SUBLKS_LABEL = (1 << 1)
40
+ BLKID_SUBLKS_LABELRAW = (1 << 2)
41
+ BLKID_SUBLKS_MAGIC = (1 << 9)
42
+ BLKID_SUBLKS_SECTYPE = (1 << 6)
43
+ BLKID_SUBLKS_TYPE = (1 << 5)
44
+ BLKID_SUBLKS_USAGE = (1 << 7)
45
+ BLKID_SUBLKS_UUID = (1 << 3)
46
+ BLKID_SUBLKS_UUIDRAW = (1 << 4)
47
+ BLKID_SUBLKS_VERSION = (1 << 8)
48
+ BLKID_USAGE_CRYPTO = (1 << 3)
49
+ BLKID_USAGE_FILESYSTEM = (1 << 1)
50
+ BLKID_USAGE_OTHER = (1 << 4)
51
+ BLKID_USAGE_RAID = (1 << 2)
52
+ end
@@ -0,0 +1,46 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+ require 'rblkid/tag_iterate'
22
+
23
+ module BlkID
24
+ class Dev
25
+ def initialize (struct)
26
+ @struct = struct
27
+ end
28
+
29
+ def devname
30
+ BlkID::C.blkid_dev_devname(@struct)
31
+ end
32
+
33
+ def tag? (type, value)
34
+ BlkID::C.blkid_dev_has_tag(@struct, type, value)
35
+ end
36
+ alias has_tag? tag?
37
+
38
+ def tags
39
+ TagIterate.new(self)
40
+ end
41
+
42
+ def to_ffi
43
+ @struct
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,63 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+ require 'rblkid/dev'
22
+
23
+ module BlkID
24
+ class DevIterate
25
+ include Enumerable
26
+
27
+ def initialize (cache)
28
+ @struct = BlkID::C.blkid_dev_iterate_begin(cache.to_ffi)
29
+
30
+ ObjectSpace.define_finalizer(self, method(:finalize))
31
+ end
32
+
33
+ def search (type, value)
34
+ BlkID::C.blkid_dev_set_search(@struct, type, value)
35
+ self
36
+ end
37
+
38
+ def next
39
+ Dev.new(BlkID::C::BlkIDDev.new.tap {|res|
40
+ break nil unless BlkID::C.blkid_dev_next(@struct, res.pointer)
41
+ })
42
+ end
43
+
44
+ def each
45
+ [].tap {|a|
46
+ while (dev = self.next)
47
+ a << dev
48
+ yield dev if block_given?
49
+ end
50
+ }
51
+ end
52
+
53
+ def finalize
54
+ BlkID::C.blkid_dev_iterate_end(@struct)
55
+ end
56
+
57
+ def to_ffi
58
+ @struct
59
+ end
60
+
61
+ private :next
62
+ end
63
+ end
@@ -0,0 +1,81 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+ require 'rblkid/parttable'
22
+
23
+ module BlkID
24
+ class Partition
25
+ def initialize (struct)
26
+ @struct = struct
27
+ end
28
+
29
+ def name
30
+ BlkID::C.blkid_partition_get_name(@struct)
31
+ end
32
+
33
+ def flags
34
+ BlkID::C.blkid_partition_get_flags(@struct)
35
+ end
36
+
37
+ def partno
38
+ BlkID::C.blkid_partition_get_partno(@struct)
39
+ end
40
+
41
+ def size
42
+ BlkID::C.blkid_partition_get_size(@struct)
43
+ end
44
+
45
+ def start
46
+ BlkID::C.blkid_partition_get_start(@struct)
47
+ end
48
+
49
+ def table
50
+ PartTable.new(BlkID::C.blkid_partition_get_table(@struct))
51
+ end
52
+
53
+ def type
54
+ BlkID::C.blkid_partition_get_type(@struct)
55
+ end
56
+
57
+ def type_string
58
+ BlkID::C.blkid_partition_get_type_string(@struct)
59
+ end
60
+
61
+ def uuid
62
+ BlkID::C.blkid_partition_get_uuid(@struct)
63
+ end
64
+
65
+ def extended?
66
+ BlkID::C.blkid_partition_is_extended(@struct)
67
+ end
68
+
69
+ def logical?
70
+ BlkID::C.blkid_partition_is_logical(@struct)
71
+ end
72
+
73
+ def primary?
74
+ BlkID::C.blkid_partition_is_primary(@struct)
75
+ end
76
+
77
+ def to_ffi
78
+ @struct
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,53 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+ require 'rblkid/partition'
22
+ require 'rblkid/parttable'
23
+
24
+ module BlkID
25
+ class PartList
26
+ def initialize (struct)
27
+ @struct = struct
28
+ end
29
+
30
+ def partition (n)
31
+ BlkID::C.blkid_partlist_get_partition(@struct, n)
32
+ end
33
+ alias [] partition
34
+
35
+ def numof_partitions
36
+ BlkID::C.blkid_partlist_numof_partitions(@struct)
37
+ end
38
+ alias size numof_partitions
39
+
40
+ def devno_to_partition (devno)
41
+ Partition.new(BlkID::C.blkid_partlist_devno_to_partition(@struct, devno))
42
+ end
43
+
44
+ def table
45
+ PartTable.new(BlkID::C.blkid_partlist_get_table(@struct))
46
+ end
47
+
48
+ def to_ffi
49
+ @struct
50
+ end
51
+
52
+ end
53
+ end
@@ -0,0 +1,45 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+ require 'rblkid/partition'
22
+
23
+ module BlkID
24
+ class PartTable
25
+ def initialize (struct)
26
+ @struct = struct
27
+ end
28
+
29
+ def offset
30
+ BlkID::C.blkid_parttable_get_offset(@struct)
31
+ end
32
+
33
+ def parent
34
+ Partition.new(BlkID::C.blkid_parttable_get_parent(@struct))
35
+ end
36
+
37
+ def type
38
+ BlkID::C.blkid_parttable_get_type(@struct)
39
+ end
40
+
41
+ def to_ffi
42
+ @struct
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,145 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+ require 'rblkid/partlist'
22
+ require 'rblkid/topology'
23
+
24
+ module BlkID
25
+ class Probe
26
+ def self.from_filename (filename)
27
+ allocate.tap {|o| o.instance_eval {
28
+ @struct = BlkID::C.blkid_new_probe_from_filename(filename)
29
+ ObjectSpace.define_finalizer(self, method(:finalize))
30
+ }}
31
+ end
32
+
33
+ def initialize
34
+ @struct = BlkID::C.blkid_new_probe
35
+
36
+ ObjectSpace.define_finalizer(self, method(:finalize))
37
+ end
38
+
39
+ def finalize
40
+ BlkID::C.blkid_free_probe(@struct)
41
+ end
42
+
43
+ def devno
44
+ BlkID::C.blkid_probe_get_devno(@struct)
45
+ end
46
+
47
+ def fd
48
+ BlkID::C.blkid_probe_get_fd(@struct)
49
+ end
50
+ alias to_i fd
51
+
52
+ def sector_size
53
+ BlkID::C.blkid_probe_get_sectorsize(@struct)
54
+ end
55
+
56
+ def sectors
57
+ BlkID::C.blkid_probe_get_sectors(@struct)
58
+ end
59
+
60
+ def size
61
+ BlkID::C.blkid_probe_get_size(@struct)
62
+ end
63
+
64
+ def offset
65
+ BlkID::C.blkid_probe_get_offset(@struct)
66
+ end
67
+
68
+ def wholedisk_devno
69
+ BlkID::C.blkid_probe_get_wholedisk_devno(@struct)
70
+ end
71
+
72
+ def set_device (fd, off, size)
73
+ BlkID::C.blkid_probe_set_device(@struct, fd, off, size)
74
+ end
75
+
76
+ def wholedisk?
77
+ BlkID::C.blkid_probe_is_wholedisk(@struct)
78
+ end
79
+
80
+ def reset
81
+ BlkID::C.blkid_reset_probe(@struct)
82
+ self
83
+ end
84
+
85
+ def fullprobe
86
+ BlkID::C.blkid_do_fullprobe(@struct)
87
+ end
88
+
89
+ def probe
90
+ BlkID::C.blkid_do_probe(@struct)
91
+ end
92
+
93
+ def safeprobe
94
+ BlkID::C.blkid_do_safeprobe(@struct)
95
+ end
96
+
97
+ def value (num)
98
+ name = FFI::MemoryPointer.new(:string)
99
+ data = FFI::MemoryPointer.new(:string)
100
+
101
+ BlkID::C.blkid_probe_get_value(@struct, num,
102
+ FFI::MemoryPointer.new(:pointer).write_pointer(name),
103
+ FFI::MemoryPointer.new(:pointer).write_pointer(data),
104
+ nil)
105
+ [name.read_string, data.read_string]
106
+ end
107
+
108
+ def has_value? (name)
109
+ BlkID::C.blkid_probe_has_value(@struct, name)
110
+ end
111
+ alias value? has_value?
112
+
113
+ def lookup_value (name)
114
+ data = FFI::MemoryPointer.new(:string)
115
+ BlkID::C.blkid_probe_lookup_value(@struct, name,
116
+ FFI::MemoryPointer.new(:pointer).write_pointer(data),
117
+ nil)
118
+ data.read_string
119
+ end
120
+
121
+ def numof_values
122
+ BlkID::C.blkid_probe_numof_values(@struct)
123
+ end
124
+
125
+ def superblocks= (bool)
126
+ BlkID::C.blkid_probe_enable_superblocks(@struct, bool)
127
+ end
128
+
129
+ def partitions
130
+ PartList.new(BlkID::C.blkid_probe_get_partitions(@struct))
131
+ end
132
+
133
+ def topology= (bool)
134
+ BlkID::C.blkid_probe_enable_topology(@struct, bool)
135
+ end
136
+
137
+ def topology
138
+ Topology.new(BlkID::C.blkid_probe_get_topology(@struct))
139
+ end
140
+
141
+ def to_ffi
142
+ @struct
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,59 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+
22
+ module BlkID
23
+ class TagIterate
24
+ include Enumerable
25
+
26
+ def initialize (dev)
27
+ @struct = BlkID::C.blkid_tag_iterate_begin(dev.to_ffi)
28
+
29
+ ObjectSpace.define_finalizer(self, method(:finalize))
30
+ end
31
+
32
+ def next
33
+ type = FFI::MemoryPointer.new(:string)
34
+ value = FFI::MemoryPointer.new(:string)
35
+ BlkID::C.blkid_tag_next(@struct, type, value)
36
+
37
+ [type, value]
38
+ end
39
+
40
+ def each
41
+ Hash[[].tap {|a|
42
+ while (tag = self.next)
43
+ a << tag
44
+ yield *tag if block_given?
45
+ end
46
+ }]
47
+ end
48
+
49
+ def finalize
50
+ BlkID::C.blkid_tag_iterate_end(@struct)
51
+ end
52
+
53
+ def to_ffi
54
+ @struct
55
+ end
56
+
57
+ private :next
58
+ end
59
+ end
@@ -0,0 +1,52 @@
1
+ #--
2
+ # Copyleft shura. [ shura1991@gmail.com ]
3
+ #
4
+ # This file is part of rblkid.
5
+ #
6
+ # rblkid is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published
8
+ # by the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # rblkid is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with rblkid. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ require 'rblkid/c'
21
+
22
+ module BlkID
23
+ class Topology
24
+ def initialize (struct)
25
+ @struct = struct
26
+ end
27
+
28
+ def alignment_offset
29
+ BlkID::C.blkid_topology_get_alignment_offset(@struct)
30
+ end
31
+
32
+ def logical_sector_size
33
+ BlkID::C.blkid_topology_get_logical_sector_size(@struct)
34
+ end
35
+
36
+ def minimum_io_size
37
+ BlkID::C.blkid_topology_get_minimum_io_size(@struct)
38
+ end
39
+
40
+ def optimal_io_size
41
+ BlkID::C.blkid_topology_get_optimal_io_size(@struct)
42
+ end
43
+
44
+ def physical_sector_size
45
+ BlkID::C.blkid_topology_get_physical_sector_size(@struct)
46
+ end
47
+
48
+ def to_ffi
49
+ @struct
50
+ end
51
+ end
52
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rblkid
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - shura
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-09-06 00:00:00 +02:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: ffi
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ description: libblkid ruby bindings
34
+ email: shura1991@gmail.com
35
+ executables: []
36
+
37
+ extensions: []
38
+
39
+ extra_rdoc_files: []
40
+
41
+ files:
42
+ - lib/rblkid/c.rb
43
+ - lib/rblkid/cache.rb
44
+ - lib/rblkid/partlist.rb
45
+ - lib/rblkid/dev_iterate.rb
46
+ - lib/rblkid/probe.rb
47
+ - lib/rblkid/partition.rb
48
+ - lib/rblkid/c/types.rb
49
+ - lib/rblkid/c/functions.rb
50
+ - lib/rblkid/topology.rb
51
+ - lib/rblkid/tag_iterate.rb
52
+ - lib/rblkid/constants.rb
53
+ - lib/rblkid/parttable.rb
54
+ - lib/rblkid/dev.rb
55
+ - lib/rblkid.rb
56
+ has_rdoc: true
57
+ homepage: http://github.com/shurizzle/rblkid
58
+ licenses: []
59
+
60
+ post_install_message:
61
+ rdoc_options: []
62
+
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ segments:
79
+ - 0
80
+ version: "0"
81
+ requirements: []
82
+
83
+ rubyforge_project:
84
+ rubygems_version: 1.3.7
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: libblkid ruby bindings
88
+ test_files: []
89
+