#autoload

# Options:
#
# -a    add "all" as an additional match
# -n    add "none" as an additional match

local expl all none
local ifile=/usr/include/sys/syscall.h
local -au syscalls

zparseopts -D -K -E a=all n=none

[[ $OSTYPE = linux* ]] && ifile=/usr/include/bits/syscall.h
syscalls=( ${${${(M)${(f)"$(<$ifile)"}:#\#[[:blank:]]#define[[:blank:]]##SYS_*}#*[[:blank:]]SYS_}%%[[:blank:]]*} ) 2>/dev/null
[[ -n $all ]] && syscalls+=( all )
[[ -n $none ]] && syscalls+=( none )

_description syscalls expl 'system call'
compadd "$@" "$expl[@]" -a syscalls
