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