]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blobdiff - inst/util.sh
bugfix
[z.facultad/75.08/llamadas.git] / inst / util.sh
index 826ab9ee664adc924f0b9096ae40c0b259eb95c8..0bb46f1feccf088bd1abfac0d4b247afb30971c5 100755 (executable)
@@ -1,4 +1,9 @@
-#/bin/sh
+#/bin/bash
+
+## Los scrips que incluyan deben definir BASE_DIR antes de incluirme!
+#BASE_DIR="$PWD"
+
+LOCK_DIR="$BASE_DIR/lock"
 
 # Lee del teclado un valor
 #
@@ -32,6 +37,10 @@ preguntar () {
        OPCIONES=$2
        while [ true ] ; do
                read -p "$PREGUNTA [$OPCIONES]: " RTA
+
+               # Escapeo el caracter '-' por '\-'
+               RTA=$(echo $RTA | sed "s/\-/\\\-/")
+
                IS_OK=`echo "$OPCIONES" | grep "$RTA"`
                if [ ! -z "$IS_OK" ] && [ ! -z "$RTA" ] ; then
                        eval "$3=$RTA"
@@ -51,45 +60,57 @@ validar_solo_numeros () {
 }
 
 # Crea un archivo de lock para un script
+# Devuelve: 0 si ok, 1 si ya esta lockeado, 2 si no pudo crear lock.
 lock () {
-       if is_lock "$1" ; then
-               # Ya esta loqueado, no lo vuelvo a crear
-               echo "No"
-               return
-       fi
-       echo "lero lero" > "$INST_DIR/lock/$1.pid"
+       # si ya esta loqueado, no lo vuelvo a crear
+       is_lock "$1" && return 1
+       # Si no puedo escribir en el dir de lock, da error
+       [ -w "$LOCK_DIR" ] || return 2
+       echo $$ > "$LOCK_DIR/$1.pid"
+       return 0
 }
 
 # Desbloquea el script
 unlock () {
-       rm -rf "$INST_DIR/lock/$1.pid"
+       rm -rf "$LOCK_DIR/$1.pid"
 }
                        
 
 # Consulta si un script esta lockeado
 is_lock () {
-       if [ -e "$INST_DIR/lock/$1.pid" ] ; then
+       if [ -e "$LOCK_DIR/$1.pid" ] ; then
                # Lock file encontrado!
                return 0
        fi
        # No hay lock file!
        return 1
 }
-                       
-#leer "Ingrese un directorio" "/tmp" ALGO
 
-#echo "Ingresaste : $ALGO"
+# Verifica que un valor este entre otros 2 .... $1 pertecezca  a [$2,$3]
+# $1 Numero a validar
+# $2 Cota inferior 
+# $3 Cota superior
 
-# Test de preguntanto
-#preguntar "Sos hombre (s/n)" "sn" OPT
+validar_rango(){
+       if [ "$1" -ge "$2" ] && [ "$1" -le "$3" ]; then
+               return 0
+       else 
+               return 1
+       fi
+}
 
-#if [ "$OPT" == "s" ] ; then
-#      echo "Sos un mentiroso!!!"
-#else
-#      echo "Jaja ... Trola!"
-#fi
+# Muestra mensaje y sale con código de error
+# Uso: die mensaje [código de error = 1]
+die()
+{
+       echo "$1" >&2
+       exit ${2:-1}
+}
 
-# Test de preguntanto
-#preguntar "Que preferis (drogas/cafe/vino/coca cola)" "drogas cafe vino \"coca cola\"" OPT
+# Imprime mensaje por salida de error
+# Uso: perr mensajes
+perr()
+{
+       echo $@ >&2
+}
 
-#echo "Vos decidis : $OPT"