# shellcheck shell=dash disable=SC2030,SC2031

___x_cmd_fsiter___ls_share(){
    local ___x_cmd_fsiter_file_path="${1:-$PWD}"
    local ___x_cmd_fsiter_file_callback="${2:-___x_cmd_fsiter_echo}"

    local ___X_CMD_FSITER___LS_SHARE_OLDPWD="$PWD"
    ___x_cmd_cmds_cd "$___x_cmd_fsiter_file_path" 2>/dev/null || M="No such [directory=$___x_cmd_fsiter_file_path]" arg:ret:64
    local code=0

    (
        set +o nomatch
        # That will make the glob fail if there is no match, instead of returning the glob itself.
        # The redirect stderr to null is to avoid the error message when there is no match.

        local ___x_cmd_fsiter_file_i
        if [ "$___X_CMD_FSITER_TYPE" = folder ]; then
            eval 'for ___x_cmd_fsiter_file_i in '"${___X_CMD_FSITER_GLOB}"'/; do
                printf "%s\n" "${___x_cmd_fsiter_file_i%/}"
            done'
        elif [ "$___X_CMD_FSITER_TYPE" = file ]; then
            eval 'for ___x_cmd_fsiter_file_i in '"${___X_CMD_FSITER_GLOB}"'; do
                if [ ! -d "$___x_cmd_fsiter_file_i" ]; then
                   printf "%s\n" "$___x_cmd_fsiter_file_i"
                fi
            done'
        else
            eval 'for ___x_cmd_fsiter_file_i in '"${___X_CMD_FSITER_GLOB}"'; do
                printf "%s\n" "$___x_cmd_fsiter_file_i"
            done'
        fi
    ) | \
        while read -r ___x_cmd_fsiter_file_i; do
            [ -e "$___x_cmd_fsiter_file_i" ] || continue
            "$___x_cmd_fsiter_file_callback" "$___x_cmd_fsiter_file_i" || { code=$?; break; }
        done

    ___x_cmd_cmds_cd "$___X_CMD_FSITER___LS_SHARE_OLDPWD"
    return "$code"
}
