win32-dir 0.5.1 → 0.7.2
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 +5 -5
- data/lib/win32-dir.rb +1 -1
- data/lib/win32/dir.rb +418 -417
- data/lib/win32/dir/constants.rb +26 -26
- data/lib/win32/dir/functions.rb +66 -66
- data/lib/win32/dir/structs.rb +37 -37
- data/lib/win32/dir/version.rb +6 -0
- metadata +9 -71
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGES +0 -121
- data/MANIFEST +0 -10
- data/README +0 -273
- data/Rakefile +0 -34
- data/certs/djberg96_pub.pem +0 -21
- data/examples/dir_example.rb +0 -23
- data/test/test_win32_dir.rb +0 -466
- data/win32-dir.gemspec +0 -30
- metadata.gz.sig +0 -2
data/lib/win32/dir/constants.rb
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
module Dir::Constants
|
4
|
-
include FFI::Library
|
5
|
-
|
6
|
-
private
|
7
|
-
|
8
|
-
FILE_DEVICE_FILE_SYSTEM = 0x00000009
|
9
|
-
FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
|
10
|
-
FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
|
11
|
-
FILE_ATTRIBUTE_DIRECTORY = 0x00000010
|
12
|
-
FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
|
13
|
-
ERROR_ALREADY_EXISTS = 183
|
14
|
-
METHOD_BUFFERED = 0
|
15
|
-
OPEN_EXISTING = 3
|
16
|
-
GENERIC_READ = 0x80000000
|
17
|
-
GENERIC_WRITE = 0x40000000
|
18
|
-
SHGFI_DISPLAYNAME = 0x000000200
|
19
|
-
SHGFI_PIDL = 0x000000008
|
20
|
-
|
21
|
-
# ((DWORD)-1)
|
22
|
-
INVALID_FILE_ATTRIBUTES = 0xFFFFFFFF
|
23
|
-
|
24
|
-
# ((HANDLE)-1)
|
25
|
-
INVALID_HANDLE_VALUE = FFI::Pointer.new(-1).address
|
26
|
-
end
|
1
|
+
require "ffi" unless defined?(FFI)
|
2
|
+
|
3
|
+
module Dir::Constants
|
4
|
+
include FFI::Library
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
FILE_DEVICE_FILE_SYSTEM = 0x00000009
|
9
|
+
FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
|
10
|
+
FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
|
11
|
+
FILE_ATTRIBUTE_DIRECTORY = 0x00000010
|
12
|
+
FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
|
13
|
+
ERROR_ALREADY_EXISTS = 183
|
14
|
+
METHOD_BUFFERED = 0
|
15
|
+
OPEN_EXISTING = 3
|
16
|
+
GENERIC_READ = 0x80000000
|
17
|
+
GENERIC_WRITE = 0x40000000
|
18
|
+
SHGFI_DISPLAYNAME = 0x000000200
|
19
|
+
SHGFI_PIDL = 0x000000008
|
20
|
+
|
21
|
+
# ((DWORD)-1)
|
22
|
+
INVALID_FILE_ATTRIBUTES = 0xFFFFFFFF
|
23
|
+
|
24
|
+
# ((HANDLE)-1)
|
25
|
+
INVALID_HANDLE_VALUE = FFI::Pointer.new(-1).address
|
26
|
+
end
|
data/lib/win32/dir/functions.rb
CHANGED
@@ -1,66 +1,66 @@
|
|
1
|
-
# Necessary to force JRuby to use the gem, not its builtin version
|
2
|
-
if RUBY_PLATFORM ==
|
3
|
-
require
|
4
|
-
gem
|
5
|
-
end
|
6
|
-
|
7
|
-
require
|
8
|
-
|
9
|
-
module Dir::Functions
|
10
|
-
module FFI::Library
|
11
|
-
# Wrapper method for attach_function + private
|
12
|
-
def attach_pfunc(*args)
|
13
|
-
attach_function(*args)
|
14
|
-
private args[0]
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
extend FFI::Library
|
19
|
-
|
20
|
-
typedef :ulong, :dword
|
21
|
-
typedef :uintptr_t, :handle
|
22
|
-
typedef :uintptr_t, :hwnd
|
23
|
-
typedef :pointer, :ptr
|
24
|
-
|
25
|
-
ffi_lib :shell32
|
26
|
-
ffi_convention :stdcall
|
27
|
-
|
28
|
-
attach_pfunc :SHGetFolderPathW,
|
29
|
-
attach_pfunc :SHGetFolderLocation,
|
30
|
-
attach_pfunc :SHGetFileInfo,
|
31
|
-
|
32
|
-
ffi_lib :shlwapi
|
33
|
-
ffi_convention :stdcall
|
34
|
-
|
35
|
-
attach_pfunc :PathIsDirectoryEmptyW, [:buffer_in], :bool
|
36
|
-
|
37
|
-
ffi_lib :kernel32
|
38
|
-
ffi_convention :stdcall
|
39
|
-
|
40
|
-
attach_pfunc :CloseHandle, [:handle], :bool
|
41
|
-
attach_pfunc :CreateDirectoryW,
|
42
|
-
attach_pfunc :CreateFileW,
|
43
|
-
attach_pfunc :DeviceIoControl,
|
44
|
-
attach_pfunc :GetCurrentDirectoryW,
|
45
|
-
attach_pfunc :GetFileAttributesW, [:buffer_in], :dword
|
46
|
-
attach_pfunc :GetLastError, [], :dword
|
47
|
-
attach_pfunc :GetShortPathNameW,
|
48
|
-
attach_pfunc :GetLongPathNameW,
|
49
|
-
attach_pfunc :GetFullPathNameW,
|
50
|
-
attach_pfunc :RemoveDirectoryW, [:buffer_in], :bool
|
51
|
-
end
|
52
|
-
|
53
|
-
class String
|
54
|
-
# Convenience method for converting strings to UTF-16LE for wide character
|
55
|
-
# functions that require it.
|
56
|
-
def wincode
|
57
|
-
(
|
58
|
-
end
|
59
|
-
|
60
|
-
# Read a wide character string up until the first double null, and delete
|
61
|
-
# any remaining null characters.
|
62
|
-
def wstrip
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
end
|
1
|
+
# Necessary to force JRuby to use the gem, not its builtin version
|
2
|
+
if RUBY_PLATFORM == "java"
|
3
|
+
require "rubygems" unless defined?(Gem)
|
4
|
+
gem "ffi"
|
5
|
+
end
|
6
|
+
|
7
|
+
require "ffi" unless defined?(FFI)
|
8
|
+
|
9
|
+
module Dir::Functions
|
10
|
+
module FFI::Library
|
11
|
+
# Wrapper method for attach_function + private
|
12
|
+
def attach_pfunc(*args)
|
13
|
+
attach_function(*args)
|
14
|
+
private args[0]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
extend FFI::Library
|
19
|
+
|
20
|
+
typedef :ulong, :dword
|
21
|
+
typedef :uintptr_t, :handle
|
22
|
+
typedef :uintptr_t, :hwnd
|
23
|
+
typedef :pointer, :ptr
|
24
|
+
|
25
|
+
ffi_lib :shell32
|
26
|
+
ffi_convention :stdcall
|
27
|
+
|
28
|
+
attach_pfunc :SHGetFolderPathW, %i{hwnd int handle dword buffer_out}, :dword
|
29
|
+
attach_pfunc :SHGetFolderLocation, %i{hwnd int handle dword ptr}, :dword
|
30
|
+
attach_pfunc :SHGetFileInfo, %i{uint64 dword ptr uint uint}, :dword
|
31
|
+
|
32
|
+
ffi_lib :shlwapi
|
33
|
+
ffi_convention :stdcall
|
34
|
+
|
35
|
+
attach_pfunc :PathIsDirectoryEmptyW, [:buffer_in], :bool
|
36
|
+
|
37
|
+
ffi_lib :kernel32
|
38
|
+
ffi_convention :stdcall
|
39
|
+
|
40
|
+
attach_pfunc :CloseHandle, [:handle], :bool
|
41
|
+
attach_pfunc :CreateDirectoryW, %i{buffer_in ptr}, :bool
|
42
|
+
attach_pfunc :CreateFileW, %i{buffer_in dword dword ptr dword dword handle}, :handle
|
43
|
+
attach_pfunc :DeviceIoControl, %i{handle dword ptr dword ptr dword ptr ptr}, :bool
|
44
|
+
attach_pfunc :GetCurrentDirectoryW, %i{dword buffer_out}, :dword
|
45
|
+
attach_pfunc :GetFileAttributesW, [:buffer_in], :dword
|
46
|
+
attach_pfunc :GetLastError, [], :dword
|
47
|
+
attach_pfunc :GetShortPathNameW, %i{buffer_in buffer_out dword}, :dword
|
48
|
+
attach_pfunc :GetLongPathNameW, %i{buffer_in buffer_out dword}, :dword
|
49
|
+
attach_pfunc :GetFullPathNameW, %i{buffer_in dword buffer_out ptr}, :dword
|
50
|
+
attach_pfunc :RemoveDirectoryW, [:buffer_in], :bool
|
51
|
+
end
|
52
|
+
|
53
|
+
class String
|
54
|
+
# Convenience method for converting strings to UTF-16LE for wide character
|
55
|
+
# functions that require it.
|
56
|
+
def wincode
|
57
|
+
(tr(File::SEPARATOR, File::ALT_SEPARATOR) + 0.chr).encode("UTF-16LE")
|
58
|
+
end
|
59
|
+
|
60
|
+
# Read a wide character string up until the first double null, and delete
|
61
|
+
# any remaining null characters.
|
62
|
+
def wstrip
|
63
|
+
force_encoding("UTF-16LE").encode("UTF-8", invalid: :replace, undef: :replace)
|
64
|
+
.split("\x00")[0].encode(Encoding.default_external)
|
65
|
+
end
|
66
|
+
end
|
data/lib/win32/dir/structs.rb
CHANGED
@@ -1,37 +1,37 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
module Dir::Structs
|
4
|
-
extend FFI::Library
|
5
|
-
|
6
|
-
class SHFILEINFO < FFI::Struct
|
7
|
-
layout(
|
8
|
-
:hIcon, :ulong,
|
9
|
-
:iIcon, :int,
|
10
|
-
:dwAttributes, :ulong,
|
11
|
-
:szDisplayName, [:char, 256],
|
12
|
-
:szTypeName, [:char, 80]
|
13
|
-
)
|
14
|
-
end
|
15
|
-
|
16
|
-
# I fudge a bit, assuming a MountPointReparseBuffer
|
17
|
-
class REPARSE_JDATA_BUFFER < FFI::Struct
|
18
|
-
layout(
|
19
|
-
:ReparseTag, :ulong,
|
20
|
-
:ReparseDataLength, :ushort,
|
21
|
-
:Reserved, :ushort,
|
22
|
-
:SubstituteNameOffset, :ushort,
|
23
|
-
:SubstituteNameLength, :ushort,
|
24
|
-
:PrintNameOffset, :ushort,
|
25
|
-
:PrintNameLength, :ushort,
|
26
|
-
:PathBuffer, [:char, 1024]
|
27
|
-
)
|
28
|
-
|
29
|
-
# The REPARSE_DATA_BUFFER_HEADER_SIZE which is calculated as:
|
30
|
-
#
|
31
|
-
# sizeof(ReparseTag) + sizeof(ReparseDataLength) + sizeof(Reserved)
|
32
|
-
#
|
33
|
-
def header_size
|
34
|
-
FFI::Type::ULONG.size + FFI::Type::USHORT.size + FFI::Type::USHORT.size
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
1
|
+
require "ffi" unless defined?(FFI)
|
2
|
+
|
3
|
+
module Dir::Structs
|
4
|
+
extend FFI::Library
|
5
|
+
|
6
|
+
class SHFILEINFO < FFI::Struct
|
7
|
+
layout(
|
8
|
+
:hIcon, :ulong,
|
9
|
+
:iIcon, :int,
|
10
|
+
:dwAttributes, :ulong,
|
11
|
+
:szDisplayName, [:char, 256],
|
12
|
+
:szTypeName, [:char, 80]
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
# I fudge a bit, assuming a MountPointReparseBuffer
|
17
|
+
class REPARSE_JDATA_BUFFER < FFI::Struct
|
18
|
+
layout(
|
19
|
+
:ReparseTag, :ulong,
|
20
|
+
:ReparseDataLength, :ushort,
|
21
|
+
:Reserved, :ushort,
|
22
|
+
:SubstituteNameOffset, :ushort,
|
23
|
+
:SubstituteNameLength, :ushort,
|
24
|
+
:PrintNameOffset, :ushort,
|
25
|
+
:PrintNameLength, :ushort,
|
26
|
+
:PathBuffer, [:char, 1024]
|
27
|
+
)
|
28
|
+
|
29
|
+
# The REPARSE_DATA_BUFFER_HEADER_SIZE which is calculated as:
|
30
|
+
#
|
31
|
+
# sizeof(ReparseTag) + sizeof(ReparseDataLength) + sizeof(Reserved)
|
32
|
+
#
|
33
|
+
def header_size
|
34
|
+
FFI::Type::ULONG.size + FFI::Type::USHORT.size + FFI::Type::USHORT.size
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,37 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: win32-dir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
8
8
|
- Park Heesob
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
|
-
cert_chain:
|
12
|
-
-
|
13
|
-
-----BEGIN CERTIFICATE-----
|
14
|
-
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
|
15
|
-
cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
|
16
|
-
MB4XDTE1MDkwMjIwNDkxOFoXDTE2MDkwMTIwNDkxOFowPzERMA8GA1UEAwwIZGpi
|
17
|
-
ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
|
18
|
-
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyTkvXqRp6hLs9eoJOS
|
19
|
-
Hmi8kRYbq9Vkf15/hMxJpotYMgJVHHWrmDcC5Dye2PbnXjTkKf266Zw0PtT9h+lI
|
20
|
-
S3ts9HO+vaCFSMwFFZmnWJSpQ3CNw2RcHxjWkk9yF7imEM8Kz9ojhiDXzBetdV6M
|
21
|
-
gr0lV/alUr7TNVBDngbXEfTWscyXh1qd7xZ4EcOdsDktCe5G45N/o3662tPQvJsi
|
22
|
-
FOF0CM/KuBsa/HL1/eoEmF4B3EKIRfTHrQ3hu20Kv3RJ88QM4ec2+0dd97uX693O
|
23
|
-
zv6981fyEg+aXLkxrkViM/tz2qR2ZE0jPhHTREPYeMEgptRkTmWSKAuLVWrJEfgl
|
24
|
-
DtkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEwe
|
25
|
-
nn6bfJADmuIDiMSOzedOrL+xMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
|
26
|
-
bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
|
27
|
-
ggEBAHmNOCWoDVD75zHFueY0viwGDVP1BNGFC+yXcb7u2GlK+nEMCORqzURbYPf7
|
28
|
-
tL+/hzmePIRz7i30UM//64GI1NLv9jl7nIwjhPpXpf7/lu2I9hOTsvwSumb5UiKC
|
29
|
-
/sqBxI3sfj9pr79Wpv4MuikX1XPik7Ncb7NPsJPw06Lvyc3Hkg5X2XpPtLtS+Gr2
|
30
|
-
wKJnmzb5rIPS1cmsqv0M9LPWflzfwoZ/SpnmhagP+g05p8bRNKjZSA2iImM/GyYZ
|
31
|
-
EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
|
32
|
-
tGSHgAmcLlkdGgan182qsE/4kKM=
|
33
|
-
-----END CERTIFICATE-----
|
34
|
-
date: 2015-10-20 00:00:00.000000000 Z
|
11
|
+
cert_chain: []
|
12
|
+
date: 2020-11-30 00:00:00.000000000 Z
|
35
13
|
dependencies:
|
36
14
|
- !ruby/object:Gem::Dependency
|
37
15
|
name: ffi
|
@@ -47,34 +25,6 @@ dependencies:
|
|
47
25
|
- - ">="
|
48
26
|
- !ruby/object:Gem::Version
|
49
27
|
version: 1.0.0
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: rake
|
52
|
-
requirement: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: '0'
|
57
|
-
type: :development
|
58
|
-
prerelease: false
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
61
|
-
- - ">="
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '0'
|
64
|
-
- !ruby/object:Gem::Dependency
|
65
|
-
name: test-unit
|
66
|
-
requirement: !ruby/object:Gem::Requirement
|
67
|
-
requirements:
|
68
|
-
- - ">="
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: 2.4.0
|
71
|
-
type: :development
|
72
|
-
prerelease: false
|
73
|
-
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
requirements:
|
75
|
-
- - ">="
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 2.4.0
|
78
28
|
description: |2
|
79
29
|
The win32-dir library provides extra methods and constants for the
|
80
30
|
builtin Dir class. The constants provide a convenient way to identify
|
@@ -84,25 +34,15 @@ description: |2
|
|
84
34
|
email: djberg96@gmail.com
|
85
35
|
executables: []
|
86
36
|
extensions: []
|
87
|
-
extra_rdoc_files:
|
88
|
-
- README
|
89
|
-
- CHANGES
|
90
|
-
- MANIFEST
|
37
|
+
extra_rdoc_files: []
|
91
38
|
files:
|
92
|
-
- CHANGES
|
93
|
-
- MANIFEST
|
94
|
-
- README
|
95
|
-
- Rakefile
|
96
|
-
- certs/djberg96_pub.pem
|
97
|
-
- examples/dir_example.rb
|
98
39
|
- lib/win32-dir.rb
|
99
40
|
- lib/win32/dir.rb
|
100
41
|
- lib/win32/dir/constants.rb
|
101
42
|
- lib/win32/dir/functions.rb
|
102
43
|
- lib/win32/dir/structs.rb
|
103
|
-
-
|
104
|
-
|
105
|
-
homepage: http://github.com/djberg96/win32-dir
|
44
|
+
- lib/win32/dir/version.rb
|
45
|
+
homepage: https://github.com/chef/win32-dir
|
106
46
|
licenses:
|
107
47
|
- Artistic 2.0
|
108
48
|
metadata: {}
|
@@ -114,17 +54,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
114
54
|
requirements:
|
115
55
|
- - ">="
|
116
56
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
57
|
+
version: '2.4'
|
118
58
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
59
|
requirements:
|
120
60
|
- - ">="
|
121
61
|
- !ruby/object:Gem::Version
|
122
62
|
version: '0'
|
123
63
|
requirements: []
|
124
|
-
|
125
|
-
rubygems_version: 2.4.8
|
64
|
+
rubygems_version: 3.0.3
|
126
65
|
signing_key:
|
127
66
|
specification_version: 4
|
128
67
|
summary: Extra constants and methods for the Dir class on Windows.
|
129
|
-
test_files:
|
130
|
-
- test/test_win32_dir.rb
|
68
|
+
test_files: []
|
checksums.yaml.gz.sig
DELETED
Binary file
|
data.tar.gz.sig
DELETED
Binary file
|
data/CHANGES
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
== 0.5.1 - 20-Oct-2015
|
2
|
-
* The gem is now signed.
|
3
|
-
* The Rakefile gem tasks now assume Rubygems 2.x.
|
4
|
-
* Added a win32-dir.rb file for convenience.
|
5
|
-
|
6
|
-
== 0.5.0 - 15-Oct-2014
|
7
|
-
* Fixed an encoding error in an error message in the Dir.read_junction method.
|
8
|
-
Thanks go to topac for the spot and patch.
|
9
|
-
* Replaced File.exists? with File.exist? in the test suite to avoid warnings
|
10
|
-
in Ruby 2.1 and later.
|
11
|
-
* Do not let the version number fool you, this is not a major release. I
|
12
|
-
simply ran out of version numbers.
|
13
|
-
|
14
|
-
== 0.4.9 - 2-Jul-2014
|
15
|
-
* Fixed the INVALID_FILE_ATTRIBUTES constant. It's only a 32-bit value.
|
16
|
-
Thanks go to Ethan Brown for the patch.
|
17
|
-
* Use relative_require instead of manually doing things.
|
18
|
-
* Removed rubyforge_project from gemspec.
|
19
|
-
* Added a string_check to the Dir.junction? method.
|
20
|
-
|
21
|
-
== 0.4.8 - 27-Apr-2014
|
22
|
-
* More closely mimic Ruby's stringiness checks for overrided methods.
|
23
|
-
|
24
|
-
== 0.4.7 - 26-Apr-2014
|
25
|
-
* All arguments to methods are now interpolated so that they'll use whatever
|
26
|
-
to_str implemenation the argument provides instead of assuming String
|
27
|
-
arguments. This change was made because it turns out that at least some
|
28
|
-
of the overridden methods in MRI accept Pathname objects. Thanks go to
|
29
|
-
Josh Cooper/Puppet Labs for the spot.
|
30
|
-
* Refactored the Dir.getwd method to use bonafide FFI buffers instead of
|
31
|
-
naked Ruby char buffers.
|
32
|
-
* Internally various functions now fail in the event that the resulting
|
33
|
-
paths would exceed their buffers.
|
34
|
-
|
35
|
-
== 0.4.6 - 21-Oct-2013
|
36
|
-
* Fixed the INVALID_HANDLE_VALUE and INVALID_FILE_ATTRIBUTES constants for
|
37
|
-
64-bit versions of Ruby.
|
38
|
-
* Added Rake as a development dependency.
|
39
|
-
|
40
|
-
== 0.4.5 - 23-Sep-2013
|
41
|
-
* Yet another encoding fix, this time one that affected JRuby.
|
42
|
-
* Fixed the Dir[] and Dir.glob methods so they match the spec. Thanks go
|
43
|
-
to Chris Westbrook for the spot.
|
44
|
-
|
45
|
-
== 0.4.4 - 22-Sep-2013
|
46
|
-
* Yet another encoding fix. Thanks go to Rob Reynolds for the patch.
|
47
|
-
|
48
|
-
== 0.4.3 - 24-Jul-2013
|
49
|
-
* Changed the Dir.read_junction and CSIDL constant strings so that they
|
50
|
-
use the default external encoding instead of UTF-16LE. This means that
|
51
|
-
they will now work with methods like File.join. Thanks go to Josh Cooper
|
52
|
-
for the patches.
|
53
|
-
* Some changes for internal handling of making FFI functions private.
|
54
|
-
* Updated gem:create task for rubygems 2.
|
55
|
-
|
56
|
-
== 0.4.2 - 8-Apr-2013
|
57
|
-
* Fixed the HANDLE function prototypes in the underlying FFI code and added
|
58
|
-
some custom typedefs for convenience. This affects 64 bit Ruby code.
|
59
|
-
|
60
|
-
== 0.4.1 - 2-Oct-2012
|
61
|
-
* Added the Dir.read_junction method. Thanks go to Gabriel Wilkins for the patch.
|
62
|
-
|
63
|
-
== 0.4.0 - 29-Jun-2012
|
64
|
-
* Conversion to FFI. Should work with JRuby now.
|
65
|
-
* If current versions of Dir::XXX constant values cannot be found
|
66
|
-
then default values are tried.
|
67
|
-
* Now requires Ruby 1.9 or later.
|
68
|
-
|
69
|
-
== 0.3.7 - 18-Jul-2010
|
70
|
-
* Modified Dir.glob and Dir[] to handle backslashes in path names.
|
71
|
-
* Added tests for the modified Dir.glob and Dir[] behavior.
|
72
|
-
* Removed the old non-gem install Rake task.
|
73
|
-
|
74
|
-
== 0.3.6 - 6-Feb-2010
|
75
|
-
* Bug fixes for Ruby 1.9.x. Thanks go to Kendall Gifford for the spot and
|
76
|
-
the patch.
|
77
|
-
* Minor refactoring of the Dir.create_junction method. This fixed a bug for
|
78
|
-
Ruby 1.9.x, but was also a little cleaner in general.
|
79
|
-
* Some Rakefile task and gemspec updates.
|
80
|
-
|
81
|
-
== 0.3.5 - 6-Aug-2009
|
82
|
-
* Changed the license to Artistic 2.0.
|
83
|
-
* Updated the gemspec, including the addition of a license attribute and
|
84
|
-
test-unit as a development dependency.
|
85
|
-
|
86
|
-
== 0.3.4 - 5-May-2009
|
87
|
-
* Redefined the Dir.getwd (and the Dir.pwd alias) to always return a
|
88
|
-
normalized path.
|
89
|
-
* Some gemspec updates.
|
90
|
-
|
91
|
-
== 0.3.3 - 30-Mar-2009
|
92
|
-
* Virtual folders like Dir::CONTROL, which were previously almost always nil,
|
93
|
-
are now set to their display name.
|
94
|
-
* Fixed a bug in the create_junction method.
|
95
|
-
* Added an 'example' rake task to run the example code.
|
96
|
-
* Renamed the example program from dir_test.rb to dir_example.rb to prevent
|
97
|
-
any potential confusion that it's a genuine test file.
|
98
|
-
|
99
|
-
== 0.3.2 - 25-Jul-2007
|
100
|
-
* Added a Rakefile with tasks for testing and installation.
|
101
|
-
* Removed the install.rb file (the Rakefile handles installation).
|
102
|
-
* Minor updates the README, MANIFEST, and test file.
|
103
|
-
|
104
|
-
== 0.3.1 - 16-Oct-2006
|
105
|
-
* Added the Dir.empty? method.
|
106
|
-
* Changed the Dir.reparse_dir? method to Dir.junction? (but kept an alias
|
107
|
-
for backwards compatibility).
|
108
|
-
* Added rdoc for Dir.junction? (oops).
|
109
|
-
* Some test tweaks and additions.
|
110
|
-
|
111
|
-
== 0.3.0 - 28-May-2006
|
112
|
-
* Now pure Ruby.
|
113
|
-
* Now has a gem.
|
114
|
-
* Added a VERSION constant.
|
115
|
-
|
116
|
-
== 0.2.0 - 27-Jun-2005
|
117
|
-
* Added the Dir.create_junction and Dir.reparse_dir? methods.
|
118
|
-
* Added corresponding tests and documentation.
|
119
|
-
|
120
|
-
== 0.1.0 - 25-Feb-2005
|
121
|
-
* Initial release
|