#!/bin/sh -e
#
#    users: print the number of remote users on the machine
#
#    Copyright (C) 2009 Raphaël Pinson.
#    Copyright (C) 2009 Canonical Ltd.
#    Copyright (C) 2011-2014 Dustin Kirkland
#
#    Authors: Raphaël Pinson <raphink@ubuntu.com>
#             Dustin Kirkland <kirkland@byobu.org>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

__users_detail() {
	ps -ef 2>/dev/null | grep "sshd:.*@" | grep -v grep
}

__users() {
	local count=0 sign=
	# tmux interprets # as a special character, so ## is needed for a literal #
	# screen displays # literally, so only one # is needed
	case "$BYOBU_BACKEND" in
		tmux) sign="##" ;;
		*) sign="#" ;;
	esac
	if [ "$USERS_DISTINCT" = "1" ]; then
		count=$(pgrep -fl 'sshd:.*@' | cut -f3 -d\ | cut -f1 -d@ | sort -u | wc -l)
	else
		# Note: we'd like to use pgrep -c, however, this isn't available in
		# busybox and some distro's pgrep (and it doesn't exit non-zero).
		count=$(pgrep -f "^sshd:.*@|^/usr/sbin/sshd -i" | wc -l) || return
	fi
	if [ $count -gt 0 ]; then
		color b w r; printf "%d" "$count"; color -; color w r; printf "%s" "$sign"; color --
	else
		rm -f "$BYOBU_RUN_DIR/status.$BYOBU_BACKEND/users"*
	fi
}

# vi: syntax=sh ts=4 noexpandtab
