stk_check_time.rb: 0.1.3

#!/bin/ruby

# No warranty.
# Be careful to use.

# Filename : stk_check_time.rb
# Author   : sak (http://sak.que.jp/)
# Revision : 0.1.3
# Date     : Sun Apr 11 23:44:29 JST 2004

# Change log:
# 0.1.0 : Fri Mar 26 23:58:07 JST 2004
# 0.1.1 : Sat Mar 27 07:07:18 JST 2004
# 0.1.2 : Sun Mar 28 00:34:47 JST 2004

# This is a Ruby script,
# for checking the uniqueness of STK timestamps.
# Require later version of Ruby,
# and GNU grep which is -r option available.
# Output           : STDOUT
# Example of usage : ruby stk_check_time.rb

# Rewrite the regex of the rule of the backup file naming.
# Examples:
# *.bak     => '^.*\.bak$'
# $~*       => '^\$~.*$'
# *.~3~     => '^.*\.~\d+~$'
# %backup%~ => '^%backup%~$'
# *.3~      => '^.*\.\d+~$'
# *~        => '^.*~$'
BACKUP_FILE = '^.*~$'

# Search in subdirectries recursively or not.
RECURSIVE = true

if RECURSIVE
        optr = 'r'
end

record = []
open("| grep -nEH#{optr} \"^[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}\\([[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}\\)$\" *", 'r') do |f|
        f.each do |l|
                /^([^:]+):(\d+):(\d{4}\/\d{2}\/\d{2}\(\d{2}:\d{2}:\d{2}\))$/ =~ l
                record << [$3, $1, $2.to_i]
        end
end

record.sort!

prev = []
dupl = nil
endp = nil
record.each do |line|
        if line[0] == prev[0] && line[1] !~ /#{BACKUP_FILE}/ && prev[1] !~ /#{BACKUP_FILE}/ && !dupl
                puts '-' * 27
                puts 'date = ' + line[0]
                puts prev[1] + ':' + prev[2].to_s
                puts line[1] + ':' + line[2].to_s
                dupl = true
                endp = true
        elsif line[0] == prev[0] && line[1] !~ /#{BACKUP_FILE}/ && prev[1] !~ /#{BACKUP_FILE}/ && dupl
                puts line[1] + ':' + line[2].to_s
                dupl = true
                endp = true
        else
                dupl = nil
        end
        prev = line
end

puts '-' * 27 if endp

2004/04/11(23:58:14)