sys-filesystem 1.4.1 → 1.4.2

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.
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=�������