win32-file-stat 1.2.5 → 1.2.6
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 +9 -0
- data/MANIFEST +1 -1
- data/README +10 -18
- data/Rakefile +30 -0
- data/lib/win32/file/stat.rb +22 -9
- data/test/tc_file_stat.rb +2 -2
- data/win32-file-stat.gemspec +1 -1
- metadata +4 -4
- data/install.rb +0 -12
data/CHANGES
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
== 1.2.6 - 29-Sep-2007
|
2
|
+
* Minor tweak to the way I handle redefining the initialize method. The
|
3
|
+
old_init alias is now removed.
|
4
|
+
* Now handles a potential failure in getting the atime, ctime and mtime,
|
5
|
+
caused by the underlying filesystem, e.g. Samba. If it fails, these
|
6
|
+
fields are set to the epoch. Thanks go an anonymous user for the spot.
|
7
|
+
* Added a Rakefile that includes tasks for installation and testing.
|
8
|
+
* Removed the install.rb file. That has been inlined into the Rakefile.
|
9
|
+
|
1
10
|
== 1.2.5 - 5-Apr-2007
|
2
11
|
* Now runs -w clean.
|
3
12
|
|
data/MANIFEST
CHANGED
data/README
CHANGED
@@ -2,28 +2,20 @@
|
|
2
2
|
A redefinition of the File::Stat class for MS Windows.
|
3
3
|
|
4
4
|
= Prerequisites
|
5
|
-
Ruby 1.8.0 or later.
|
6
|
-
windows-pr 0.
|
5
|
+
* Ruby 1.8.0 or later.
|
6
|
+
* windows-pr 0.6.0 or later.
|
7
7
|
|
8
|
-
= Installation
|
9
|
-
|
10
|
-
ruby test/tc_file_stat.rb (optional)
|
11
|
-
ruby install.rb
|
12
|
-
|
13
|
-
== Gem Installation
|
14
|
-
=== Local
|
15
|
-
ruby test/tc_file_stat.rb (Unix, optional)
|
16
|
-
gem install win32-file-stat-<version>.gem
|
17
|
-
=== Remote
|
18
|
-
gem install win32-file-stat
|
8
|
+
= Installation
|
9
|
+
rake install (non-gem) OR rake install_gem (gems)
|
19
10
|
|
20
11
|
= Synopsis
|
21
|
-
|
12
|
+
# Don't 'require' like this in practice - see 'Known Issues' below
|
13
|
+
require 'win32/file/stat'
|
22
14
|
|
23
|
-
stat = File::Stat.new('file.txt')
|
24
|
-
stat.size
|
25
|
-
stat.readonly?
|
26
|
-
stat.hidden?
|
15
|
+
stat = File::Stat.new('file.txt')
|
16
|
+
stat.size
|
17
|
+
stat.readonly?
|
18
|
+
stat.hidden?
|
27
19
|
|
28
20
|
= Differences between Ruby's File::Stat and this version:
|
29
21
|
* The File::Stat#blksize method returns a meaningful value.
|
data/Rakefile
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rbconfig'
|
4
|
+
include Config
|
5
|
+
|
6
|
+
desc 'Install the win32-file-stat package (non-gem)'
|
7
|
+
task :install do
|
8
|
+
sitelibdir = CONFIG['sitelibdir']
|
9
|
+
installdir = sitelibdir + '/win32/file'
|
10
|
+
basedir = File.dirname(installdir)
|
11
|
+
file = 'lib\win32\file\stat.rb'
|
12
|
+
|
13
|
+
Dir.mkdir(basedir) unless File.exists?(basedir)
|
14
|
+
Dir.mkdir(installdir) unless File.exists?(installdir)
|
15
|
+
FileUtils.cp(file, installdir, :verbose => true)
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'Install the win32-file-stat package as a gem'
|
19
|
+
task :install_gem do
|
20
|
+
ruby 'win32-file-stat.gemspec'
|
21
|
+
file = Dir["win32-file-stat*.gem"].first
|
22
|
+
sh "gem install #{file}"
|
23
|
+
end
|
24
|
+
|
25
|
+
Rake::TestTask.new do |t|
|
26
|
+
t.libs << 'test'
|
27
|
+
t.verbose = true
|
28
|
+
t.warning = true
|
29
|
+
t.test_files = FileList['test/tc_file_stat.rb']
|
30
|
+
end
|
data/lib/win32/file/stat.rb
CHANGED
@@ -21,17 +21,15 @@ class File::Stat
|
|
21
21
|
include Windows::Volume
|
22
22
|
include Comparable
|
23
23
|
|
24
|
-
VERSION = '1.2.
|
24
|
+
VERSION = '1.2.6'
|
25
25
|
|
26
26
|
# Defined in Ruby's win32.h. Not meant for public consumption.
|
27
27
|
S_IWGRP = 0020
|
28
28
|
S_IWOTH = 0002
|
29
29
|
|
30
|
-
# This is the only way to avoid a -w warning for initialize
|
31
|
-
|
32
|
-
alias old_init initialize
|
33
|
-
|
34
|
-
public
|
30
|
+
# This is the only way to avoid a -w warning for initialize. We remove
|
31
|
+
# it later, after we've defined our initialize method.
|
32
|
+
alias old_init initialize # :nodoc:
|
35
33
|
|
36
34
|
# Make this package -w clean
|
37
35
|
undef_method(:atime, :blksize, :blockdev?, :blocks, :chardev?, :ctime)
|
@@ -78,9 +76,18 @@ class File::Stat
|
|
78
76
|
@gid = stat_buf[12, 2].unpack('s').first # Always 0
|
79
77
|
@rdev = stat_buf[16, 4].unpack('I').first # Same as dev
|
80
78
|
@size = stat_buf[24, 8].unpack('Q').first # Size of file in bytes
|
81
|
-
|
82
|
-
|
83
|
-
|
79
|
+
|
80
|
+
# This portion can fail in rare, FS related instances. If it does, set
|
81
|
+
# the various times to Time.at(0).
|
82
|
+
begin
|
83
|
+
@atime = Time.at(stat_buf[32, 8].unpack('Q').first) # Access time
|
84
|
+
@mtime = Time.at(stat_buf[40, 8].unpack('Q').first) # Mod time
|
85
|
+
@ctime = Time.at(stat_buf[48, 8].unpack('Q').first) # Creation time
|
86
|
+
rescue
|
87
|
+
@atime = Time.at(0)
|
88
|
+
@mtime = Time.at(0)
|
89
|
+
@ctime = Time.at(0)
|
90
|
+
end
|
84
91
|
|
85
92
|
@mode = 33188 if @chardev
|
86
93
|
|
@@ -151,6 +158,9 @@ class File::Stat
|
|
151
158
|
|
152
159
|
## Miscellaneous
|
153
160
|
|
161
|
+
# Returns whether or not the file is a block device. For MS Windows a
|
162
|
+
# block device is a removable drive, cdrom or ramdisk.
|
163
|
+
#
|
154
164
|
def blockdev?
|
155
165
|
@blockdev
|
156
166
|
end
|
@@ -511,6 +521,9 @@ class File::Stat
|
|
511
521
|
}
|
512
522
|
end
|
513
523
|
|
524
|
+
# Since old_init was added strictly to avoid a warning, we remove it now.
|
525
|
+
remove_method(:old_init)
|
526
|
+
|
514
527
|
private
|
515
528
|
|
516
529
|
# Returns the file system's block size.
|
data/test/tc_file_stat.rb
CHANGED
@@ -36,14 +36,14 @@ class TC_Win32_File_Stat < Test::Unit::TestCase
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def test_version
|
39
|
-
assert_equal('1.2.
|
39
|
+
assert_equal('1.2.6', File::Stat::VERSION)
|
40
40
|
end
|
41
41
|
|
42
42
|
# One or more tests will fail if the archive attribute on @file is not set.
|
43
43
|
def test_archive
|
44
44
|
assert_respond_to(@stat, :archive?)
|
45
45
|
assert_nothing_raised{ @stat.archive? }
|
46
|
-
assert(@stat.archive
|
46
|
+
assert(@stat.archive?, '- May fail: ignore -')
|
47
47
|
end
|
48
48
|
|
49
49
|
def test_atime
|
data/win32-file-stat.gemspec
CHANGED
@@ -2,7 +2,7 @@ require "rubygems"
|
|
2
2
|
|
3
3
|
spec = Gem::Specification.new do |gem|
|
4
4
|
gem.name = "win32-file-stat"
|
5
|
-
gem.version = "1.2.
|
5
|
+
gem.version = "1.2.6"
|
6
6
|
gem.author = "Daniel J. Berger"
|
7
7
|
gem.email = "djberg96@gmail.com"
|
8
8
|
gem.homepage = "http://www.rubyforge.org/projects/win32utils"
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: win32-file-stat
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.2.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.2.6
|
7
|
+
date: 2007-09-29 00:00:00 -06:00
|
8
8
|
summary: A File::Stat class tailored to MS Windows
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -32,9 +32,9 @@ files:
|
|
32
32
|
- lib/win32/file/stat.rb
|
33
33
|
- CHANGES
|
34
34
|
- CVS
|
35
|
-
- install.rb
|
36
35
|
- lib
|
37
36
|
- MANIFEST
|
37
|
+
- Rakefile
|
38
38
|
- README
|
39
39
|
- test
|
40
40
|
- win32-file-stat.gemspec
|
data/install.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'rbconfig'
|
2
|
-
require 'fileutils'
|
3
|
-
include Config
|
4
|
-
|
5
|
-
sitelibdir = CONFIG['sitelibdir']
|
6
|
-
installdir = sitelibdir + '/win32/file'
|
7
|
-
basedir = File.dirname(installdir)
|
8
|
-
file = 'lib\win32\file\stat.rb'
|
9
|
-
|
10
|
-
Dir.mkdir(basedir) unless File.exists?(basedir)
|
11
|
-
Dir.mkdir(installdir) unless File.exists?(installdir)
|
12
|
-
FileUtils.cp(file, installdir, :verbose => true)
|