Subject: PATCH: minor completion updates for FreeBSD
From: Oliver Kiddle <[email-masked]>
To: Zsh workers <[email-masked]>
Date: Wed, 03 Aug 2016 17:12:53 +0200
List-Id: Zsh Workers List <zsh-workers.zsh.org>

freebsd-update allows you to specify, e.g. both fetch and install. I
expect the exclusion lists could prevent more combinations but there
aren't many.
getent lists the databases it can query which doesn't match our default
fallback list exactly so it is useful to parse it out.
cp and sockstat have gained -s options

Oliver

diff --git a/Completion/BSD/Command/_freebsd-update b/Completion/BSD/Command/_freebsd-update
index 36b4a01..d424572 100644
--- a/Completion/BSD/Command/_freebsd-update
+++ b/Completion/BSD/Command/_freebsd-update
@@ -20,4 +20,4 @@ _arguments \
   '-s[fetch files from the specified server or server pool]:server:_hosts' \
   '-t[mail output of cron command, if any, to address]:address' \
   '--currently-running[assume specified release as current]:release' \
-  ':command:_values -S " " -w "commands" $flags[@]'
+  '*:command:_values -S " " -w "commands" $flags[@]'
diff --git a/Completion/BSD/Command/_sockstat b/Completion/BSD/Command/_sockstat
index daad946..913f3eb 100644
--- a/Completion/BSD/Command/_sockstat
+++ b/Completion/BSD/Command/_sockstat
@@ -28,6 +28,7 @@ case $OSTYPE in
       '*-j[show sockets belonging to JID]: : _jails -0 -o jid'
       '-L[exclude loopback]'
       '*-P+[specify protocol]: : _values -s , protocols $protocols'
+      '-s[display protocol state if applicable]'
     )
   ;;
   netbsd*)
diff --git a/Completion/Unix/Command/_cp b/Completion/Unix/Command/_cp
index 7087b4e..5c3f379 100644
--- a/Completion/Unix/Command/_cp
+++ b/Completion/Unix/Command/_cp
@@ -57,7 +57,8 @@ else
     '(dragonfly|freebsd)*' '-l[link files instead of copying]' \
     '(darwin|dragonfly|freebsd|netbsd)*' '-v[show file names as they are copied]' \
     'darwin*' "-X[don't copy extended attributes or resource forks]" \
-    '(dragonfly|freebsd)*' "-x[don't traverse file systems]"
+    '(dragonfly|freebsd)*' "-x[don't traverse file systems]" \
+    'freebsd<10->.*' '-s[make symbolic links instead of copies of non-directories]'
   do
     [[ $OSTYPE = $~pattern ]] && args+=( $arg )
   done
diff --git a/Completion/Unix/Command/_getent b/Completion/Unix/Command/_getent
index b9aff66..7f4e8bc 100644
--- a/Completion/Unix/Command/_getent
+++ b/Completion/Unix/Command/_getent
@@ -29,6 +29,8 @@ case $state in
       databases=( "${(@)${(@f)$(_call_program databases $words[1] --help \
                    2>/dev/null)}[(r)Supported*,-1]}" )
       databases=( "${=${(@)databases[2,${(@)databases[(i)]}-1]}}" )
+    elif [[ $OSTYPE = freebsd* ]]; then
+      databases=( ${=${(f)"$(_call_program databases $words[1] 2>&1)"}[-1]} )
     else
       databases=( passwd group hosts ipnodes services protocols ethers networks netmasks )
     fi