#compdef zgetattr zsetattr zdelattr zlistattr

local state line expl ret=1 REPLY
local -a args privs

case $service in
zgetattr)
_arguments \
  '1:file:_files' \
  '2:attribute:->attrs' \
  '3:parameter'
;;
zsetattr)
_arguments \
  '1:file:_files' \
  '2:attribute:->attrs' \
  '3:value'
;;
zdelattr)
_arguments \
  '1:file:_files' \
  '2:attribute:->attrs'
;;
zlistattr)
_arguments \
  '1:file:_files' \
  '2:parameter'
;;
esac && ret=0

if [[ $state = attrs ]]; then
  zlistattr ${~${(Q)line[1]}} REPLY 2> /dev/null
  _wanted attrs expl 'attribute' compadd $REPLY
fi
