sys-filesystem 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7af3548fbf1bb139fba93f59e5b0b37098a615adc0f23ec044a1e9effc31cfd7
4
- data.tar.gz: 84a664ed0c9d075fcfe649ca796896b4b24a8dbbac06ff4ce2de0f40c804bab4
3
+ metadata.gz: ef992a58a28ea604cbcce569c09abaee7212b04dbe7f7d0fd6b69d7ce4d62835
4
+ data.tar.gz: f51965f0faec2fb982893f002c01d4499424d4838d7550cf44ff99c1ca859ea4
5
5
  SHA512:
6
- metadata.gz: b835ac3845da2ed83f169fdf6a95b20ddfb0d3b58db439710b9bef3f2e9a5bb4c55db385fa6374ef80163ff127dce359f4e18941736d845b4d7c4fa7fb965920
7
- data.tar.gz: df9d23e48e68252b0b6118ab5afe59194917294dc5ede8ca54f162a5d75a2a9eccc05fab56a01c264feb86e5be8707dd7f7a5599120e7742caa5149f3382e4b5
6
+ metadata.gz: 41001e2db9ba3048671910f0f4ebb264b781ef509d682353a02116434308386ad6c363a6409c311696729a28ea7fafa5edaf042f7f118485f0e31b0f5633c9e2
7
+ data.tar.gz: 53e972089622fae12ad436e6634988d60fab6f271c391fc122d670c53cbc8d91312a4ba659d0e5f3e709bbaaf1969e4a9cb61ca2dd9b7e9152be478d0ae5347c
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/CHANGES.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 1.4.2 - 22-Jul-2021
2
+ * Fixed support for 32-bit Linux. Thanks go to ciprianbadescu for the spot.
3
+
1
4
  ## 1.4.1 - 30-Dec-2020
2
5
  * Fix an FFI function declaration bug for Big Sur and later on Mac. Thanks go
3
6
  to Roman Gaufman for the spot and Martins Polakovs for testing.
data/Gemfile CHANGED
@@ -1,9 +1,3 @@
1
1
  source 'https://rubygems.org' do
