diff --git a/session b/session index 1689f1f..38f1f0e 100755 --- a/session +++ b/session @@ -42,6 +42,8 @@ EXIT_ALREADY_IN_SESSION=5 EXIT_NOT_ATTACHED=6 EXIT_CONFIG_NOT_GENERATED=7 EXIT_INVALID_CHOICE=8 +EXIT_ALREADY_LOGGING=9 +EXIT_NOT_LOGGING=10 ## Functions print_help() { @@ -90,24 +92,7 @@ print_help() { } get_available_sessions() { - local socket_paths=(${SOCKET_PREFIX}*${SOCKET_SUFFIX}) - local socket_names=() - for spath in ${socket_paths[@]}; do - sname=${spath##${SOCKET_PREFIX}} - sname=${sname%%${SOCKET_SUFFIX}} - socket_names+=("${sname}") - done - echo ${socket_names[@]} -} - -get_available_logs() { - local log_paths=(${SOCKET_PREFIX}*${LOG_SUFFIX}) - local socket_names=() - for spath in ${log_paths[@]}; do - sname=${spath##${SOCKET_PREFIX}} - sname=${sname%%${LOG_SUFFIX}} - socket_names+=("${sname}") - done + socket_names=($(abduco | tail +2 | awk '{ print $(NF) }')) echo ${socket_names[@]} } @@ -128,7 +113,7 @@ get_fifo_path() { get_session_pid() { local session_name=$1 - fuser $(get_session_path $session_name) 2> /dev/null + abduco | tail +2 | grep $session_name | awk '{ print $(NF-1) }' } is_existing_session_path() { @@ -257,27 +242,24 @@ case $mode in session_name=$1 exit_if_existing_session $session_name fi - session_path=$(get_session_path $session_name) + echo "[new session '$session_name']" CMD="abduco -n $session_name /bin/bash" #echo $CMD - echo "[new session '$session_name']" eval $CMD -# if [[ "${config[log_session]}" == "yes" ]]; then -# log_path=$(get_log_path $session_name) -# touch $log_path && chmod 600 $log_path -# abduco -r -S -q -l -a $session_name > $log_path & -# #disown -# fi + if [[ "${config[log_session]}" == "yes" ]]; then + CMD="echo 'session log on' | abduco -p $session_name" + eval $CMD + fi CMD="abduco -a -S -e ${config[detach_char]} $session_name" eval $CMD exit $EXITSUCCESS ;; "log") case "$1" in - "start"|"stop");; + "on"|"off");; *) echo >&2 "'$(basename $0) log' accepts:" - echo >&2 " start, stop" + echo >&2 " on, off" exit $EXIT_INVALID_SUBMODE ;; esac @@ -291,7 +273,7 @@ case $mode in log_path=$(get_log_path $session_name) fifo_path=$(get_fifo_path $session_name) case "$1" in - "start") + "on") if is_logging $session_name; then echo >&2 "Already logging session $session_name." exit $EXIT_ALREADY_LOGGING @@ -300,7 +282,7 @@ case $mode in mkfifo $fifo_path cat $fifo_path | abduco -r -S -a $session_name &> $log_path && rm $log_path $fifo_path & disown ;; - "stop") + "off") if ! is_logging $session_name; then echo 2> "Currently not logging session $session_name." exit $EXIT_NOT_LOGGING @@ -359,16 +341,7 @@ case $mode in exit $EXIT_SUCCESS ;; "info"|"i") - # If no session name specified: info for all sessions - if [ -z "$1" ]; then - session_name=($(get_available_sessions)) - else - session_name=$1 - exit_if_nonexisting_session $session_name - fi - for sname in ${session_name[@]}; do - print_session_info $sname - done + abduco exit $EXIT_SUCCESS ;; "help"|"h") @@ -390,33 +363,6 @@ case $mode in done exit $EXIT_SUCCESS ;; - "clean") - case "$1" in - "log") - logs_avail=($(get_available_logs)) - for sname in ${logs_avail[@]}; do - if ! is_existing_session_name $sname; then - rm $(get_log_path $sname) - fi - done - exit $EXIT_SUCCESS - ;; - "socket") - sessions_avail=($(get_available_sessions)) - for sname in ${sessions_avail[@]}; do - PID=$(get_session_pid $sname) - if [ -z "$PID" ]; then - rm $(get_session_path $sname) - fi - done - exit $EXIT_SUCCESS - ;; - *) - echo >&2 "'$(basename $0) clean' accepts:" - echo >&2 " log, socket" - exit $EXIT_INVALID_SUBMODE - esac - ;; *) echo >&2 "Invalid mode: ${mode}" print_help