#autoload ksm-valid && return 0 sock_dir=/tmp/.ICE-unix sockets=( $sock_dir/[0-9]*(=UN) ) if (( $#sockets == 0 )); then echo "No sockets found in $sock_dir" >&2 return 1 fi if (( $#sockets > 1 )); then echo "Found multiple sockets in $sock_dir" for socket in "${(@)sockets}"; do echo " Checking if $socket in use via lsof" _lsof="`lsof $socket`" if [[ -z "$_lsof" ]]; then echo " unused; deleting" if rm "$socket"; then # remove from array using reverse subscripting sockets[(r)$socket]=() else echo "rm $socket failed" >&2 return 1 fi fi done if (( $#sockets > 1 )); then echo "Still found multiple sockets in $sock_dir:" echo "${(F@)sockets//(#s)/ }" return 1 elif (( $#sockets == 0 )); then echo "No sockets left after removing unused ones!" >&2 return 1 fi fi #echo "Found unique socket in use: $sockets[1]" session_socket="${SESSION_MANAGER#*:}" export SESSION_MANAGER="local/`hostname`:$sockets[1]" echo "Set SESSION_MANAGER=local/`hostname`:$sockets[1]" return 0