about summary refs log tree commit diff
path: root/Completion/Linux/Type
diff options
context:
space:
mode:
authorOliver Kiddle <okiddle@yahoo.co.uk>2019-09-27 00:27:45 +0200
committerOliver Kiddle <okiddle@yahoo.co.uk>2019-09-27 00:27:45 +0200
commit4f48ce208b89b0790f113642aab200a65abf7816 (patch)
tree077ab574515a61bc05c3e7f38a7493678f52a1f3 /Completion/Linux/Type
parent81be5d1dceae907052858d3c2140a109d5c3f553 (diff)
downloadzsh-4f48ce208b89b0790f113642aab200a65abf7816.tar.gz
zsh-4f48ce208b89b0790f113642aab200a65abf7816.tar.xz
zsh-4f48ce208b89b0790f113642aab200a65abf7816.zip
44781: add completion of SELinux contexts
Diffstat (limited to 'Completion/Linux/Type')
-rw-r--r--Completion/Linux/Type/_selinux_contexts14
-rw-r--r--Completion/Linux/Type/_selinux_roles7
-rw-r--r--Completion/Linux/Type/_selinux_types7
-rw-r--r--Completion/Linux/Type/_selinux_users8
4 files changed, 36 insertions, 0 deletions
diff --git a/Completion/Linux/Type/_selinux_contexts b/Completion/Linux/Type/_selinux_contexts
new file mode 100644
index 000000000..4c2cf4288
--- /dev/null
+++ b/Completion/Linux/Type/_selinux_contexts
@@ -0,0 +1,14 @@
+#autoload
+
+local -a parts suf
+
+parts=( users roles types )
+while compset -P 1 '*:' && (( $+parts[1] )) ; do
+  shift parts
+done
+if (( $+parts[1] )); then
+  compset -S ':*' || suf=( -S : )
+  _selinux_$parts[1] $suf
+else
+  _message -e selinux-ranges 'selinux range'
+fi
diff --git a/Completion/Linux/Type/_selinux_roles b/Completion/Linux/Type/_selinux_roles
new file mode 100644
index 000000000..92b4c36cb
--- /dev/null
+++ b/Completion/Linux/Type/_selinux_roles
@@ -0,0 +1,7 @@
+#autoload
+
+local -a seroles expl
+
+seroles=( ${(f)"$(_call_program selinux-roles seinfo --flat -r)"} )
+_description selinux-roles expl "selinux role"
+compadd "$@" "$expl[@]" -a seroles
diff --git a/Completion/Linux/Type/_selinux_types b/Completion/Linux/Type/_selinux_types
new file mode 100644
index 000000000..ef31f45d2
--- /dev/null
+++ b/Completion/Linux/Type/_selinux_types
@@ -0,0 +1,7 @@
+#autoload
+
+local -a setypes expl
+
+setypes=( ${(f)"$(_call_program selinux-types seinfo --flat -t)"} )
+_description selinux-types expl "selinux type"
+compadd "$@" "$expl[@]" -a setypes
diff --git a/Completion/Linux/Type/_selinux_users b/Completion/Linux/Type/_selinux_users
new file mode 100644
index 000000000..f046c92cf
--- /dev/null
+++ b/Completion/Linux/Type/_selinux_users
@@ -0,0 +1,8 @@
+#autoload
+
+local -a seusers expl
+
+seusers=( ${(f)"$(_call_program selinux-users seinfo --flat -u)"} )
+(( $#seusers )) || seusers=( guest_u root staff_u sysadm_u system_u unconfined_u user_u )
+_description selinux-users expl "selinux user"
+compadd "$@" "$expl[@]" -a seusers