#!/bin/sh  
# \
exec oagtclsh "$0" "$@"

#
# $Log: not supported by cvs2svn $
# Revision 1.5  2003/09/04 15:30:11  soliday
# Added APSStandardSetup
#
# Revision 1.4  2001/10/24 17:21:05  borland
# All data now has the same time stamp.
#
# Revision 1.3  2001/10/24 16:44:51  borland
# Added log message header.
#
#

set auto_path [linsert $auto_path 0  /usr/local/oag/apps/lib/$env(HOST_ARCH)]
set auto_path [linsert $auto_path 0 /usr/local/oag/lib_patch/$env(HOST_ARCH)]
APSStandardSetup
APSDefineMonitoringVariables

set usage "usage: sddsSpaceUsed -configFile <filename> \[-reset 1\]"
set args $argv
set reset 0
set configFile ""
if {[APSStrictParseArguments {configFile reset}] || ![string length $configFile]} {
    APSSendEMail -address $apsDataManagerNormalEmail -subject "sddsSpaceUsed" \
      -message "$usage"
    return -code error "$usage"
}

set dirList [APSExpandSDDSSpaceUsedDirList -configFile $configFile]

if [llength $dirList]==0 {
    APSSendEMail -address $apsDataManagerNormalEmail -subject "sddsSpaceUsed" \
      -message "No directories found!"
    lappend errorList "No directories found!"
}

set errorList ""
set timeNow [clock seconds]
foreach dir $dirList {
    if [catch {cd $dir} result] {
        lappend errorList "unable to change to directory $dir: $result"
        continue
    }
    if [catch {exec du -sk .} spaceUsed] {
        #lappend errorList "unable to du directory $dir: $spaceUsed"
        #continue
    }
    set spaceUsed [lindex $spaceUsed 0]

    if {!$reset && [file exists spaceUsed.sdds]} {
        set dataFile spaceUsed.tmp
        set tmpFile 1
    } else {
        set dataFile spaceUsed.sdds
        set tmpFile 0
    }

    if [catch {open $dataFile w} fid] {
        lappend errorList "problem with $dataFile for $dir: $result"
        continue
    }
    puts $fid "SDDS5"
    puts $fid "&column name=Time, type=double &end"
    puts $fid "&column name=SpaceUsed, type=ulong64, units=kBytes &end"
    puts $fid "&data mode=ascii, no_row_counts=1 &end"
    puts $fid "$timeNow $spaceUsed"
    flush $fid
    close $fid

    if {[catch {exec sddscheck $dataFile} result] || [string compare $result ok]!=0} {
        lappend errorList "problem with $dataFile for $dir: $result"
        continue
    }
    
    if $tmpFile {
        if [catch {exec sddscombine spaceUsed.sdds $dataFile -merge spaceUsed.tmp1 -overWrite
            file rename -force spaceUsed.sdds spaceUsed.sdds-save
            file rename -force spaceUsed.tmp1 spaceUsed.sdds
            file delete -force $dataFile} result] {
            lappend errorList "problem appending to data file in $dir: $result"
        }
    }
}

if [llength $errorList] {
    APSSendEMail -address $apsDataManagerNormalEmail -message "$errorList" \
      -subject "Errors from sddsSpaceUsed"
}


