#!/opt/tcl803/bin/sytcl
#
loadlibindex /opt/share/tcl/lib/ucodb/ucodb.tlib
global env
global sybmsg

set base metabase
set server KSUMMIT
set uname guest
set pass harmless
#
# go to the work directory
cd /u/de/data/xerox

set err [catch {set dbpipe1 [sybOpen $base $uname $pass $server]} res]
if {$err} {
        puts stderr "NO SYBASE CONNECTION $res"
	exit
}
#
set lfp [open /u/de/SanityCount.log a]
#
set now [clock seconds]
set datestr [clock format $now]
#
puts $lfp "********************** RUN ************************"
puts $lfp "DATE STR $datestr, TOY $now"
lassign $datestr wday mon day time zone year
puts $lfp "wday\t$wday\nday\t$day\nmon\t$mon\ntime\t$time\nzone\t$zone\nyear\t$year"
#
set sqt metabase.dbo.LastXerox 
set sqlcmd "select stamp from metabase.dbo.LastXerox where server='KSUMMIT'"
doSQL 1
set lastupf [sybNext 1]
puts $lfp "LASTUPF $lastupf"
eval lassign $lastupf lmon lday lyr ltim
set lastup [clock scan "$lmon $lday $ltim $lyr"]
#
if {![file exists /u/de/data/xerox/Done]} {
	puts $lfp "ERROR ERROR ERROR"
	puts $lfp "No file u/de/data/xerox/Done detected."
	puts $lfp "Implication is that scp failed."
	close $lfp
	exit
}
set lastxfer [file mtime /u/de/data/xerox/Done]
#
if {$lastxfer > $lastup} {
	puts $lfp "Recent Transfer [clock format $lastxfer]"
	puts $lfp "Older Update [clock format $lastup]"
	puts $lfp "IMPOSSIBLE in normal operation"
} else {
	puts $lfp "Recent Update [clock format $lastup]"
	puts $lfp "Older Transfer [clock format $lastxfer]"
	puts $lfp "Time to count the spoons."
}
#

set flist [glob -nocomplain *.dat]

set Ignore [list Mirrors MaskSlit SlitMap People Vendor FilterPerf Respondents SurveyAnswers fassists data_dict sw_issues foobar ]

set trouble ""
foreach f [lsort $flist] {
	set fn [file tail $f]
	set tn [file rootname $fn]
	if {[lcontain $Ignore $tn]} {continue}
	set res [exec wc $fn]
	lassign $res lines words chars
	set sqlcmd "select count(*) from $tn"
	set sqt $tn
	set err [catch {doSQL 1} res]
	if {$err} {
		puts $lfp "ERROR accessing table $tn:\n$res"
		continue
	}
	set rec [sybNext 1]
	if {$rec < $lines} {
		lappend trouble "TABLE $tn s/b $lines is $rec records"
	}
}
#
if {$trouble != ""} {
set uniq [clock seconds]
set tmf /tmp/UpdMail.$uniq
write_file $tmf "[join $trouble \n]"
system "/usr/ucb/Mail -s UPDATE_TROUBLE de@ucolick.org < $tmf"
puts $lfp "[join $trouble \n]"
puts $lfp "Sent mail to de."
} else {
puts $lfp "all files line cts match table rec counts"
}
#
close $lfp
#