#!/bin/sh
#\
exec seqSh "$0" ${1+"$@"}
#*******************************************************************************
# E.S.O. - ACS project
# 
# tatEnvStatus
# 
# Created by acsMakeTclScript: almamgr 28.06.10 12:07:13 
# 
# 
#        !!!!!!!!!!!!!!  DO NOT MANUALLY EDIT THIS FILE  !!!!!!!!!!!!!!
# 
#-------------------------------------------------------------------------------

#
#  Get directory root of VLT and ACS, integration, current module.
if {[catch {set ACSROOT $env(ACSROOT)}]} {set ACSROOT undefined}
if {[catch {set VLTROOT $env(VLTROOT)}]} {set VLTROOT undefined}
if {[catch {set INTLIST $env(INTLIST)}]} {set INTLIST undefined}
if {[catch {set INTROOT $env(INTROOT)}]} {set INTROOT undefined}
if {[catch {set HOME    $env(HOME)}]}    {set HOME    undefined}

#
#  Set Auto-Path for each library
#

# 
# >>>tatlib<<<
set found "NO" 
if {$INTLIST != "undefined"} { 
   set myIntlist "$env(INTLIST)" 
   set intlist_list [split $myIntlist :] 
   set first_dir [ lindex $intlist_list 0 ] 
   foreach tmpdir $intlist_list {
      if {[file exist $tmpdir/lib/libtatlib.tcl] == 1} {
         if {[lsearch -exact $auto_path $tmpdir/lib/libtatlib.tcl] == -1} {
            set found "YES" 
            set mydir $tmpdir
            break 
         } 
      } 
   } 
} 
if {[file exist ../lib/libtatlib.tcl] == 1} {
    # the current relative path can be affected by any change of working
    # directory within the application. 
    # To prevent possible mess, the RELATIVE path is change into absolute
    set keepWd [pwd]
    cd ../lib/libtatlib.tcl
    if {[lsearch -exact $auto_path [pwd]] == -1} {
        set auto_path [linsert $auto_path 0 [pwd]]
    }
    cd $keepWd
    unset keepWd
} elseif {[file exist $INTROOT/lib/libtatlib.tcl] == 1} {
    if {[lsearch -exact $auto_path $INTROOT/lib/libtatlib.tcl] == -1} {
        set auto_path [linsert $auto_path 0 $INTROOT/lib/libtatlib.tcl]
    }
} elseif  {$found == "YES"} {
     set auto_path [linsert $auto_path 0 $mydir/lib/libtatlib.tcl]
} elseif {[file exist $VLTROOT/lib/libtatlib.tcl] == 1} {
    if {[lsearch -exact $auto_path $VLTROOT/lib/libtatlib.tcl] == -1} {
        set auto_path [linsert $auto_path 0 $VLTROOT/lib/libtatlib.tcl]
    }
} elseif {[file exist $ACSROOT/lib/libtatlib.tcl] == 1} {
    if {[lsearch -exact $auto_path $ACSROOT/lib/libtatlib.tcl] == -1} {
        set auto_path [linsert $auto_path 0 $ACSROOT/lib/libtatlib.tcl]
    }
} else {
    puts stderr  "tatEnvStatus - ERROR:"; 
    puts stderr  "   Tcl library libtatlib.tcl not found. Unable to continue."; 
    puts stderr  ""; 
    exit 1;
}
###########################################################
#                                                         #
# if the current shell is including TK, i.e. option       #
# command is known, then set-up X resources               #
#                                                         #
###########################################################

if {[info command option] != ""} {
    
    #
    # Load resources:
    # merge possible Xresource files in the following order:
    #           - /alma/ACS-8.2/ACSSW/app-defaults  
    #           - /alma/ACS-8.2/ACSSW/app-defaults  
    #           - /app-defaults  
    #           - /home/almamgr/                 
    #           - ../app-defaults        
    #
    if {[file exists $ACSROOT/app-defaults/XtatEnvStatus] == 1} {
        option readfile $ACSROOT/app-defaults/XtatEnvStatus 
    }
if {$INTLIST != "undefined"} { 
    foreach tmpdir $intlist_list {
       if {[file exists $tmpdir/app-defaults/XtatEnvStatus] == 1} {
          option readfile $tmpdir/app-defaults/XtatEnvStatus 
       }
    }
}
    if {[file exists $INTROOT/app-defaults/XtatEnvStatus] == 1} {
    option readfile $INTROOT/app-defaults/XtatEnvStatus 
    }
    if {[file exists $HOME/XtatEnvStatus] == 1} {
        option readfile $HOME/XtatEnvStatus 
    }
    if {[file exists ../app-defaults/XtatEnvStatus] == 1} {
        option readfile ../app-defaults/XtatEnvStatus 
    }
}
#-------------------------------------------------------------------
#                    END OF STANDARD PROLOGUE 
#-------------------------------------------------------------------

