Subject: Re: [patch] _init_d add OpenBSD bits
From: Matthew Martin <[email-masked]>
To: Daniel Shahaf <[email-masked]>
Cc: [email-masked]
Date: Thu, 21 Jan 2016 13:31:34 -0600
List-Id: Zsh Workers List <zsh-workers.zsh.org>

On Wed, Jan 13, 2016 at 12:57:34AM +0000, Daniel Shahaf wrote:
> Surely these should be single quotes around the last argument?

Updated diff after a few more comments from Daniel.

diff --git a/Completion/Unix/Command/_init_d b/Completion/Unix/Command/_init_d
index bbf62fc..2bb8d53 100644
--- a/Completion/Unix/Command/_init_d
+++ b/Completion/Unix/Command/_init_d
@@ -1,6 +1,7 @@
 #compdef -p */(init|rc[0-9S]#).d/*
 
 local cmds script
+local -a flags
 
 _compskip=all
 
@@ -41,6 +42,23 @@ if [[ $OSTYPE = freebsd* ]]; then
 
     return 0
   }
+elif [[ $OSTYPE = openbsd* ]]; then
+  (( $+functions[_init_d_fullpath] )) ||
+  _init_d_fullpath() {
+    echo /etc/rc.d/$1
+    return 0
+  }
+
+  (( $+functions[_init_d_get_cmds] )) ||
+  _init_d_get_cmds() {
+    local -a cmds disabled
+
+    cmds=(start stop reload restart check)
+    disabled=(${${${(M)${(f)"$(< $script)"}:#rc_(${(~j:|:)cmds})=NO}#rc_}%=NO})
+    echo ${cmds:|disabled}
+  }
+
+  flags=('-d[print debug information]' '-f[forcibly start the daemon]')
 else
   (( $+functions[_init_d_fullpath] )) ||
   _init_d_fullpath() {
@@ -90,4 +108,4 @@ cmds=( $(_init_d_get_cmds) ) || return
 (( $#cmds )) || zstyle -a ":completion:${curcontext}:commands" commands cmds ||
     cmds=(start stop)
 
-_sub_commands $cmds
+_arguments -s -A "-*" $flags ':init.d command:_sub_commands $cmds'