
# TODO: add privacy protector


___X_CMD_COCO_READFILE_ALLOWLIST="$___X_CMD_ROOT_DATA"

___x_cmd_coco_tomulti_(){
    if [ "$___X_CMD_SHELL" = dash ]; then
        local IFS=:
        x_=""
        local i=""
        for i in $1; do
            x_="${x_}${i}
"
        done
    else
        x_="${1//:/
}"
    fi
}

# consider using awk ? for once ?
___x_cmd_coco_isallow(){
    local fp="$1"
    local x_=""
    ___x_cmd_coco_tomulti_ "$___X_CMD_COCO_READFILE_ALLOWLIST"
    while read -r line; do
        [ -n "$line" ]  || continue
        case "$fp" in
            "$line"/*)  return 0 ;;
        esac
    done <<A
$x_
A
    return 1
}

___x_cmd_coco_readfile(){
    local fp=""
    arg:init:x  coco
    while [ $# -gt 0 ]; do
        case "$1" in
            --filepath)     fp="$2";    arg:2:shift ;;
            *)              break ;;
        esac
    done

    ___x_cmd_coco_valid_fp --filepath "$fp" || return $?
    [ -f "$fp" ] || N=coco M="No such file -> $fp" log:ret:1
    coco:info "Reading file content with line numbers for reference only (line numbers are not part of the file content) -> $fp"
    ___x_cmd_cmds cat -n "$fp"
}
