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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGES +4 -0
- data/lib/sys/filesystem.rb +1 -1
- data/lib/sys/windows/sys/filesystem.rb +18 -14
- data/sys-filesystem.gemspec +1 -1
- data/test/test_sys_filesystem_unix.rb +1 -1
- data/test/test_sys_filesystem_windows.rb +6 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9095d7fbf62ef5ff5cca1f6c4b43439a72e1f7b
|
4
|
+
data.tar.gz: e93c09ed0f9f0e14abdbb22ba617d418214b8252
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
data/lib/sys/filesystem.rb
CHANGED
@@ -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
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
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,
|
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
|
-
|
291
|
-
|
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
|
-
|
296
|
-
|
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,
|
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)
|
data/sys-filesystem.gemspec
CHANGED
@@ -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.
|
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'
|
@@ -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.
|
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.
|
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-
|
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
|