#vvvvvvvvvvvvvvvvv  src/tatEnvStatus.tcl  vvvvvvvvvvvvvvvvvvvvvv
#******************************************************************************
# E.S.O. - VLT project
#
# "@(#) $Id: tatEnvStatus.tcl,v 1.79 2004/03/16 08:29:41 psivera Exp $"
#
# who       when      what
# --------  --------  ----------------------------------------------
# pforstma  28/12/95  created
# psivera  2004-02-13 fixed tcl procheck warnings
#

#******************************************************************************
#   NAME
#  
#   tatEnvStatus - list status of 'tat' environments
# 
#   SYNOPSIS
#
#   tatEnvStatus
#
#   DESCRIPTION
#
#   Displays allocated WS/LCU environments whose .testSession file  
#   does not exist any more or whose .testSession does not match env. id.
#
#   WS/RWS environments checked are the local one. LCU environemnts
#   checked are those available on the network.
#
#   FILES
#
#   ENVIRONMENT
#
#   RETURN VALUES
#
#   CAUTIONS
#
#   EXAMPLES
#
#   SEE ALSO
#   
#   tat
#
#   BUGS     
#
#------------------------------------------------------------------------
#

global env

if {[catch {set HOST $env(HOST)}]} {set HOST undefined}
if {[catch {set VLTDATA $env(VLTDATA)}]} {set VLTDATA undefined}
if {[catch {set LCUROOT $env(LCUROOT)}]} {set LCUROOT undefined}

proc tatCheckEnvLocks { envList envType } {

global LCUROOT 

    while {![lempty $envList]} {
	set envId [lvarpop envList]
	if { $envType == "WS" } {
	    set lockFile /tmp/$envId.lock
	} else {
	    set envId [file tail $envId]
	    set lockFile $LCUROOT/LOCK.$envId
	}
	if { [file exists $lockFile] } {
	    set host_sessionFile [split [exec cat $lockFile]]
	    set host [lindex $host_sessionFile 0]
	    set sessionFile [lindex $host_sessionFile 1]
	    if {[ catch { exec rcp $host:$sessionFile /tmp/. } ]} {
		puts "$lockFile: $host:$sessionFile not found"
	    } else {
		# if not found => out is empty
		set out [vccRemExec $host "grep $envId $sessionFile"]
		if { [ llength $out ] == 0 } {
		    puts "$host:$sessionFile : $lcu not found"
		}
	    }
	}
    }
}

set trace 0

foreach arg $argv {
    switch -regexp -- $arg {
	        -t          { set trace 1 }
		default	    { puts "usage: tatEnvStatus"; 
	                      exit 1;
	                    }
	    }
    }

if { $trace == 1 } {
    cmdtrace on
}



#
# WS environments
#
set envList {}
set pattern w$HOST
set p1 {[0-9][0-9]}
set pattern $pattern$p1

# use the vcc database to query 'tat' environments
if {[ catch vccInit err  ]} {
    error "tatEnvStatus: $err"
}
if {[catch { set envList [vccInfo GetEnvs -attic $pattern] } out ]} {
    error "tatEnvStatus: $out"
}

tatCheckEnvLocks $envList WS

#
# LCU environments
#

catch { set envList [glob $LCUROOT/l*] }
tatCheckEnvLocks $envList LCU

#
# ___oOo___
#^^^^^^^^^^^^^^^^^  src/tatEnvStatus.tcl  ^^^^^^^^^^^^^^^^^^^^^^

#--------------------------------------------------------------
#                       End of tatEnvStatus
#--------------------------------------------------------------
# ___oOo___ 