2
- gem 'ffi', '~> 1.1'
3
- group 'test' do
4
- gem 'mkmf-lite', '~> 0.4'
5
- gem 'rake'
6
- gem 'rspec', '~> 3.9'
7
- gem 'fakefs', '~> 1.2'
8
- end
2
+ gemspec
9
3
  end
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Ruby](https://github.com/djberg96/sys-filesystem/actions/workflows/ruby.yml/badge.svg)](https://github.com/djberg96/sys-filesystem/actions/workflows/ruby.yml)
2
+
1
3
  ## Description
2
4
 
3
5
  A cross platform Ruby interface for getting file system information.
data/Rakefile CHANGED
@@ -6,9 +6,9 @@ CLEAN.include('**/*.gem', '**/*.rbc', '**/*.rbx', '**/*.lock')
6
6
 
7
7
  namespace :gem do
8
8
  desc "Build the sys-filesystem gem"
9
- task :create => [:clean] do |t|
9
+ task :create => [:clean] do
10
10
  require 'rubygems/package'
11
- spec = eval(IO.read('sys-filesystem.gemspec'))
11
+ spec = Gem::Specification.load('sys-filesystem.gemspec')
12
12
  spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
13
13
  Gem::Package.build(spec)
14
14
  end
@@ -21,7 +21,7 @@ namespace :gem do
21
21
  end
22
22
 
23
23
  desc "Run the example program"
24
- task :example do |t|
24
+ task :example do
25
25
  sh "ruby -Ilib -Ilib/unix -Ilib/windows examples/example_stat.rb"
26
26
  end
27
27
 
@@ -7,11 +7,12 @@
7
7
  require 'optparse'
8
8
 
9
9
  options = {:mount_options => []}
10
+
10
11
  OptionParser.new do |opts|
11
12
  opts.banner = "Usage: #$0 [-o options] [-t external_type] special node"
12
13
 
13
- opts.on("-o=OPTIONS", "Set one or many mount options (comma delimited)") do |opts|
14
- options[:mount_options] += opts.split(',')
14
+ opts.on("-o=OPTIONS", "Set one or many mount options (comma delimited)") do |cli_opts|
15
+ options[:mount_options] += cli_opts.split(',')
15
16
  end
16
17
 
17
18
  opts.on("-r", "Set readonly flag") do
@@ -1,7 +1,7 @@
1
1
  module Sys
2
2
  class Filesystem
3
3
  # The version of the sys-filesystem library
4
- VERSION = '1.4.1'.freeze
4
+ VERSION = '1.4.2'.freeze
5
5
  end
6
6
  end
7
7
 
@@ -11,44 +11,44 @@ module Sys
11
11
  include Sys::Filesystem::Structs
12
12
  extend Sys::Filesystem::Functions
13
13
 
14
- private
15
-
16
14
  # Readable versions of constant names
17
15
  OPT_NAMES = {
18
- MNT_RDONLY => 'read-only',
19
- MNT_SYNCHRONOUS => 'synchronous',
20
- MNT_NOEXEC => 'noexec',
21
- MNT_NOSUID => 'nosuid',
22
- MNT_NODEV => 'nodev',
23
- MNT_UNION => 'union',
24
- MNT_ASYNC => 'asynchronous',
25
- MNT_CPROTECT => 'content-protection',
26
- MNT_EXPORTED => 'exported',
27
- MNT_QUARANTINE => 'quarantined',
28
- MNT_LOCAL => 'local',
29
- MNT_QUOTA => 'quotas',
30
- MNT_ROOTFS => 'rootfs',
31
- MNT_DONTBROWSE => 'nobrowse',
16
+ MNT_RDONLY => 'read-only',
17
+ MNT_SYNCHRONOUS => 'synchronous',
18
+ MNT_NOEXEC => 'noexec',
19
+ MNT_NOSUID => 'nosuid',
20
+ MNT_NODEV => 'nodev',
21
+ MNT_UNION => 'union',
22
+ MNT_ASYNC => 'asynchronous',
23
+ MNT_CPROTECT => 'content-protection',
24
+ MNT_EXPORTED => 'exported',
25
+ MNT_QUARANTINE => 'quarantined',
26
+ MNT_LOCAL => 'local',
27
+ MNT_QUOTA => 'quotas',
28
+ MNT_ROOTFS => 'rootfs',
29
+ MNT_DONTBROWSE => 'nobrowse',
32
30
  MNT_IGNORE_OWNERSHIP => 'noowners',
33
- MNT_AUTOMOUNTED => 'automounted',
34
- MNT_JOURNALED => 'journaled',
35
- MNT_NOUSERXATTR => 'nouserxattr',
36
- MNT_DEFWRITE => 'defwrite',
37
- MNT_NOATIME => 'noatime'
31
+ MNT_AUTOMOUNTED => 'automounted',
32
+ MNT_JOURNALED => 'journaled',
33
+ MNT_NOUSERXATTR => 'nouserxattr',
34
+ MNT_DEFWRITE => 'defwrite',
35
+ MNT_NOATIME => 'noatime'
38
36
  }.freeze
39
37
 
38
+ private_constant :OPT_NAMES
39
+
40
40
  # File used to read mount informtion from.
41
41
  if File.exist?('/etc/mtab')
42
- MOUNT_FILE = '/etc/mtab'
42
+ MOUNT_FILE = '/etc/mtab'.freeze
43
43
  elsif File.exist?('/etc/mnttab')
44
- MOUNT_FILE = '/etc/mnttab'
44
+ MOUNT_FILE = '/etc/mnttab'.freeze
45
45
  elsif File.exist?('/proc/mounts')
46
- MOUNT_FILE = '/proc/mounts'
46
+ MOUNT_FILE = '/proc/mounts'.freeze
47
47
  else
48
- MOUNT_FILE = 'getmntinfo'
48
+ MOUNT_FILE = 'getmntinfo'.freeze
49
49
  end
50
50
 
51
- public
51
+ private_constant :MOUNT_FILE
52
52
 
53
53
  # The error raised if any of the Filesystem methods fail.
54
54
  class Error < StandardError; end
@@ -278,17 +278,17 @@ module Sys
278
278
 
279
279
  ptr = buf.get_pointer(0)
280
280
 
281
- num.times{ |i|
281
+ num.times do
282
282
  mnt = Statfs.new(ptr)
283
283
  obj = Sys::Filesystem::Mount.new
284
284
  obj.name = mnt[:f_mntfromname].to_s
285
285
  obj.mount_point = mnt[:f_mntonname].to_s
286
286
  obj.mount_type = mnt[:f_fstypename].to_s
287
287
 
288
- string = ""
288
+ string = ''
289
289
  flags = mnt[:f_flags] & MNT_VISFLAGMASK
290
290
 
291
- OPT_NAMES.each{ |key,val|
291
+ OPT_NAMES.each do |key, val|
292
292
  if flags & key > 0
293
293
  if string.empty?
294
294
  string << val
@@ -297,7 +297,7 @@ module Sys
297
297
  end
298
298
  end
299
299
  flags &= ~key
300
- }
300
+ end
301
301
 
302
302
  obj.options = string
303
303
 
@@ -308,7 +308,7 @@ module Sys
308
308
  end
309
309
 
310
310
  ptr += Statfs.size
311
- }
311
+ end
312
312
  else
313
313
  begin
314
314
  if respond_to?(:setmntent, true)
@@ -385,7 +385,7 @@ module Sys
385
385
  dev = File.stat(file).dev
386
386
  val = file
387
387
 
388
- self.mounts.each{ |mnt|
388
+ mounts.each do |mnt|
389
389
  mp = mnt.mount_point
390
390
  begin
391
391
  if File.stat(mp).dev == dev
@@ -395,7 +395,7 @@ module Sys
395
395
  rescue Errno::EACCES
396
396
  next
397
397
  end
398
- }
398
+ end
399
399
 
400
400
  val
401
401
  end
@@ -1,8 +1,6 @@
1
1
  module Sys
2
2
  class Filesystem
3
3
  module Constants
4
- private
5
-
6
4
  MNT_RDONLY = 0x00000001 # read only filesystem
7
5
  MNT_SYNCHRONOUS = 0x00000002 # file system written synchronously
8
6
  MNT_NOEXEC = 0x00000004 # can't exec from filesystem
@@ -33,7 +31,7 @@ module Sys
33
31
  MNT_LOCAL | MNT_QUOTA |
34
32
  MNT_ROOTFS | MNT_DOVOLFS | MNT_DONTBROWSE |
35
33
  MNT_IGNORE_OWNERSHIP | MNT_AUTOMOUNTED | MNT_JOURNALED |
36
- MNT_NOUSERXATTR | MNT_DEFWRITE | MNT_MULTILABEL |
34
+ MNT_NOUSERXATTR | MNT_DEFWRITE | MNT_MULTILABEL |
37
35
  MNT_NOATIME | MNT_CPROTECT
38
36
  )
