win32-file 0.6.0 → 0.6.1
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.
- data/CHANGES +4 -0
- data/lib/win32/file.rb +68 -2
- data/test/test_win32_file_attributes.rb +7 -1
- data/win32-file.gemspec +4 -4
- metadata +4 -4
data/CHANGES
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
== 0.6.1 - 9-Feb-2009
|
2
|
+
* Fixed a bug in the custom File.directory? method with regards to
|
3
|
+
non-existent directories.
|
4
|
+
|
1
5
|
== 0.6.0 - 14-Nov-2008
|
2
6
|
* Converted methods to use wide character handling.
|
3
7
|
* Added working implementations for the File.readlink, File.symlink and
|
data/lib/win32/file.rb
CHANGED
@@ -19,7 +19,7 @@ class File
|
|
19
19
|
extend Windows::Handle
|
20
20
|
|
21
21
|
# The version of the win32-file library
|
22
|
-
WIN32_FILE_VERSION = '0.6.
|
22
|
+
WIN32_FILE_VERSION = '0.6.1'
|
23
23
|
|
24
24
|
# Abbreviated attribute constants for convenience
|
25
25
|
|
@@ -455,7 +455,8 @@ class File
|
|
455
455
|
#
|
456
456
|
def directory?(file)
|
457
457
|
file = multi_to_wide(file)
|
458
|
-
GetFileAttributesW(file)
|
458
|
+
attributes = GetFileAttributesW(file)
|
459
|
+
(attributes != -1) && (attributes & FILE_ATTRIBUTE_DIRECTORY > 0)
|
459
460
|
end
|
460
461
|
|
461
462
|
# Returns all components of the filename given in +filename+ except the
|
@@ -1160,4 +1161,69 @@ class File
|
|
1160
1161
|
alias :set_attr :set_attributes
|
1161
1162
|
alias :unset_attr :remove_attributes
|
1162
1163
|
end
|
1164
|
+
|
1165
|
+
private
|
1166
|
+
|
1167
|
+
# Get the owner of a given file by name.
|
1168
|
+
#
|
1169
|
+
def get_owner(file)
|
1170
|
+
handle = CreateFile(
|
1171
|
+
file,
|
1172
|
+
GENERIC_READ,
|
1173
|
+
FILE_SHARE_READ,
|
1174
|
+
0,
|
1175
|
+
OPEN_EXISTING,
|
1176
|
+
0,
|
1177
|
+
0
|
1178
|
+
)
|
1179
|
+
|
1180
|
+
if handle == INVALID_HANDLE_VALUE
|
1181
|
+
raise ArgumentError, get_last_error
|
1182
|
+
end
|
1183
|
+
|
1184
|
+
sid = 0.chr * 28
|
1185
|
+
sid_ptr = [0].pack('L')
|
1186
|
+
|
1187
|
+
begin
|
1188
|
+
rv = GetSecurityInfo(
|
1189
|
+
handle,
|
1190
|
+
SE_FILE_OBJECT,
|
1191
|
+
OWNER_SECURITY_INFORMATION,
|
1192
|
+
sid_ptr,
|
1193
|
+
nil,
|
1194
|
+
nil,
|
1195
|
+
nil,
|
1196
|
+
nil
|
1197
|
+
)
|
1198
|
+
|
1199
|
+
if rv != 0
|
1200
|
+
raise get_last_error
|
1201
|
+
end
|
1202
|
+
|
1203
|
+
name_buf = 0.chr * 80
|
1204
|
+
name_cch = [name_buf.size].pack('L')
|
1205
|
+
|
1206
|
+
domain_buf = 0.chr * 80
|
1207
|
+
domain_cch = [domain_buf.size].pack('L')
|
1208
|
+
sid_name = 0.chr * 4
|
1209
|
+
|
1210
|
+
bool = LookupAccountSid(
|
1211
|
+
nil,
|
1212
|
+
sid_ptr.unpack('L').first,
|
1213
|
+
name_buf,
|
1214
|
+
name_cch,
|
1215
|
+
domain_buf,
|
1216
|
+
domain_cch,
|
1217
|
+
sid_name
|
1218
|
+
)
|
1219
|
+
|
1220
|
+
unless bool
|
1221
|
+
raise get_last_error
|
1222
|
+
end
|
1223
|
+
ensure
|
1224
|
+
CloseHandle(handle)
|
1225
|
+
end
|
1226
|
+
|
1227
|
+
name_buf.strip
|
1228
|
+
end
|
1163
1229
|
end
|
@@ -26,7 +26,13 @@ class TC_Win32_File_Attributes < Test::Unit::TestCase
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_version
|
29
|
-
assert_equal('0.6.
|
29
|
+
assert_equal('0.6.1', File::WIN32_FILE_VERSION)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_is_directory
|
33
|
+
assert_true(File.directory?(Dir.pwd))
|
34
|
+
assert_false(File.directory?(@@file))
|
35
|
+
assert_false(File.directory?('C:/aaabbbccc'))
|
30
36
|
end
|
31
37
|
|
32
38
|
def test_temporary
|
data/win32-file.gemspec
CHANGED
@@ -2,7 +2,7 @@ require "rubygems"
|
|
2
2
|
|
3
3
|
spec = Gem::Specification.new do |gem|
|
4
4
|
gem.name = "win32-file"
|
5
|
-
gem.version = "0.6.
|
5
|
+
gem.version = "0.6.1"
|
6
6
|
gem.authors = ["Daniel J. Berger", "Park Heesob"]
|
7
7
|
gem.email = "djberg96@gmail.com"
|
8
8
|
gem.homepage = "http://www.rubyforge.org/projects/win32utils"
|
@@ -17,12 +17,12 @@ spec = Gem::Specification.new do |gem|
|
|
17
17
|
gem.extra_rdoc_files = ["README", "CHANGES"]
|
18
18
|
gem.add_dependency("win32-api", ">= 1.2.1")
|
19
19
|
gem.add_dependency("win32-file-stat", ">= 1.3.2")
|
20
|
-
gem.add_dependency("test-unit", ">= 2.0.
|
21
|
-
gem.add_dependency("windows-pr", ">= 0.9.
|
20
|
+
gem.add_dependency("test-unit", ">= 2.0.1")
|
21
|
+
gem.add_dependency("windows-pr", ">= 0.9.7")
|
22
22
|
gem.rubyforge_project = "win32utils"
|
23
23
|
end
|
24
24
|
|
25
25
|
if $0 == __FILE__
|
26
|
-
Gem.manage_gems if Gem::RubyGemsVersion.to_f < 1.
|
26
|
+
Gem.manage_gems if Gem::RubyGemsVersion.to_f < 1.0
|
27
27
|
Gem::Builder.new(spec).build
|
28
28
|
end
|
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.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2009-02-09 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -41,7 +41,7 @@ dependencies:
|
|
41
41
|
requirements:
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: 2.0.
|
44
|
+
version: 2.0.1
|
45
45
|
version:
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: windows-pr
|
@@ -51,7 +51,7 @@ dependencies:
|
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.9.
|
54
|
+
version: 0.9.7
|
55
55
|
version:
|
56
56
|
description: Extra or redefined methods for the File class on Windows.
|
57
57
|
email: djberg96@gmail.com
|