#compdef dd

local expl

if compset -P 1 'conv\='; then
  # If there's a comma present, ignore up to the last one.  The
  # test alone will have that effect.
  compset -p '*,'
  _wanted values expl conversion &&
      compadd "$expl[@]" -qS, -q \
              ascii ebcdic ibm block unblock lcase ucase swab noerror sync
elif compset -P 1 'if\='; then
  _description expl 'input file'
  _files "$expl[@]"
elif compset -P 1 'of\='; then
  _description expl 'output file'
  _files "$expl[@]"
else
  _wanted values expl option &&
      compadd "$expl[@]" -S '=' if of ibs obs bs cbs skip files seek count conv
fi
