sys-filesystem 1.1.6 → 1.1.7

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
  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