win32-file-stat 1.5.0 → 1.5.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.
- checksums.yaml +4 -4
- data/CHANGES +4 -0
- data/lib/win32/file/stat.rb +20 -11
- data/lib/win32/file/windows/functions.rb +6 -1
- data/test/test_file_stat.rb +1 -1
- data/win32-file-stat.gemspec +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75bb3ff1b6a06d263f6c2889c0fb0b65ff58cd3d
|
4
|
+
data.tar.gz: 38edc506a14074f9b03ec850dc26d30416e0488c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b77bde2136ca2582504014257f2be8bad69f3cd6709cfe94fc47821bbf387597be76e2bb9b3a7542830aabbb8583a9d6651b39879310a18023853201640ae0ea
|
7
|
+
data.tar.gz: 870e7223034d3c07928e78ecc259424a2cbf3f714273e3c38d816fde593c9e8f1821773eb48e8fac4c8fc488d9b0f7f890e37e75b93380b5ab3573e0ce7784a7
|
data/CHANGES
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
== 1.5.1 - 8-Dec-2014
|
2
|
+
* Added code to work around 64-bit JRuby bug.
|
3
|
+
* Some minor refactoring for the get_current_process_sid method.
|
4
|
+
|
1
5
|
== 1.5.0 - 10-Nov-2014
|
2
6
|
* Added the #streams method, which shows alt streams for the file.
|
3
7
|
* Use require_relative where appropriate.
|
data/lib/win32/file/stat.rb
CHANGED
@@ -58,7 +58,7 @@ class File::Stat
|
|
58
58
|
attr_reader :streams
|
59
59
|
|
60
60
|
# The version of the win32-file-stat library
|
61
|
-
WIN32_FILE_STAT_VERSION = '1.5.
|
61
|
+
WIN32_FILE_STAT_VERSION = '1.5.1'
|
62
62
|
|
63
63
|
# Creates and returns a File::Stat object, which encapsulate common status
|
64
64
|
# information for File objects on MS Windows sytems. The information is
|
@@ -564,6 +564,15 @@ class File::Stat
|
|
564
564
|
|
565
565
|
private
|
566
566
|
|
567
|
+
# Workaround for bug in 64-big JRuby. Hope to remove it some day.
|
568
|
+
def get_ptr_type
|
569
|
+
if RUBY_PLATFORM == 'java' && ENV_JAVA['sun.arch.data.model'] == '64'
|
570
|
+
:ulong_long
|
571
|
+
else
|
572
|
+
:uintptr_t
|
573
|
+
end
|
574
|
+
end
|
575
|
+
|
567
576
|
# Allow stringy arguments
|
568
577
|
def string_check(arg)
|
569
578
|
return arg if arg.is_a?(String)
|
@@ -786,16 +795,16 @@ class File::Stat
|
|
786
795
|
# Return the sid of the current process.
|
787
796
|
#
|
788
797
|
def get_current_process_sid(token_type)
|
789
|
-
token = FFI::MemoryPointer.new(
|
798
|
+
token = FFI::MemoryPointer.new(get_ptr_type)
|
790
799
|
sid = nil
|
791
800
|
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
end
|
801
|
+
# Get the current process sid
|
802
|
+
unless OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, token)
|
803
|
+
raise SystemCallError.new("OpenProcessToken", FFI.errno)
|
804
|
+
end
|
797
805
|
|
798
|
-
|
806
|
+
begin
|
807
|
+
token = token.read_pointer.to_i
|
799
808
|
rlength = FFI::MemoryPointer.new(:pointer)
|
800
809
|
|
801
810
|
if token_type == TokenUser
|
@@ -822,7 +831,7 @@ class File::Stat
|
|
822
831
|
|
823
832
|
sid = ptr.read_pointer.read_string
|
824
833
|
ensure
|
825
|
-
CloseHandle(token)
|
834
|
+
CloseHandle(token)
|
826
835
|
end
|
827
836
|
|
828
837
|
sid
|
@@ -851,14 +860,14 @@ class File::Stat
|
|
851
860
|
|
852
861
|
# Second attempt, now with the needed size
|
853
862
|
if GetFileSecurity(wfile, flags, security_ptr, size_needed, size_needed_ptr)
|
854
|
-
token = FFI::MemoryPointer.new(
|
863
|
+
token = FFI::MemoryPointer.new(get_ptr_type)
|
855
864
|
|
856
865
|
pflags = TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_DUPLICATE | STANDARD_RIGHTS_READ
|
857
866
|
|
858
867
|
if OpenProcessToken(GetCurrentProcess(), pflags, token)
|
859
868
|
begin
|
860
869
|
token = token.read_pointer.to_i
|
861
|
-
token2 = FFI::MemoryPointer.new(
|
870
|
+
token2 = FFI::MemoryPointer.new(get_ptr_type)
|
862
871
|
|
863
872
|
if DuplicateToken(token, SecurityImpersonation, token2)
|
864
873
|
begin
|
@@ -12,12 +12,17 @@ module Windows
|
|
12
12
|
end
|
13
13
|
|
14
14
|
typedef :ulong, :dword
|
15
|
-
typedef :uintptr_t, :handle
|
16
15
|
typedef :pointer, :ptr
|
17
16
|
typedef :buffer_in, :buf_in
|
18
17
|
typedef :string, :str
|
19
18
|
typedef :long, :ntstatus
|
20
19
|
|
20
|
+
if RUBY_PLATFORM == 'java' && ENV_JAVA['sun.arch.data.model'] == '64'
|
21
|
+
typedef :ulong_long, :handle
|
22
|
+
else
|
23
|
+
typedef :uintptr_t, :handle
|
24
|
+
end
|
25
|
+
|
21
26
|
ffi_convention :stdcall
|
22
27
|
|
23
28
|
ffi_lib :kernel32
|
data/test/test_file_stat.rb
CHANGED
@@ -54,7 +54,7 @@ class TC_Win32_File_Stat < Test::Unit::TestCase
|
|
54
54
|
end
|
55
55
|
|
56
56
|
test "version is set to expected value" do
|
57
|
-
assert_equal('1.5.
|
57
|
+
assert_equal('1.5.1', File::Stat::WIN32_FILE_STAT_VERSION)
|
58
58
|
end
|
59
59
|
|
60
60
|
test "constructor does not modify argument" do
|
data/win32-file-stat.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: win32-file-stat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
@@ -9,62 +9,62 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - '>='
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - '>='
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: test-unit
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - '>='
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - '>='
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: win32-security
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - '>='
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - '>='
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rake
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - '>='
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - '>='
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
description: |2
|
@@ -102,12 +102,12 @@ require_paths:
|
|
102
102
|
- lib
|
103
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- -
|
105
|
+
- - '>='
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: 1.9.0
|
108
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
|
-
- -
|
110
|
+
- - '>='
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
requirements: []
|