diff options
Diffstat (limited to 'client/engine/File.lib')
-rwxr-xr-x | client/engine/File.lib | 89 |
1 files changed, 17 insertions, 72 deletions
diff --git a/client/engine/File.lib b/client/engine/File.lib index ea3956e6..e602b64d 100755 --- a/client/engine/File.lib +++ b/client/engine/File.lib @@ -117,9 +117,9 @@ esac # Comprobar fichero origen y directorio destino. [ -n "$SOURCE" ] || ogRaiseError $OG_ERR_NOTFOUND "${ARGS% $*}" || return $? TARGET="$(ogGetPath "$@")" -[ -n "$TARGET" ] || ogRaiseError $OG_ERR_NOTFOUND "$@" || return $? +[ -n "$TARGET" ] || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? # Copiar fichero (para evitar problemas de comunicaciones las copias se hacen con rsync en vez de cp). -rsync --progress -avh "$SOURCE" "$TARGET" +rsync --progress --inplace -avh "$SOURCE" "$TARGET" } @@ -213,19 +213,22 @@ fi # Procesar camino según el número de parámetros. case $# in - 1) FILE="$1" ;; - 2) case "$1" in - REPO|repo) + 1) FILE="$1" ;; + 2) case "${1^^}" in + REPO) FILE="$OGIMG/$2" ;; - CACHE|cache) - FILE="$(ogMountCache)/$OGIMG/$2" ;; - CDROM|cdrom) - FILE="$(ogMountCdrom)/$2" ;; + CACHE) + MNTDIR="$(ogMountCache)" || return $? + FILE="$MNTDIR/$OGIMG/$2" ;; + CDROM) + MNTDIR="$(ogMountCdrom)" || return $? + FILE="$MNTDIR/$2" ;; *) ogRaiseError $OG_ERR_FORMAT return $? ;; esac ;; - 3) FILE="$(ogMount $1 $2)/$3" ;; - *) ogRaiseError $OG_ERR_FORMAT + 3) MNTDIR="$(ogMount $1 $2)" || return $? + FILE="$MNTDIR/$3" ;; + *) ogRaiseError $OG_ERR_FORMAT return $? ;; esac @@ -237,8 +240,8 @@ PREVFILE="" FILEPATH="/" while [ "$FILE" != "$PREVFILE" ]; do # Busca el nombre correcto en el directorio actual. - cd "$FILEPATH" - FILEPATH="${FILEPATH}/$(ls -A | grep -i -m1 "^${FILE%%/*}$")" || return $? + cd "$FILEPATH" 2>/dev/null || FILE="" + FILEPATH="${FILEPATH}/$(ls -A 2>/dev/null | grep -i -m1 "^${FILE%%/*}$")" || return $? PREVFILE="$FILE" FILE="${FILE#*/}" done @@ -318,7 +321,7 @@ esac # Comprobar que existen los ficheros origen y destino. [ -n "$SOURCE" ] || ogRaiseError $OG_ERR_NOTFOUND "${ARGS% $*}" || return 1 TARGET=$(ogGetPath "$@") -[ -n "$TARGET" ] || ogRaiseError $OG_ERR_NOTFOUND "$@" || return 1 +[ -n "$TARGET" ] || ogRaiseError $OG_ERR_NOTFOUND "$*" || return 1 # Devolver si el primer fichero se ha modificado después que el segundo. test "$SOURCE" -nt "$TARGET" } @@ -377,61 +380,3 @@ DIR="$(basename "${!#}")" mkdir -p "$PARENT/$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? } - -#/** -# ogNewPath [ str_repo | int_ndisk int_npartition ] path_filepath -#@brief Crea el directorio especificado -#@param path_filepath camino del fichero (independiente de mayúsculas) -#@param str_repo repositorio de ficheros -#@param int_ndisk nº de orden del disco -#@param int_npartition nº de orden de la partición -#@return file - camino completo real del directorio creado -#@note repo = { REPO, CACHE } -#@note Requisitos: \c grep \c sed -#@exception OG_ERR_FORMAT Formato incorrecto. -#@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. -#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. -#@warning Primeras pruebas. -#@todo Terminar de definir parámetros para acceso a repositorios. -#@version 0.1 - Primera adaptaci³n para OpenGNSys. -#@author obtenido de ogGetPath de Ramon Gomez, ETSII Universidad de Sevilla -#@date 2009-09-15 -#*/ -function ogNewPath () -{ -# Variables locales. -local MNTDIR FILE PREVFILE FILEPATH CURRENTDIR - -#/// Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ - "$FUNCNAME \"/mnt/sda1/windows/system32\" ==> /mnt/sda1/WINDOWS/System32" \ - "$FUNCNAME REPO /etc/fstab ==> /opt/opengnsys/images/etc/fstab" \ - "$FUNCNAME 1 1 \"/windows/system32\" ==> /mnt/sda1/WINDOWS/System32" - return -fi - -#/// Procesar camino según el número de parámetros. -case $# in - # si 1 parametro directorio-fichero completo. - 1) FILE="$1" ;; - # Si 2 parametros es REPOSITORIO DIRECTORIO-FICHERO - 2) case "$1" in - # consultando servidor repositorio base - REPO | $IPREPOMAN ) FILE="$OGIMG/$2" || return $OG_ERR_NOTFOUND ;; - # consultando particion auxiliar cache local - CACHE | $IP ) - ogMountCache >> /dev/null && FILE="$OGCAC/$OGIMG/$2" || return $OG_ERR_NOTFOUND ;; - # conectando con Servidor Axuliar. - *) ogRaiseError $OG_ERR_FORMAT - return $? ;; - esac ;; - # Si 3 parametros DISK PARTITION DIRECTORIO-FICHERO - 3) FILE="$(ogMount $1 $2)/$3" || return $OG_ERR_NOTFOUND ;; - *) return $OG_ERR_FORMAT ;; -esac - -mkdir -p ${FILE} -echo $FILE -} - |