sys-filesystem 1.1.6 → 1.1.7

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
  SHA1:
3
- metadata.gz: 819b6d21deb2c0e958a38ec3ba23f511e343286b
4
- data.tar.gz: d180ac914f02bde52231efe4cb903f00ca1f3173
3
+ metadata.gz: f9095d7fbf62ef5ff5cca1f6c4b43439a72e1f7b
4
+ data.tar.gz: e93c09ed0f9f0e14abdbb22ba617d418214b8252
5
5
  SHA512:
6
- metadata.gz: 85d89bbe808f6ec1259f686a5b762044b9e07a03db5cac98ba269dd1034b97d30d905fb5c709ddad3eb9b0c2122de7553404acc781522726bcfa78acf8c7ed2b
7
- data.tar.gz: 81adece28fb90a500819200c82d1a871f0fa238f1a020394db7defa35e1d8c73bced46da7bc98bc7b979ade3b85dea9960c2e12b03c5dc7ecd7512acd07cbbba
6
+ metadata.gz: 513de924e461b85b1c2acc623e90c58bd917bf15320f787ea56d65fa5008705a4dca2ca8227ab68d0861892a19e92e47a7a961c3aba102c69a3e71512f298c33
7
+ data.tar.gz: c3f334218d63293a9bff63cf31bc630a3492572ee57745d8c501b62f9526fc7cd816e12ae2d997c901eab96813702eb00d0d1f07561806061f18f0c9b3a5a901
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/CHANGES CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.1.7 - 1-Aug-2016
2
+ * Fixed an issue in the stat method for MS Windows where the blocks_avail
3
+ value was not correct. Thanks go to Maxime Lapointe for the spot.
4
+
1
5
  == 1.1.6 - 17-May-2016
2
6
  * On versions that use setmntent or fopen, explicitly raise an error if
3
7
  either of those calls return a null value.
@@ -1,7 +1,7 @@
1
1
  module Sys
2
2
  class Filesystem
3
3
  # The version of the sys-filesystem library
4
- VERSION = '1.1.6'.freeze
4
+ VERSION = '1.1.7'.freeze
5
5
  end
6
6
  end
7
7
 
@@ -65,8 +65,7 @@ module Sys
65
65
  # The total number of unused blocks.
66
66
  attr_reader :blocks_free
67
67
 
68
- # The total number of unused blocks available to unprivileged
69
- # processes. Identical to +blocks+ at the moment.
68
+ # The total number of unused blocks available to unprivileged processes.
70
69
  attr_reader :blocks_available
71
70
 
72
71
  # Total number of files/inodes that can be created on the file system.
@@ -277,24 +276,26 @@ module Sys
277
276
  bytes_free = bytes_free.read_ulong_long
278
277
  total_bytes = total_bytes.read_ulong_long
279
278
 
280
- sectors = FFI::MemoryPointer.new(:ulong_long)
281
- bytes = FFI::MemoryPointer.new(:ulong_long)
282
- free = FFI::MemoryPointer.new(:ulong_long)
283
- total = FFI::MemoryPointer.new(:ulong_long)
279
+ sectors_ptr = FFI::MemoryPointer.new(:ulong_long)
280
+ bytes_ptr = FFI::MemoryPointer.new(:ulong_long)
281
+ free_ptr = FFI::MemoryPointer.new(:ulong_long)
282
+ total_ptr = FFI::MemoryPointer.new(:ulong_long)
284
283
 
285
284
  # We need this call for the total/cluster info, which is not in the Ex call.
286
- unless GetDiskFreeSpaceW(wpath, sectors, bytes, free, total)
285
+ unless GetDiskFreeSpaceW(wpath, sectors_ptr, bytes_ptr, free_ptr, total_ptr)
287
286
  raise SystemCallError.new('GetDiskFreeSpace', FFI.errno)
288
287
  end
289
288
 