39
37
 
@@ -58,7 +56,7 @@ module Sys
58
56
  MS_SHARED = 1 << 20
59
57
  MS_RELATIME = 1 << 21
60
58
  MS_KERNMOUNT = 1 << 22
61
- MS_I_VERSION = 1 << 23
59
+ MS_I_VERSION = 1 << 23
62
60
  MS_STRICTATIME = 1 << 24
63
61
  MS_ACTIVE = 1 << 30
64
62
  MS_NOUSER = 1 << 31
@@ -7,14 +7,16 @@ module Sys
7
7
 
8
8
  ffi_lib FFI::Library::LIBC
9
9
 
10
- if RbConfig::CONFIG['host_os'] =~ /sunos|solaris|linux/i
11
- attach_function(:statvfs, :statvfs64, [:string, :pointer], :int)
10
+ if RbConfig::CONFIG['host_os'] =~ /sunos|solaris/i
11
+ attach_function(:statvfs, :statvfs64, %i[string pointer], :int)
12
+ elsif RbConfig::CONFIG['host_os'] =~ /linux/i && RbConfig::CONFIG['arch'] =~ /64/
13
+ attach_function(:statvfs, :statvfs64, %i[string pointer], :int)
12
14
  else
13
- attach_function(:statvfs, [:string, :pointer], :int)
15
+ attach_function(:statvfs, %i[string pointer], :int)
14
16
  end
