#!/bin/csh -f
#+
#OSIRIS library of scripts
#
#NAME
#     osirisStopIdl -- Stop the OSIRIS IDL sessions
#
#SYNOPSIS
#     osirisStopIdl [-t #] [-m] etc...
#
#DESCRIPTION
#     Called via osirisStopGuis via "osiris stop idl" to kill IDL sessions
#
#OPTIONS
#     -t #
#          ID number to attach to all script generated errors, warnings, and
#          questions that are passed to the OGS.  The ID number is separated
#          from the rest of the message with a ";".
#
#     -m
#          simulate calls to RPC servers.  during simulated calls, the 
#          command is echoed (instead of being executed).
#
#     others?
#
#EXAMPLES
#     osirisStopIdl
#
#ENVIRONMENT VARIABLES
#     list of environment variables used
#
#FILES
#     list of files used
#
#SERVERS & KEYWORDS
#     list of the servers and keywords used, for example:
#
#
#SCRIPTS CALLED
#     list of the scripts called by this script, for example:
#
#     help, syncheck
#
#EXIT STATUS
#     0 - normal exit, no error
#     1 - script aborted by an interrupt
#     2 - syncheck error
#     3 - error parsing command line input
#     other errors...
#
#SEE ALSO
#     ???
#-
#
# Modification History:
# 20041124 - MB:    Initial version created
# 20100517 - jlyke: Broken out from osirisSetupNight
# 20120202 - jlyke: Switched to svncserver1 
# 20200603 - jlyke: Use ct to kill the IDL
#
#-----------------------------------------------------------------------------
# Boiler plate for "-h" support for command autohelp.

if ("$1" == "-h") then
    help $0 | more
    exit $status
endif

# Set up to trap interrupts (Ctrl-C, etc.)
onintr abort

# Set default variable values
set cmdpre = ""
set cmdsuf = ""
set idnum = 0

# Check for flags
set noglob
while ($#argv != 0)
##echo "${0} ${mode}: Checking ${1}..."
    switch ($1)
	case -t:
	    set CheckStatus = `syncheck -command $1 $2 -pattern int`
	    if ("$CheckStatus" == "OK") then
		set idnum = $2
		shift
	    else
		echo "${0} ${mode}: Invalid script ID number specified <${2}> - using ${idnum}."
	    endif
	    unset Checkstatus
	    breaksw
	case -m:
	    set sim
	    set cmdpre = "echo ${0}: sim:"
	    set cmdsuf = "-m"
	    breaksw
	default:
	    echo "${0}: Invalid command line flag $1 specified."
	    echo "${0}: Usage: $0 [-t #] [-m]"
	    # set the error code for an error with command line input
	    exit 3
	    breaksw
    endsw
    shift
end
unset noglob

#-----------------------------------------------------------------------------
# Define list of IDL
set idl_list = (qlook2 osiris_idlstart osiris_drp_backbone idl) 
set kill_list = ()

foreach idl ($idl_list)
  # only kill this USER's software
  set kill_list = ($kill_list `ct | grep ^$USER | grep $idl | awk  '{print $2}'`)
end

kill -9 $kill_list
goto done

abort:
# Block of code to handle interrupts.
exit 1

done:
# is there anything that needs to go here?
exit