1e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# This file is part of systemd. 2e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# 3e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# Copyright 2011 Dan Walsh 4e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# 5e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# systemd is free software; you can redistribute it and/or modify it 6e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# under the terms of the GNU General Public License as published by 7e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# the Free Software Foundation; either version 2 of the License, or 8e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# (at your option) any later version. 9e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# 10e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# systemd is distributed in the hope that it will be useful, but 11e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# WITHOUT ANY WARRANTY; without even the implied warranty of 12e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# General Public License for more details. 14e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# 15e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# You should have received a copy of the GNU General Public License 16e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh# along with systemd; If not, see <http://www.gnu.org/licenses/>. 17e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh 18e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh__contains_word () { 19e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh local word=$1; shift 20e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh for w in $*; do [[ $w = $word ]] && return 0; done 21e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh return 1 22e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh} 23e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh 24e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh__get_all_booleans () { 25e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh getsebool -a | cut -f1 -d' ' 26e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh} 27e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh 28e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh_setsebool () { 29e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh local command=${COMP_WORDS[1]} 30e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} 31e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh local verb comps 32e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh 33e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh if [ "$verb" = "" -a "$prev" = "setsebool" -o "$prev" = "-P" ]; then 34e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh COMPREPLY=( $(compgen -W "-P $( __get_all_booleans ) " -- "$cur") ) 35e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh return 0 36e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh fi 37e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh COMPREPLY=( $(compgen -W "0 1 -P" -- "$cur") ) 38e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh return 0 39e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh} 40e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh 41e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh_getsebool () { 42e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh local command=${COMP_WORDS[1]} 43e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} 44e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh local verb comps 45e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh 46e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh if [ "$verb" = "" -a "$prev" == "getsebool" ]; then 47e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh COMPREPLY=( $(compgen -W "-a $( __get_all_booleans ) " -- "$cur") ) 48e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh return 0 49e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh fi 50e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh if [ "$verb" = "" -a "$prev" != "-a" ]; then 51e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh COMPREPLY=( $(compgen -W "$( __get_all_booleans ) " -- "$cur") ) 52e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh return 0 53e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh fi 54e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh return 0 55e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh} 56e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walsh 57e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walshcomplete -F _setsebool setsebool 58e5a81c715fa31147d5ef79cf1c116ce68744b02aDan Walshcomplete -F _getsebool getsebool 59