##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Fonctions dépréciées
##@cooked nocomments
uprovide base.deprecated

# base.array

function set_array_cmd() {
# Afficher la commande permettant d'initialiser le tableau $1 avec les valeurs:
# soit du tableau $2, soit de $3..$n si $2=="@"
# S'il n'y a que l'argument $1, alors afficher la commande permettant de
# recréer le tableau $1
    if [ $# -eq 1 ]; then echo_seta2 "$1"
    elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}"
    else eval "echo_seta \"\$1\" \"\${$2[@]}\""
    fi
}
function set_array() {
# Soit $1 un tableau à créer. Si $2=="@", créer le tableau $1 avec les valeurs
# $3..$n. Sinon, créer le tableau $1 avec les valeurs du tableau $2.
# Cette fonction n'existe que comme un pendant de set_var(), mais le véritable
# intérêt est la fonction set_array_cmd(). cf array_copy() pour une version plus
# efficace de la copie de tableaux
    eval "$(set_array_cmd "$@")"
}

# base.misc

function quote_in() {
# Comme quote_arg pour une chaine lue sur stdin
    sed 's/\\/\\\\/g
s/"/\\"/g
s/\$/\\$/g
s/`/\\`/g'
}
function quote_sin() {
# Pour la chaine lue sur stdin, remplacer ' par '\''. Cela permet de protéger une
# chaine à mettre entre quotes
    sed "s/'/'\\\\''/g"
}
function quote_sarg() {
# Dans la chaine $1, remplacer ' par '\''. Cette fonction utilise quote_sin,
# puisque le shell a des difficultés à faire le rechercher/remplacer approprié
    quote_sin <<<"$1"
}
function quoted_sarg() {
# Dans la chaine $1, remplacer ' par '\'', et afficher la chaine entourée de
# quotes
    echo "'$(quote_sarg "$1")'"
}
function quoted_sargs() {
# Comme quoted_sarg, mais tous les arguments sont quotés et affichés entourés de
# quotes, ce qui permet de construire des arguments d'une ligne de commande
    local a s
    for a in "$@"; do
        s="${s:+$s }$(quoted_sarg "$a")"
    done
    recho "$s"
}
