# shellcheck shell=dash

___x_cmd_cron___validate_pat(){
    local pat="$1"
    local f1
    local f2
    local f3
    local f4
    local f5
    local extra

    local IFS=" "
    {
        read -r f1 f2 f3 f4 f5 extra
    } <<A
$pat
A

    if [ -z "$f1" ] || [ -z "$f2" ] || [ -z "$f3" ] || [ -z "$f4" ] || [ -z "$f5" ]; then
        cron:error "Invalid cron pattern: expected 5 fields (min hour day month dow)"
        return 1
    fi

    if [ -n "$extra" ]; then
        cron:error "Invalid cron pattern: expected 5 fields, got more"
        return 1
    fi

    local field
    local i=1
    for field in "$f1" "$f2" "$f3" "$f4" "$f5"; do
        case "$field" in
            *[!*0-9-,/]*)
                cron:error "Invalid cron pattern: field $i contains illegal characters (allowed: * 0-9 - / ,)"
                return 1
                ;;
        esac
        i=$(( i + 1 ))
    done

    return 0
}
