#/**
#         ogr RestoreImageSyntax filename partition [tools]  [levelcompresor]
#@brief   Genera una cadena de texto con la instrucción para crear un fichero imagen
#@param 1  filename           path absoluto del fichero imagen
#@param 2  partition             identificador linux del dispositivo particion.
#@param 3  [opcional] str_tools          herrmaienta de clonacion [partimage, partclone, ntfsclone]
#@param 4  [opcional] str_levelcompresor nivel de compresion. [0 -none-, 1-lzop-, 2-gzip]
#@return  cadena con el comando que se debe ejecutar.
#@exception OG_ERR_FORMAT    formato incorrecto.
#@warning En pruebas iniciales
#@TODO    introducir las herramientas fsarchiver, dd
#@TODO    introducir el nivel de compresion gzip
#@version 1.0 - Primeras pruebas
#@author  Antonio J. Doblas Viso. Universidad de Málaga
#@date    2010/02/08
#*/ ##

local TOOL COMPRESSOR LEVEL PART IMGFILE FILEHEAD INFOIMG


# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
    ogr Help "$FUNCNAME" "$FUNCNAME  filename partition [tool] [levelcompresor]" \
           "$FUNCNAME  /opt/opengnsys/images/prueba.img /dev/sda1 [partclone] [lzop]"
    return
fi

# Error si no se reciben al menos 2 parámetros.
[ $# -lt 2 ] && ogr RaiseError $OG_ERR_FORMAT && return $?

# controlamos que el parametro 1 (imagen) es tipo file.
[ -f $1 ] || ogr RaiseError $OG_ERR_NOTFOUND "$1" || return $?

# Si 2 parametros (file-origen-, device-destino-) = ogr GetImageFull($1)
if [ "$#" -eq 2 ]; then
	IMGFILE=$1
	PART=$2
	INFOIMG=$(ogr GetImageInfo $IMGFILE) || ogr RaiseError $OG_ERR_NOTFOUND "No Image $1" || return $?
	TOOL=`echo $INFOIMG | cut -f1 -d:`
	COMPRESSOR=`echo $INFOIMG | cut -f2 -d:`
	ogr RestoreImageSyntax $IMGFILE $PART $TOOL $COMPRESSOR
fi


# Si cuatro parametros genera sintaxis
if [ "$#" -eq 4 ]; then
	IMGFILE=$1
	PART=$2 
	# comprobamos parametro herramienta compresion.
	TOOL=$(echo $3 | tr [A-Z] [a-z])	
	#ogr CheckProgram $TOOL
	#comprobar parámetro compresor.
	LEVEL=$(echo $4 | tr [A-Z] [a-z])
	#ogr CheckProgram $LEVEL
	
	case "$LEVEL" in
    	"0"|"none")
    		COMPRESSOR=" "
    	;;
    	"1"|"lzop" | "LZOP")
    		COMPRESSOR=" lzop -dc "
    	;;
    	"2"|"gzip" | "GZIP")
    		COMPRESSOR=" gzip -dc "
    	;;
    	"3"|"bzip" | "BZIP" )
    		COMPRESSOR=" bzip -dc "
    	;;
    	*)
    		ogr RaiseError $OG_ERR_NOTFOUND "Compressor no valid $TOOL" || return $?
    	;;
	esac
    #comprobar mbuffer
	which mbuffer > /dev/null && MBUFFER="| mbuffer -m 40M " || MBUFFER=" "

	case "$TOOL" in
		"ntfsclone" | "NTFSCLONE")
			TOOL="| ntfsclone --restore-image --overwrite $PART -"
		;;
		"partimage"| "PARTIMAGE")
			TOOL="| partimage -f3 -B gui=no restore $PART stdin"
		;;
		"partclone" | "PARTCLONE")
		    # -C para que no compruebe tamaños
			TOOL="| partclone.restore -o $PART"
		;;
		*)
    		ogr RaiseError $OG_ERR_NOTFOUND "Tools imaging no valid $TOOL" || return $?
    	;;
	esac

	echo "$COMPRESSOR $IMGFILE $MBUFFER $TOOL"
fi
