#/**
#         ogr GetImageInfo filename
#@brief   muestra información sobre la imagen monolitica.
#@param 1   filename           path absoluto del fichero imagen
#@return  cadena compuesta por clonacion:compresor:sistemaarchivos:tamañoKB
#@exception OG_ERR_FORMAT    formato incorrecto.
#@exception OG_ERR_NOTFOUND   fichero no encontrado.
#@exception OG_ERR_IMAGE 	"Image format is not valid $IMGFILE"

#@warning En pruebas iniciales
#@TODO    Definir sintaxis de salida (herramienta y compresor en minuscula)
#@TODO 	  Arreglar loop para ntfsclone 
#@TODO    insertar parametros entrada tipo OG
#@version 1.0 - Primeras pruebas
#@author  Antonio J. Doblas Viso. Universidad de Málaga
#@date    2010/02/08
#*/ ##

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

# Error si no se reciben 1 parámetros.
[ $# == 1 ] || ogr RaiseError $OG_ERR_FORMAT || return $?

#comprobando que el parametro uno es un file.
[ -f $1 ] || ogr RaiseError $OG_ERR_NOTFOUND "$1" || return $?

local TOOLS COMPRESSOR IMGFILE FILEHEAD FS SIZE PARTIMAGEINFO PARTCLONEINFO NTFSCLONEINFO IMGDETECT
IMGDETECT="FALSE"

IMGFILE=$1
FILEHEAD=/tmp/`basename $IMGFILE`.infohead
COMPRESSOR=`file $IMGFILE | awk '{print $2}'`
ogr CheckStringInGroup "$COMPRESSOR" "gzip lzop" || ogr RaiseError $OG_ERR_IMAGE "Image format is not valid $IMGFILE" || return $?
$($COMPRESSOR -dc $IMGFILE 2>/dev/null | head > $FILEHEAD) || ogr RaiseError $OG_ERR_IMAGE "Image format is not valid $IMGFILE" || return $? 

## buscando Primera opción.
if [ "$IMGDETECT" == "FALSE" ] 
then 
	PARTCLONEINFO=$(partclone.info $FILEHEAD 2>&1)
	if `echo $PARTCLONEINFO | grep size > /dev/null`
	then
		TOOLS=PARTCLONE
		FS=$(echo $PARTCLONEINFO | awk '{gsub(/\: /,"\n"); print toupper($8);}')
		SIZE=$(echo $PARTCLONEINFO | awk '{gsub(/\: /,"\n"); printf "%d\n", $11*1024*1024;}')
		IMGDETECT="TRUE"
	fi
fi
#buscando segunda opcion.
if [ "$IMGDETECT" == "FALSE" -a ! -f /dev/loop2  ] 
then 
	cat $FILEHEAD | grep -w ntfsclone-image > /dev/null && NTFSCLONEINFO=$(cat $FILEHEAD | ntfsclone --restore --overwrite /dev/loop2 - 2>&1)
	if `echo $NTFSCLONEINFO | grep ntfsclone > /dev/null`  
	then
		TOOLS=NTFSCLONE
   		SIZE=$(echo $NTFSCLONEINFO | awk '{gsub(/\(|\)|\./,""); printf "%d\n",$17/1000;}')
   		FS=NTFS
   		IMGDETECT="TRUE"
	fi
fi
## buscando Tercer opción. 
if [ "$IMGDETECT" == "FALSE" ]
then
	PARTIMAGEINFO=$(partimage -B gui=no imginfo "$FILEHEAD" 2>&1)
	if `echo $PARTIMAGEINFO | grep Partition > /dev/null`
	then	
		TOOLS=PARTIMAGE	
		FS=$(echo $PARTIMAGEINFO | awk '{gsub(/ /,"\n"); print $17;}' | awk '{sub(/\.\.+/," "); print toupper($2)}') 
		SIZE=$( echo $PARTIMAGEINFO | awk '{gsub(/ /,"\n"); print $36;}' | awk '{sub(/\.\.+/," "); printf "%d\n",$2*1024*1024;}')
		IMGDETECT="TRUE"
	fi	
fi
#comprobamos valores #Chequeamos los valores devueltos.
if [ -z "$TOOLS" -o -z "$COMPRESSOR" -o "$IMGDETECT" == "FALSE" ]
then
	ogr RaiseError $OG_ERR_IMAGE "Image format is not valid $IMGFILE" || return $?
else
	COMPRESSOR=$(echo $COMPRESSOR | tr [a-z] [A-Z])
	echo $TOOLS:$COMPRESSOR:$FS:$SIZE
fi
