win32_filetime 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/restoreoldtimes +41 -0
- data/lib/win32_filetime/version.rb +1 -1
- data/lib/win32ft.rb +13 -0
- metadata +3 -2
- data/lib/win32_filetime.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 830f1f3edc8a98b28d8e31f67292287de8cf6889
|
4
|
+
data.tar.gz: b0b5e8a8c21fcfac1cbe2f96d38a7592bbd49da8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a7adf57edf0860b6995e8677f67c72a4d4d3df7bc53baef2b929c8967292935b89c463ec9d4d2b9546f37c8b9233992b43b6b52c3237ab74c6c7a51f11d7d47
|
7
|
+
data.tar.gz: 13cfd910e9d73a6456387a4de6973117ac8086d7d84f8fdd5f723ccca8c4dc80730aba287611058bade1481e3f48973d7be8970d152e3aa6de4a7cb65e76b77f
|
data/bin/restoreoldtimes
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
# encoding: GBK
|
3
|
+
|
4
|
+
require 'openssl'
|
5
|
+
require 'win32ft'
|
6
|
+
W = Win32ft
|
7
|
+
|
8
|
+
trap "SIGINT" do
|
9
|
+
STDERR.puts "exit on Ctrl-C."
|
10
|
+
exit 1
|
11
|
+
end
|
12
|
+
|
13
|
+
def rolloldtime(d1, fn)
|
14
|
+
fn = File.absolute_path(fn)
|
15
|
+
Dir.chdir(d1) do
|
16
|
+
File.foreach(fn) do |line|
|
17
|
+
line.strip!
|
18
|
+
next if line.empty? || line[0] == '#'
|
19
|
+
|
20
|
+
p1 = line.index(/ 0x\w+ 0x\w+ 0x\w+ \d+/)
|
21
|
+
fn = line[0...p1]
|
22
|
+
next if !File.file?(fn) && !File.directory?(fn)
|
23
|
+
|
24
|
+
tc1,ta1,tm1,_sz1 = line[p1..-1].split
|
25
|
+
W.setfiletime(fn, tc1, ta1, tm1)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def main
|
31
|
+
if ARGV.size != 2
|
32
|
+
STDERR.puts "Syntax: restoreoldtimes.rb Dir1 file.log"
|
33
|
+
exit 1
|
34
|
+
end
|
35
|
+
if !File.directory?(ARGV[0]) || !File.file?(ARGV[1])
|
36
|
+
STDERR.puts "Syntax: Dir1 file.log.\n using file.log restore directory files times"
|
37
|
+
end
|
38
|
+
rolloldtime(ARGV[0], ARGV[1])
|
39
|
+
end
|
40
|
+
|
41
|
+
main
|
data/lib/win32ft.rb
CHANGED
@@ -187,6 +187,16 @@ module Win32ft
|
|
187
187
|
ft = lft2ft(ft) if convlft2ft
|
188
188
|
ft
|
189
189
|
end
|
190
|
+
def self.str2ft(str, convlft2ft: false)
|
191
|
+
str = str[2..-1] if str[0...2] =~ /0[xX]/
|
192
|
+
h1 = str[0...8].to_i(16)
|
193
|
+
l1 = str[8..-1].to_i(16)
|
194
|
+
ft = FileTime.new
|
195
|
+
ft[:dwHighDateTime] = h1
|
196
|
+
ft[:dwLowDateTime] = l1
|
197
|
+
ft = lft2ft(ft) if convlft2ft
|
198
|
+
ft
|
199
|
+
end
|
190
200
|
|
191
201
|
attach_function :GetSystemTime, [SystemTime.by_ref], :void
|
192
202
|
def self.getsystemtime
|
@@ -265,6 +275,9 @@ CloseHandle(HANDLE)
|
|
265
275
|
hf = CreateFileA(fn, CFflag::GENERIC_WRITE, CFflag::FILE_SHARE_READ | CFflag::FILE_SHARE_WRITE,
|
266
276
|
nil, CFflag::OPEN_EXISTING, CFflag::FILE_FLAG_BACKUP_SEMANTICS, 0)
|
267
277
|
raise "setfiletime: Can not open file \"#{fn}\"" if hf == -1
|
278
|
+
tc = str2ft(tc) if String === tc
|
279
|
+
ta = str2ft(ta) if String === ta
|
280
|
+
tm = str2ft(tm) if String === tm
|
268
281
|
res = SetFileTime(hf, tc, ta, tm)
|
269
282
|
raise "setfiletime: SetFileTime error." if !res
|
270
283
|
CloseHandle(hf)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: win32_filetime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- windwiny
|
@@ -57,6 +57,7 @@ email:
|
|
57
57
|
- windwiny.ubt@gmail.com
|
58
58
|
executables:
|
59
59
|
- getdirtimes
|
60
|
+
- restoreoldtimes
|
60
61
|
- rolloldtimes
|
61
62
|
extensions: []
|
62
63
|
extra_rdoc_files: []
|
@@ -67,8 +68,8 @@ files:
|
|
67
68
|
- README.md
|
68
69
|
- Rakefile
|
69
70
|
- bin/getdirtimes
|
71
|
+
- bin/restoreoldtimes
|
70
72
|
- bin/rolloldtimes
|
71
|
-
- lib/win32_filetime.rb
|
72
73
|
- lib/win32_filetime/version.rb
|
73
74
|
- lib/win32ft.rb
|
74
75
|
- specs/win32ft.spec.rb
|