dav_completion_build_args() {
    local word
    for i in "${!COMP_WORDS[@]}"; do
        word="${COMP_WORDS[$i]}"
        if [[ "$word" =~ ^\'|^\" ]]; then
            printf "%s\0" "$word"
        else
            echo "$word" | xargs printf "%s"
            printf "\0"
        fi
    done
}

dav_completion() {
    local cmd
    local out
    local cmd_res

    cmd="${COMP_WORDS[0]} complete $COMP_CWORD"
    out=$(dav_completion_build_args | xargs -0 $cmd)
    cmd_res=$?

    if [[ $cmd_res -eq 10 ]]; then
        compopt -o nospace
    fi
    if [[ $cmd_res -eq 12 ]]; then
        compopt -o default
        COMPREPLY=()
    else
        IFS=$'\n' declare -ga 'COMPREPLY=($out)'
    fi
}

complete -F dav_completion dav

