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