# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 function __envsetup_init() { SYSTEM_NAME="`uname -s`" test "${SYSTEM_NAME#CYGWIN}" != "$SYSTEM_NAME" && SYSTEM_NAME=Cygwin test "${SYSTEM_NAME#MINGW32}" != "$SYSTEM_NAME" && SYSTEM_NAME=Mingw BASEHOST="${HOSTNAME%%.*}" } function __envsetup_check_file() { # note: pour utiliser cette fonction, les variables SYSTEM_NAME et BASEHOST # doivent être définies. C'est le cas si sysinc/base a été inclus. local dir="$1" file="$2" [ -f "$dir/$file" ] || return 1 # ignorer les fichiers qui ont l'extension .ignore [ "${file%%.ignore}" != "$file" ] && return 1 # tester si le fichier est spécifique à une plateforme system="$(expr "$file" : ".*\\.\\[\\([^.]*\\)\\]")" [ -n "$system" -a "$system" != "$SYSTEM_NAME" ] && return 1 system="$(expr "$file" : ".*\\.\\[-\\([^.]*\\)\\]")" [ -n "$system" -a "$system" == "$SYSTEM_NAME" ] && return 1 # tester si le fichier est spécifique à une machine host="$(expr "$file" : ".*\\.on_\\([^.]*\\)")" [ -n "$host" -a "$host" != "$BASEHOST" ] && return 1 host="$(expr "$file" : ".*\\.noton_\\([^.]*\\)")" [ -n "$host" -a "$host" == "$BASEHOST" ] && return 1 # tester si le fichier est spécifique à un utilisateur user="$(expr "$file" : ".*\\.for_\\([^.]*\\)")" [ -n "$user" -a "$user" != "$USER" ] && return 1 user="$(expr "$file" : ".*\\.notfor_\\([^.]*\\)")" [ -n "$user" -a "$user" == "$USER" ] && return 1 return 0 } function __envsetup_source_dir() { # charger les fichiers qui sont dans le répertoire $1 (basedir). Si un # fichier .source_in_order existe dans ce répertoire, il fixe l'ordre dans # lesquel les fichiers sont chargés local dir="$1" sio [ -d "$1" ] || return sio="$dir/.source_in_order" if [ -f "$sio" ]; then source "$sio" else local file user host system for file in $(/bin/ls -1 "$dir" | while read file; do __envsetup_check_file "$dir" "$file" && echo "$dir/$file"; done); do [ -z "$file" ] && continue source "$file" done fi } function __envsetup_terminate() { unset -f __envsetup_init unset -f __envsetup_check_file unset -f __envsetup_source_dir unset -f __envsetup_terminate }