15
17
 
16
18
  attach_function(:strerror, [:int], :string)
17
- attach_function(:mount_c, :mount, [:string, :string, :string, :ulong, :string], :int)
19
+ attach_function(:mount_c, :mount, %i[string string string ulong string], :int)
18
20
 
19
21
  begin
20
22
  attach_function(:umount_c, :umount, [:string], :int)
@@ -28,26 +30,26 @@ module Sys
28
30
 
29
31
  begin
30
32
  if RbConfig::CONFIG['host_os'] =~ /sunos|solaris/i
31
- attach_function(:fopen, [:string, :string], :pointer)
33
+ attach_function(:fopen, %i[string string], :pointer)
32
34
  attach_function(:fclose, [:pointer], :int)
33
- attach_function(:getmntent, [:pointer, :pointer], :int)
35
+ attach_function(:getmntent, %i[pointer pointer], :int)
34
36
  private_class_method :fopen, :fclose, :getmntent
35
37
  else
36
38
  attach_function(:getmntent, [:pointer], :pointer)
37
- attach_function(:setmntent, [:string, :string], :pointer)
39
+ attach_function(:setmntent, %i[string string], :pointer)
38
40
  attach_function(:endmntent, [:pointer], :int)
39
- attach_function(:umount2, [:string, :int], :int)
41
+ attach_function(:umount2, %i[string int], :int)
40
42
  private_class_method :getmntent, :setmntent, :endmntent, :umount2
41
43
  end
42
44
  rescue FFI::NotFoundError
43
45
  if RbConfig::CONFIG['host_os'] =~ /darwin|osx|mach/i
44
46
  begin
45
- attach_function(:getmntinfo, :getmntinfo64, [:pointer, :int], :int)
47
+ attach_function(:getmntinfo, :getmntinfo64, %i[pointer int], :int)
46
48
  rescue FFI::NotFoundError
47
- attach_function(:getmntinfo, [:pointer, :int], :int) # Big Sur and later
49
+ attach_function(:getmntinfo, %i[pointer int], :int) # Big Sur and later
48
50
  end
49
51
  else
50
- attach_function(:getmntinfo, [:pointer, :int], :int)
52
+ attach_function(:getmntinfo, %i[pointer int], :int)
51
53
  end
52
54
  private_class_method :getmntinfo
53
55
  end
@@ -40,20 +40,37 @@ module Sys
40
40
  :f_mntonname, [:char, MNAMELEN]
41
41
  )
42
42
  elsif RbConfig::CONFIG['host_os'] =~ /linux/i
43
- layout(
44
- :f_type, :ulong,
45
- :f_bsize, :ulong,
46
- :f_blocks, :uint64,
47
- :f_bfree, :uint64,
48
- :f_bavail, :uint64,
49
- :f_files, :uint64,
50
- :f_ffree, :uint64,
51
- :f_fsid, [:int, 2],
52
- :f_namelen, :ulong,
53
- :f_frsize, :ulong,
54
- :f_flags, :ulong,
55
- :f_spare, [:ulong, 4]
56
- )
43
+ if RbConfig::CONFIG['arch'] =~ /64/
44
+ layout(
45
+ :f_type, :ulong,
46
+ :f_bsize, :ulong,
47
+ :f_blocks, :uint64,
48
+ :f_bfree, :uint64,
49
+ :f_bavail, :uint64,
50
+ :f_files, :uint64,
51
+ :f_ffree, :uint64,
52
+ :f_fsid, [:int, 2],
53
+ :f_namelen, :ulong,
54
+ :f_frsize, :ulong,
55
+ :f_flags, :ulong,
56
+ :f_spare, [:ulong, 4]
57
+ )
58
+ else
59
+ layout(
60
+ :f_type, :ulong,
61
+ :f_bsize, :ulong,
62
+ :f_blocks, :uint32,
63
+ :f_bfree, :uint32,
64
+ :f_bavail, :uint32,
65
+ :f_files, :uint32,
66
+ :f_ffree, :uint32,
67
+ :f_fsid, [:int, 2],
68
+ :f_namelen, :ulong,
69
+ :f_frsize, :ulong,
70
+ :f_flags, :ulong,
71
+ :f_spare, [:ulong, 4]
72
+ )
73
+ end
57
74
  else
