#/**
#         ogr CreateImage int_ndisk int_npartition str_repo path_image
#@brief   Crea una imagen a partir de una partición.
#@param   int_ndisk      nº de orden del disco
#@param   int_npartition nº de orden de la partición
#@param   str_repo       repositorio de imágenes (remoto o caché local)
#@param   path_image     camino de la imagen (sin extensión)
#@return  (nada, por determinar)
#@note    repo = { REPO, CACHE }
#@exception OG_ERR_FORMAT    formato incorrecto.
#@exception OG_ERR_NOTFOUND  fichero o dispositivo no encontrado.
#@exception OG_ERR_PARTITION partición no accesible o no soportada.
#@exception OG_ERR_LOCKED    particion bloqueada por otra operación.
#@exception OG_ERR_IMAGE     error al crear la imagen del sistema.
#@warning En pruebas iniciales
#@todo    Comprobaciones, control de errores, definir parámetros, etc.
#@version 0.1 -  Integracion para Opengnsys  -  HIDRA:CrearImagen{EXT3, NTFS}.sh;  EAC: CreateImageFromPartition () en Deploy.lib
#@author Ramon Gomez, ETSII Universidad de Sevilla 
#@Date    2008/05/13
#@author  Antonio J. Doblas Viso. Universidad de Malaga
#@date    2008/10/27
#@version 0.9 - Versión en pruebas para OpenGnSys
#@author  Ramon Gomez, ETSII Universidad de Sevilla
#@date    2009/10/07
#*/ ##
# Variables locales
local PART IMGDIR IMGFILE ERRCODE

# TESTING mensajes
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
    ogr Help "$FUNCNAME" "$FUNCNAME int_ndisk int_npart str_repo path_image [str_tools] [str_levelcompresor]" \
           "$FUNCNAME 1 1 REPO /aula1/winxp " \
           "$FUNCNAME 1 1 REPO /aula1/winxp partclone lzop" \
           "$FUNCNAME 1 1 REPO /aula1/winxp partimage gzip" \
           "$FUNCNAME 1 1 REPO /aula1/winxp ntfsclone lzop" 
    return
fi
# TESTING de -n a -lt 
# Error si no se reciben 4 parámetros.
[ $# -lt 4 ] && ogr RaiseError $OG_ERR_FORMAT && return $?

PART="$(ogr DiskToDev $1 $2)" || return $?
if ogr IsLocked $1 $2; then
    ogr RaiseError $OG_ERR_LOCKED "$1,$2"
    return $?
fi
IMGDIR=$(ogr GetParentPath "$3" "$4")
[ -n "$IMGDIR" ] || ogr RaiseError $OG_ERR_NOTFOUND "$3 $(dirname $4)" || return $?
IMGFILE="$IMGDIR/$(basename "$4").pgz"
ogr Unmount $1 $2 2>/dev/null

ogr Lock $1 $2 || return $?
trap "ogr Unlock $1 $2; rm -f $IMGFILE" 1 2 3 6 9

################## TESTING #########################################
#Solicitamos la generación de la instruccion a ejecutar
PROG=`ogr CreateImageSyntax $PART $IMGFILE $5 $6`
echo $PROG
eval $PROG

# Controlar salida de error y desbloquear partición.
ERRCODE=$?
if [ $ERRCODE != 0 ]; then
    ogr RaiseError $OG_ERR_IMAGE "$1 $2 $IMGFILE"
    rm -f "$IMGFILE"
fi
ogr Unlock $1 $2
return $ERRCODE
