about summary refs log tree commit diff
path: root/Completion/BSD/Type/_bsd_disks
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/BSD/Type/_bsd_disks')
-rw-r--r--Completion/BSD/Type/_bsd_disks26
1 files changed, 26 insertions, 0 deletions
diff --git a/Completion/BSD/Type/_bsd_disks b/Completion/BSD/Type/_bsd_disks
new file mode 100644
index 000000000..986d36e45
--- /dev/null
+++ b/Completion/BSD/Type/_bsd_disks
@@ -0,0 +1,26 @@
+#autoload
+# disk device names on BSDs
+local -a disks
+
+case $OSTYPE in
+  freebsd*)
+    disks=( ${${(M)${(f)"$(geom disk list)"}\:#Geom name\:*}#*\: } )
+  ;;
+  dragonfly*)
+    disks=( $(sysctl -n kern.disks) )
+  ;;
+  openbsd*)
+    disks=( ${${(s.,.)"$(sysctl -n hw.disknames)"}%\:*} )
+  ;;
+  netbsd*)
+    disks=( $(sysctl -n hw.disknames) )
+  ;;
+esac
+
+if (( $#disks )); then
+  local expl
+  _wanted disk-devices expl 'disk device' compadd "$@" $disks
+  return
+fi
+
+return 1