58
75
  layout(
59
76
  :f_bsize, :uint32,
@@ -134,6 +151,7 @@ module Sys
134
151
  :f_ffree, :uint,
135
152
  :f_favail, :uint,
136
153
  :f_fsid, :ulong,
154
+ :f_unused, :int,
137
155
  :f_flag, :ulong,
138
156
  :f_namemax, :ulong,
139
157
  :f_spare, [:int, 6]
@@ -181,7 +181,7 @@ module Sys
181
181
 
182
182
  boot_time = get_boot_time
183
183
 
184
- drives.each{ |drive|
184
+ drives.each do |drive|
185
185
  mount = Mount.new
186
186
  volume = FFI::MemoryPointer.new(:char, MAXPATH)
187
187
  fsname = FFI::MemoryPointer.new(:char, MAXPATH)
@@ -206,7 +206,7 @@ module Sys
206
206
 
207
207
  # Skip unmounted floppies or cd-roms, or inaccessible drives
208
208
  unless bool
209
- if [5,21].include?(FFI.errno) # ERROR_NOT_READY or ERROR_ACCESS_DENIED
209
+ if [5, 21].include?(FFI.errno) # ERROR_NOT_READY or ERROR_ACCESS_DENIED
210
210
  next
211
211
  else
212
212
  raise SystemCallError.new('GetVolumeInformation', FFI.errno)
@@ -218,7 +218,7 @@ module Sys
218
218
 
219
219
  name = 0.chr * MAXPATH
220
220
 
221
- if QueryDosDeviceA(drive[0,2], name, name.size) == 0
221
+ if QueryDosDeviceA(drive[0, 2], name, name.size) == 0
222
222
  raise SystemCallError.new('QueryDosDevice', FFI.errno)
223
223
  end
224
224
 
@@ -231,7 +231,7 @@ module Sys
231
231
  else
232
232
  mounts << mount
233
233
  end
234
- }
234
+ end
235
235
 
236
236
  mounts # Nil if the block form was used.
237
237
  end
@@ -397,8 +397,6 @@ module Sys
397
397
  self
398
398
  end
399
399
 
400
- private
401
-
402
400
  # This method is used to get the boot time of the system, which is used
403
401
  # for the mount_time attribute within the File.mounts method.
404
402
  #
@@ -411,36 +409,37 @@ module Sys
411
409
  raise Error, e
412
410
  else
413
411
  query = 'select LastBootupTime from Win32_OperatingSystem'
414
- results = wmi.ExecQuery(query)
415
- results.each{ |ole|
416
- time_array = Time.parse(ole.LastBootupTime.split('.').first)
417
- return Time.mktime(*time_array)
418
- }
412
+ ole = wmi.ExecQuery(query).ItemIndex(0)
413
+ time_array = Time.parse(ole.LastBootupTime.split('.').first)
414
+ Time.mktime(*time_array)
419
415
  end
420
416
  end
421
417
 
418
+ private_class_method :get_boot_time
419
+
422
420
  # Private method that converts filesystem flags into a comma separated
423
421
  # list of strings. The presentation is meant as a rough analogue to the
424
422
  # way options are presented for Unix filesystems.
425
423
  #
426
424
  def self.get_options(flags)
427
- str = ""
428
- str << " casepres" if CASE_PRESERVED_NAMES & flags > 0
429
- str << " casesens" if CASE_SENSITIVE_SEARCH & flags > 0
430
- str << " compression" if FILE_COMPRESSION & flags > 0
431
- str << " namedstreams" if NAMED_STREAMS & flags > 0
432
- str << " pacls" if PERSISTENT_ACLS & flags > 0
433
- str << " ro" if READ_ONLY_VOLUME & flags > 0
434
- str << " encryption" if SUPPORTS_ENCRYPTION & flags > 0
435
- str << " objids" if SUPPORTS_OBJECT_IDS & flags > 0
436
- str << " rpoints" if SUPPORTS_REPARSE_POINTS & flags > 0
437
- str << " sparse" if SUPPORTS_SPARSE_FILES & flags > 0
438
- str << " unicode" if UNICODE_ON_DISK & flags > 0
439
- str << " compressed" if VOLUME_IS_COMPRESSED & flags > 0
440
-
441
- str.tr!(' ', ',')
442
- str = str[1..-1] # Ignore the first comma
443
- str
425
+ str = ''
426
+ str << ' casepres' if CASE_PRESERVED_NAMES & flags > 0
427
+ str << ' casesens' if CASE_SENSITIVE_SEARCH & flags > 0
428
+ str << ' compression' if FILE_COMPRESSION & flags > 0
429
+ str << ' namedstreams' if NAMED_STREAMS & flags > 0
430
+ str << ' pacls' if PERSISTENT_ACLS & flags > 0
431
+ str << ' ro' if READ_ONLY_VOLUME & flags > 0
432
+ str << ' encryption' if SUPPORTS_ENCRYPTION & flags > 0
433
+ str << ' objids' if SUPPORTS_OBJECT_IDS & flags > 0
434
+ str << ' rpoints' if SUPPORTS_REPARSE_POINTS & flags > 0
435
+ str << ' sparse' if SUPPORTS_SPARSE_FILES & flags > 0
436
+ str << ' unicode' if UNICODE_ON_DISK & flags > 0
437
+ str << ' compressed' if VOLUME_IS_COMPRESSED & flags > 0
438
+
439
+ str.tr!(' ', ',')
440
+ str[1..-1] # Ignore the first comma
444
441
  end
442
+
443
+ private_class_method :get_options
445
444
  end
446
445
  end
@@ -15,21 +15,21 @@ module Sys
15
15
  end
16
16
 
17
17
  attach_pfunc :DeleteVolumeMountPointA, [:string], :bool
18
- attach_pfunc :GetDiskFreeSpaceW, [:buffer_in, :pointer, :pointer, :pointer, :pointer], :bool
19
- attach_pfunc :GetDiskFreeSpaceExW, [:buffer_in, :pointer, :pointer, :pointer], :bool
20
- attach_pfunc :GetLogicalDriveStringsA, [:ulong, :pointer], :ulong
18
+ attach_pfunc :GetDiskFreeSpaceW, %i[buffer_in pointer pointer pointer pointer], :bool
19
+ attach_pfunc :GetDiskFreeSpaceExW, %i[buffer_in pointer pointer pointer], :bool
20
+ attach_pfunc :GetLogicalDriveStringsA, %i[ulong pointer], :ulong
21
21
 
22
22
  attach_pfunc :GetVolumeInformationA,
23
- [:buffer_in, :pointer, :ulong, :pointer, :pointer, :pointer, :pointer, :ulong],
24
- :bool
23
+ %i[buffer_in pointer ulong pointer pointer pointer pointer ulong],
24
+ :bool
25
25
 
26
26
  attach_pfunc :GetVolumeInformationW,
27
- [:buffer_in, :pointer, :ulong, :pointer, :pointer, :pointer, :pointer, :ulong],
28
- :bool
27
+ %i[buffer_in pointer ulong pointer pointer pointer pointer ulong],
28
+ :bool
29
29
 
30
- attach_pfunc :GetVolumeNameForVolumeMountPointW, [:buffer_in, :buffer_in, :ulong], :bool
31
- attach_pfunc :QueryDosDeviceA, [:buffer_in, :buffer_out, :ulong], :ulong
32
- attach_pfunc :SetVolumeMountPointW, [:buffer_in, :buffer_in], :bool
30
+ attach_pfunc :GetVolumeNameForVolumeMountPointW, %i[buffer_in buffer_in ulong], :bool
31
+ attach_pfunc :QueryDosDeviceA, %i[buffer_in buffer_out ulong], :ulong
32
+ attach_pfunc :SetVolumeMountPointW, %i[buffer_in buffer_in], :bool
33
33
 
34
34
  ffi_lib :shlwapi
35
35
 
@@ -2,6 +2,6 @@ class String
2
2
  # Convenience method for converting strings to UTF-16LE for wide character
3
3
  # functions that require it.
4
4
  def wincode
5
- (self.tr(File::SEPARATOR, File::ALT_SEPARATOR) + 0.chr).encode('UTF-16LE')
5
+ (tr(File::SEPARATOR, File::ALT_SEPARATOR) + 0.chr).encode('UTF-16LE')
6
6
  end
7
7
  end
@@ -21,7 +21,7 @@ RSpec.describe Sys::Filesystem, :unix => true do
21
21
  end
22
22
 
23
23
  example "version number is set to the expected value" do
24
- expect(Sys::Filesystem::VERSION).to eq('1.4.1')
24
+ expect(Sys::Filesystem::VERSION).to eq('1.4.2')
25
25
  expect(Sys::Filesystem::VERSION).to be_frozen
26
26
  end
27
27
 
@@ -359,8 +359,11 @@ RSpec.describe Sys::Filesystem, :unix => true do
359
359
  end
360
360
 
361
361
  context "FFI" do
362
- require 'mkmf-lite'
363
- include Mkmf::Lite
362
+ before(:context) do
363
+ require 'mkmf-lite'
364
+ end
365
+
366
+ let(:dummy) { Class.new { extend Mkmf::Lite } }
364
367
 
365
368
  example "ffi functions are private" do
366
369
  expect(Sys::Filesystem.methods.include?('statvfs')).to be false
@@ -369,21 +372,21 @@ RSpec.describe Sys::Filesystem, :unix => true do
369
372
 
370
373
  example "statfs struct is expected size" do
371
374
  header = bsd || darwin ? 'sys/mount.h' : 'sys/statfs.h'
372
- expect(Sys::Filesystem::Structs::Statfs.size).to eq(check_sizeof('struct statfs', header))
375
+ expect(Sys::Filesystem::Structs::Statfs.size).to eq(dummy.check_sizeof('struct statfs', header))
373
376
  end
374
377
 
375
378
  example "statvfs struct is expected size" do
376
- expect(Sys::Filesystem::Structs::Statvfs.size).to eq(check_sizeof('struct statvfs', 'sys/statvfs.h'))
379
+ expect(Sys::Filesystem::Structs::Statvfs.size).to eq(dummy.check_sizeof('struct statvfs', 'sys/statvfs.h'))
377
380
  end
378
381
 
379
382
  example "mnttab struct is expected size" do
380
383
  skip "mnttab test skipped except on Solaris" unless solaris
381
- expect(Sys::Filesystem::Structs::Mnttab.size).to eq(check_sizeof('struct mnttab', 'sys/mnttab.h'))
384
+ expect(Sys::Filesystem::Structs::Mnttab.size).to eq(dummy.check_sizeof('struct mnttab', 'sys/mnttab.h'))
382
385
  end
383
386
 
384
387
  example "mntent struct is expected size" do
385
388
  skip "mnttab test skipped except on Linux" unless linux
386
- expect(Sys::Filesystem::Structs::Mntent.size).to eq(check_sizeof('struct mntent', 'mntent.h'))
389
+ expect(Sys::Filesystem::Structs::Mntent.size).to eq(dummy.check_sizeof('struct mntent', 'mntent.h'))
387
390
  end
388
391
  end
389
392
  end
@@ -17,7 +17,7 @@ RSpec.describe Sys::Filesystem, :windows => true do
17
17
  end
18
18
 
19
19
  example "version number is set to the expected value" do
20
- expect(Sys::Filesystem::VERSION).to eq('1.4.1')
20
+ expect(Sys::Filesystem::VERSION).to eq('1.4.2')
21
21
  expect(Sys::Filesystem::VERSION).to be_frozen
22
22
  end
23
23
 
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'sys-filesystem'
5
- spec.version = '1.4.1'
5
+ spec.version = '1.4.2'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.email = 'djberg96@gmail.com'
8
8
  spec.homepage = 'https://github.com/djberg96/sys-filesystem'
@@ -13,14 +13,14 @@ Gem::Specification.new do |spec|
13
13
  spec.cert_chain = Dir['certs/*']
14
14
 
15
15
  spec.add_dependency('ffi', '~> 1.1')
16
- spec.add_development_dependency('mkmf-lite', '~> 0.4')
16
+ spec.add_development_dependency('mkmf-lite', '~> 0.5') unless Gem.win_platform?
17
17
  spec.add_development_dependency('rake')
18
18
  spec.add_development_dependency('rspec', '~> 3.9')
19
19
 
20
20
  spec.metadata = {
21
21
  'homepage_uri' => 'https://github.com/djberg96/sys-filesystem',
22
22
  'bug_tracker_uri' => 'https://github.com/djberg96/sys-filesystem/issues',
23
- 'changelog_uri' => 'https://github.com/djberg96/sys-filesystem/blob/ffi/CHANGES.md',
23
+ 'changelog_uri' => 'https://github.com/djberg96/sys-filesystem/blob/main/CHANGES.md',
24
24
  'documentation_uri' => 'https://github.com/djberg96/sys-filesystem/wiki',
25
25
  'source_code_uri' => 'https://github.com/djberg96/sys-filesystem',
26
26
  'wiki_uri' => 'https://github.com/djberg96/sys-filesystem/wiki'
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sys-filesystem
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
@@ -35,7 +35,7 @@ cert_chain:
35
35
  ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
36
36
  WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
37
37
  -----END CERTIFICATE-----
38
- date: 2020-12-30 00:00:00.000000000 Z
38
+ date: 2021-07-22 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: ffi
@@ -57,14 +57,14 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0.4'
60
+ version: '0.5'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.4'
67
+ version: '0.5'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: rake
70
70
  requirement: !ruby/object:Gem::Requirement
@@ -130,11 +130,11 @@ licenses:
130
130
  metadata:
131
131
  homepage_uri: https://github.com/djberg96/sys-filesystem
132
132
  bug_tracker_uri: https://github.com/djberg96/sys-filesystem/issues
133
- changelog_uri: https://github.com/djberg96/sys-filesystem/blob/ffi/CHANGES.md
133
+ changelog_uri: https://github.com/djberg96/sys-filesystem/blob/main/CHANGES.md
134
134
  documentation_uri: https://github.com/djberg96/sys-filesystem/wiki
135
135
  source_code_uri: https://github.com/djberg96/sys-filesystem
136
136
  wiki_uri: https://github.com/djberg96/sys-filesystem/wiki
137
- post_install_message:
137
+ post_install_message:
138
138
  rdoc_options: []
139
139
  require_paths:
140
140
  - lib
@@ -149,8 +149,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  - !ruby/object:Gem::Version
150
150
  version: '0'
151
151
  requirements: []
152
- rubygems_version: 3.2.3
153
- signing_key:
152
+ rubygems_version: 3.0.3.1
153
+ signing_key:
154
154
  specification_version: 4
155
155
  summary: A Ruby interface for getting file system information.
156
156
  test_files:
metadata.gz.sig CHANGED
@@ -1,4 +1,3 @@
1
-
2
- ��24��WJ���A�� C
3
- ������]k2������'Ք��ƍ=R��?6��Z� E�D��f���E6����&?��X �m�0L�>�'ɓ2�,f8�$�
4
- ��Pp�F��1�#�� JXn5��[�O�h�X(ڞ&�3FI��8���E���o�<����"ҧP��c2��B������b�/�}�դ��
1
+ �~)g`؆�'��iI��uԂS)�
2
+ L��"5�ފ�rȥ�5�/����E9������,;}̡����� �h�'Sp|q�IlB2Z�p�L��k�XzyV�� ��\�Ҩnx������b��*r������))`�!��rr_����{hkB=8���
5
- ���]L��a��ycpkS�L�oGO�b��qR�?1;O�J&��� ��&�� �M�@BU�{>��[���� p��i"S}
3
+ �����٤�� a�,Q'3"�%� |,YU���j��BJ���RȎ�-��E>�A=i��e�%���b9d\�C~� !%���;�:F��, u�\��=΁2.�4ݿ]�@� O�Ϭs,Yi���i��wUt��T=�������