290
- sectors = sectors.read_ulong_long
291
- bytes = bytes.read_ulong_long
292
- free = free.read_ulong_long
293
- total = total.read_ulong_long
289
+ sectors_per_cluster = sectors_ptr.read_ulong_long
290
+ bytes_per_sector = bytes_ptr.read_ulong_long
294
291
 
295
- block_size = sectors * bytes
296
- blocks_avail = total_bytes / block_size
292
+ free_ptr.free
293
+ total_ptr.free
294
+
295
+ block_size = sectors_per_cluster * bytes_per_sector
296
+ blocks_avail = bytes_avail / block_size
297
297
  blocks_free = bytes_free / block_size
298
+ total_blocks = total_bytes / block_size
298
299
 
299
300
  vol_name_ptr = FFI::MemoryPointer.new(:char, MAXPATH)
300
301
  base_type_ptr = FFI::MemoryPointer.new(:char, MAXPATH)
@@ -322,16 +323,19 @@ module Sys
322
323
  flags = flags_ptr.read_ulong
323
324
  base_type = base_type_ptr.read_string(base_type_ptr.size).tr(0.chr, '')
324
325
 
326
+ # Lets explicitly free our pointers
325
327
  vol_name_ptr.free
326
328
  vol_serial_ptr.free
327
329
  name_max_ptr.free
328
330
  flags_ptr.free
329
331
  base_type_ptr.free
332
+ sectors_ptr.free
333
+ bytes_ptr.free
330
334
 
331
335
  stat_obj = Stat.new
332
336
  stat_obj.instance_variable_set(:@path, path)
333
337
  stat_obj.instance_variable_set(:@block_size, block_size)
334
- stat_obj.instance_variable_set(:@blocks, blocks_avail)
338
+ stat_obj.instance_variable_set(:@blocks, total_blocks)
335
339
  stat_obj.instance_variable_set(:@blocks_available, blocks_avail)
336
340
  stat_obj.instance_variable_set(:@blocks_free, blocks_free)
337
341
  stat_obj.instance_variable_set(:@name_max, name_max)
@@ -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.1.6'
5
+ spec.version = '1.1.7'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.email = 'djberg96@gmail.com'
8
8
  spec.homepage = 'https://github.com/djberg96/sys-filesystem'
@@ -25,7 +25,7 @@ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
25
25
  end
26
26
 
27
27
  def test_version
28
- assert_equal('1.1.6', Filesystem::VERSION)
28
+ assert_equal('1.1.7', Filesystem::VERSION)
29
29
  end
30
30
 
31
31
  def test_stat_path
@@ -19,7 +19,7 @@ class TC_Sys_Filesystem_Windows < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  test "version number is set to the expected value" do
22
- assert_equal('1.1.6', Filesystem::VERSION)
22
+ assert_equal('1.1.7', Filesystem::VERSION)
23
23
  end
24
24
 
25
25
  test "stat path works as expected" do
@@ -52,6 +52,11 @@ class TC_Sys_Filesystem_Windows < Test::Unit::TestCase
52
52
  assert_kind_of(Fixnum, @stat.blocks_available)
53
53
  end
54
54
 
55
+ test "block stats return expected relative values" do
56
+ assert_true(@stat.blocks >= @stat.blocks_free)
57
+ assert_true(@stat.blocks_free >= @stat.blocks_available)
58
+ end
59
+
55
60
  test "stat files works as expected" do
56
61
  assert_respond_to(@stat, :files)
57
62
  assert_nil(@stat.files)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sys-filesystem
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -30,7 +30,7 @@ cert_chain:
30
30
  EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
31
31
  tGSHgAmcLlkdGgan182qsE/4kKM=
32
32
  -----END CERTIFICATE-----
33
- date: 2016-05-17 00:00:00.000000000 Z
33
+ date: 2016-08-01 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: ffi
metadata.gz.sig CHANGED
Binary file