Bug #6603
closedFileUtils::touchで更新時刻,アクセス時刻がミリ秒単位で記録されない(FreeBSD/amd64)
Description
ファイルの作成時刻・更新時刻がミリ秒単位で反映されるかどうかは処理系に依存しているとのことですが,
下記のように,touchを利用してファイルを作成した場合はミリ秒単位で記録されるますが,さらにtouchを
利用して更新時刻を記録しようとすると小数点以下が記録されないようです。
irbでの例です。
irb(main):001:0> require 'fileutils'
=> true
irb(main):002:0> include FileUtils
=> Object
irb(main):003:0> touch 'temp'
=> ["temp"]
irb(main):004:0> File.mtime('temp').to_f
=> 1340024581.3077028
irb(main):005:0> touch 'temp'
=> ["temp"]
irb(main):006:0> File.mtime('temp').to_f
=> 1340024608.0
irb(main):007:0> touch 'temp'
=> ["temp"]
irb(main):008:0> File.mtime('temp').to_f
=> 1340024617.0
mtimeオプションを指定するとミリ秒単位で記録されます。
irb(main):008:0> touch 'temp', mtime: Time.new
=> ["temp"]
irb(main):009:0> File.mtime('temp').to_f
=> 1340030522.9299169
File.atimeも同様にmtimeオプション無しだとミリ秒単位は
記録されません。
fileutils.rbのtouchメソッドの中の下記行で,
時刻の更新をしているようなのですが,tがnilで
ある場合の挙動に問題があるようにも思います。
File.utime(t, t, path)