win32-file 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES +6 -0
- data/README +2 -3
- data/Rakefile +1 -1
- data/lib/win32/file.rb +25 -19
- data/test/test_win32_file_link.rb +2 -2
- data/test/test_win32_file_misc.rb +1 -1
- data/test/test_win32_file_path.rb +1 -1
- data/test/test_win32_file_stat.rb +3 -3
- data/win32-file.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3ec34d5df87b28440da5d0476baf65bd6b8a49b
|
4
|
+
data.tar.gz: 1572144c7862601cd65bc652e903ee08d6818b05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b401fa9b87331da00cf249adae527d020387241acb7687df4a6c446d554f0a35f515779b5d01e5387422bdff407b9bedf38576e11bd356050a202405e890ad1
|
7
|
+
data.tar.gz: baef5724c05e13c1e0c49e02aa6a9487916a8cbaa07fdd1241d775b941052ebc613b21419efda22bf383e04daebc764b1487b5989522a46c247b23958d473ce6
|
data/CHANGES
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 0.7.2 - 7-Oct-2014
|
2
|
+
* Replaced File.exists? with File.exist? to avoid deprecation warnings
|
3
|
+
for Ruby 2.x.
|
4
|
+
* Some minor memory improvements by explicitly freeing some pointers.
|
5
|
+
* Minor README updates.
|
6
|
+
|
1
7
|
== 0.7.1 - 28-Apr-2014
|
2
8
|
* Modified all custom singleton methods to accept arguments that define either
|
3
9
|
to_str or to_path to be in line with MRI's behavior.
|
data/README
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
methods have been redefined to make them work properly on MS Windows.
|
4
4
|
|
5
5
|
== Prerequisites
|
6
|
-
* windows-pr
|
7
6
|
* win32-file-stat
|
8
7
|
|
9
8
|
== Installation
|
@@ -49,9 +48,9 @@
|
|
49
48
|
* File.world_writable? # Not implemented in MRI
|
50
49
|
|
51
50
|
== Known issues or bugs
|
52
|
-
|
51
|
+
The File.exist? method will return true on stale symlinks.
|
53
52
|
|
54
|
-
Please report any issues you find on the github page at:
|
53
|
+
Please report any other issues you find on the github page at:
|
55
54
|
|
56
55
|
https://github.com/djberg96/win32-file/issues
|
57
56
|
|
data/Rakefile
CHANGED
data/lib/win32/file.rb
CHANGED
@@ -9,7 +9,7 @@ class File
|
|
9
9
|
extend Windows::File::Functions
|
10
10
|
|
11
11
|
# The version of the win32-file library
|
12
|
-
WIN32_FILE_VERSION = '0.7.
|
12
|
+
WIN32_FILE_VERSION = '0.7.2'
|
13
13
|
|
14
14
|
class << self
|
15
15
|
alias_method :join_orig, :join
|
@@ -82,6 +82,8 @@ class File
|
|
82
82
|
file = wfile.encode(encoding)[/^[^\0]*/]
|
83
83
|
file.sub!(/\\+\z/, '') # Trim trailing slashes
|
84
84
|
|
85
|
+
ptr.free
|
86
|
+
|
85
87
|
file
|
86
88
|
end
|
87
89
|
|
@@ -138,6 +140,8 @@ class File
|
|
138
140
|
# Return to original encoding
|
139
141
|
file = wfile.tr(0.chr, '').encode(encoding)
|
140
142
|
|
143
|
+
ptr.free
|
144
|
+
|
141
145
|
file
|
142
146
|
end
|
143
147
|
|
@@ -235,7 +239,7 @@ class File
|
|
235
239
|
# Returns whether or not +file+ is a symlink.
|
236
240
|
#
|
237
241
|
def self.symlink?(file)
|
238
|
-
return false unless File.
|
242
|
+
return false unless File.exist?(file)
|
239
243
|
|
240
244
|
bool = false
|
241
245
|
wfile = string_check(file).wincode
|
@@ -302,7 +306,7 @@ class File
|
|
302
306
|
if symlink?(file)
|
303
307
|
if relative_to
|
304
308
|
result = File.join(relative_to, File.basename(readlink(file)))
|
305
|
-
if File.
|
309
|
+
if File.exist?(result)
|
306
310
|
result
|
307
311
|
else
|
308
312
|
raise SystemCallError.new(result, 2) # Errno::ENOENT
|
@@ -317,15 +321,17 @@ class File
|
|
317
321
|
|
318
322
|
# Returns the path of the of the symbolic link referred to by +file+.
|
319
323
|
#
|
324
|
+
# Unlike unixy platforms, this will raise an error if the link is stale.
|
325
|
+
#
|
320
326
|
def self.readlink(file)
|
321
327
|
file = string_check(file)
|
322
328
|
|
323
|
-
if
|
329
|
+
if exist?(file) && !symlink?(file)
|
324
330
|
raise SystemCallError.new(22) # EINVAL, match the spec
|
325
331
|
end
|
326
332
|
|
327
333
|
wfile = file.wincode
|
328
|
-
path = 0.chr *
|
334
|
+
path = 0.chr * 1024
|
329
335
|
|
330
336
|
if File.directory?(file)
|
331
337
|
flags = FILE_FLAG_BACKUP_SEMANTICS
|
@@ -370,35 +376,35 @@ class File
|
|
370
376
|
# block device is a removable drive, cdrom or ramdisk.
|
371
377
|
#
|
372
378
|
def self.blockdev?(file)
|
373
|
-
return false unless File.
|
379
|
+
return false unless File.exist?(file)
|
374
380
|
File::Stat.new(file).blockdev?
|
375
381
|
end
|
376
382
|
|
377
383
|
# Returns whether or not the file is a character device.
|
378
384
|
#
|
379
385
|
def self.chardev?(file)
|
380
|
-
return false unless File.
|
386
|
+
return false unless File.exist?(file)
|
381
387
|
File::Stat.new(file).chardev?
|
382
388
|
end
|
383
389
|
|
384
390
|
# Returns whether or not the file is a directory.
|
385
391
|
#
|
386
392
|
def self.directory?(file)
|
387
|
-
return false unless File.
|
393
|
+
return false unless File.exist?(file)
|
388
394
|
File::Stat.new(file).directory?
|
389
395
|
end
|
390
396
|
|
391
397
|
# Returns whether or not the file is executable.
|
392
398
|
#
|
393
399
|
def self.executable?(file)
|
394
|
-
return false unless File.
|
400
|
+
return false unless File.exist?(file)
|
395
401
|
File::Stat.new(file).executable?
|
396
402
|
end
|
397
403
|
|
398
404
|
# Returns whether or not the file is a regular file.
|
399
405
|
#
|
400
406
|
def self.file?(file)
|
401
|
-
return false unless File.
|
407
|
+
return false unless File.exist?(file)
|
402
408
|
File::Stat.new(file).file?
|
403
409
|
end
|
404
410
|
|
@@ -412,35 +418,35 @@ class File
|
|
412
418
|
# Returns true if the process owner's ID is the same as one of the file's groups.
|
413
419
|
#
|
414
420
|
def self.grpowned?(file)
|
415
|
-
return false unless File.
|
421
|
+
return false unless File.exist?(file)
|
416
422
|
File::Stat.new(file).grpowned?
|
417
423
|
end
|
418
424
|
|
419
425
|
# Returns whether or not the current process owner is the owner of the file.
|
420
426
|
#
|
421
427
|
def self.owned?(file)
|
422
|
-
return false unless File.
|
428
|
+
return false unless File.exist?(file)
|
423
429
|
File::Stat.new(file).owned?
|
424
430
|
end
|
425
431
|
|
426
432
|
# Returns whether or not the file is a pipe.
|
427
433
|
#
|
428
434
|
def self.pipe?(file)
|
429
|
-
return false unless File.
|
435
|
+
return false unless File.exist?(file)
|
430
436
|
File::Stat.new(file).pipe?
|
431
437
|
end
|
432
438
|
|
433
439
|
# Returns whether or not the file is readable by the process owner.
|
434
440
|
#
|
435
441
|
def self.readable?(file)
|
436
|
-
return false unless File.
|
442
|
+
return false unless File.exist?(file)
|
437
443
|
File::Stat.new(file).readable?
|
438
444
|
end
|
439
445
|
|
440
446
|
# Synonym for File.readable?
|
441
447
|
#
|
442
448
|
def self.readable_real?(file)
|
443
|
-
return false unless File.
|
449
|
+
return false unless File.exist?(file)
|
444
450
|
File::Stat.new(file).readable_real?
|
445
451
|
end
|
446
452
|
|
@@ -454,7 +460,7 @@ class File
|
|
454
460
|
# merely returns true or false, not permission bits (or nil).
|
455
461
|
#
|
456
462
|
def self.world_readable?(file)
|
457
|
-
return false unless File.
|
463
|
+
return false unless File.exist?(file)
|
458
464
|
File::Stat.new(file).world_readable?
|
459
465
|
end
|
460
466
|
|
@@ -462,21 +468,21 @@ class File
|
|
462
468
|
# merely returns true or false, not permission bits (or nil).
|
463
469
|
#
|
464
470
|
def self.world_writable?(file)
|
465
|
-
return false unless File.
|
471
|
+
return false unless File.exist?(file)
|
466
472
|
File::Stat.new(file).world_writable?
|
467
473
|
end
|
468
474
|
|
469
475
|
# Returns whether or not the file is writable by the current process owner.
|
470
476
|
#
|
471
477
|
def self.writable?(file)
|
472
|
-
return false unless File.
|
478
|
+
return false unless File.exist?(file)
|
473
479
|
File::Stat.new(file).writable?
|
474
480
|
end
|
475
481
|
|
476
482
|
# Synonym for File.writable?
|
477
483
|
#
|
478
484
|
def self.writable_real?(file)
|
479
|
-
return false unless File.
|
485
|
+
return false unless File.exist?(file)
|
480
486
|
File::Stat.new(file).writable_real?
|
481
487
|
end
|
482
488
|
|
@@ -28,7 +28,7 @@ class TC_Win32_File_Link < Test::Unit::TestCase
|
|
28
28
|
test "symlink to a file works as expected" do
|
29
29
|
omit_unless(@admin)
|
30
30
|
assert_nothing_raised{ File.symlink(@@file, @link) }
|
31
|
-
assert_true(File.
|
31
|
+
assert_true(File.exist?(@link))
|
32
32
|
assert_true(File.symlink?(@link))
|
33
33
|
end
|
34
34
|
|
@@ -135,7 +135,7 @@ class TC_Win32_File_Link < Test::Unit::TestCase
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def self.shutdown
|
138
|
-
File.delete(@@file) if File.
|
138
|
+
File.delete(@@file) if File.exist?(@@file)
|
139
139
|
@@file = nil
|
140
140
|
end
|
141
141
|
end
|
@@ -6,7 +6,7 @@ require 'test-unit'
|
|
6
6
|
|
7
7
|
class TC_Win32_File_Misc < Test::Unit::TestCase
|
8
8
|
test "version constant is set to expected value" do
|
9
|
-
assert_equal('0.7.
|
9
|
+
assert_equal('0.7.2', File::WIN32_FILE_VERSION)
|
10
10
|
end
|
11
11
|
|
12
12
|
test "ffi functions are private" do
|
@@ -79,7 +79,7 @@ class TC_Win32_File_Stat < Test::Unit::TestCase
|
|
79
79
|
|
80
80
|
test "blockdev? returns true for block devices" do
|
81
81
|
omit_unless(@@block_dev)
|
82
|
-
omit_unless(File.
|
82
|
+
omit_unless(File.exist?(@@block_dev), "No media in device - skipping")
|
83
83
|
assert_true(File.blockdev?(@@block_dev))
|
84
84
|
end
|
85
85
|
|
@@ -273,8 +273,8 @@ class TC_Win32_File_Stat < Test::Unit::TestCase
|
|
273
273
|
end
|
274
274
|
|
275
275
|
def self.shutdown
|
276
|
-
File.delete(@@txt_file) if File.
|
277
|
-
File.delete(@@exe_file) if File.
|
276
|
+
File.delete(@@txt_file) if File.exist?(@@txt_file)
|
277
|
+
File.delete(@@exe_file) if File.exist?(@@exe_file)
|
278
278
|
@@txt_file = nil
|
279
279
|
@@exe_file = nil
|
280
280
|
@@elevated = nil
|
data/win32-file.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: win32-file
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-10-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
version: '0'
|
129
129
|
requirements: []
|
130
130
|
rubyforge_project: win32utils
|
131
|
-
rubygems_version: 2.
|
131
|
+
rubygems_version: 2.4.1
|
132
132
|
signing_key:
|
133
133
|
specification_version: 4
|
134
134
|
summary: Extra or redefined methods for the File class on Windows.
|