#/**
#         ogr ReduceFs int_ndisk int_nfilesys
#@brief   Reduce el tamaño del sistema de archivos, sin tener en cuenta el espacio libre.
#@param   int_ndisk     nº de orden del disco
#@param   int_nfilesys  nº de orden del sistema de archivos
#@return  int_tamañoKB  - tamaño en KB
#@exception OG_ERR_FORMAT   Formato incorrecto.
#@exception OG_ERR_NOTFOUND Sistema de archivos no corresponden con un dispositivo.
#@exception OG_ERR_FILESYS  Sistema de archivos desconocido o no accesible.
#@warning En Windows, se borran los ficheros pagefile.sys e hiberfile.sys
#@warning El sistema de archivos se amplía al mínimo + 10%.
#@note    Requisitos:	*resize*
#@version 0.1 -  Integracion para Opengnsys  -  EAC:   ReduceFileSystem() en ATA.lib
#@author  Antonio J. Doblas Viso. Universidad de Malaga
#@date    2008-10-27
#@version 0.9 - Primera version para OpenGNSys.
#@author  Ramon Gomez, ETSII Universidad de Sevilla
#@date    2009-09-23
#@version 0.9.2 - Añadir un 10% al tamaño mínimo requerido.
#@author  Ramon Gomez, ETSII Universidad de Sevilla
#@date    2010-09-27
#*/ ##
# Variables locales
local DEV BLKS SIZE

# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
    ogr Help "$FUNCNAME" "$FUNCNAME int_ndisk int_nfilesys" \
           "$FUNCNAME 1 1"
    return
fi
# Error si no se reciben 2 parámetros.
[ $# == 2 ] || ogr RaiseError $OG_ERR_FORMAT || return $?

# Obtener tipo de sistema de archivos.
DEV="$(ogr DiskToDev $1 $2)" || return $?
# Redimensionar según el tipo de particion.
case "$(ogr GetFsType $1 $2)" in
    EXT[234])
        ogr Unmount $1 $2 2>/dev/null
        # Ext2/3/4: Tamaño de los bloques del sistema de archivos
        BLKS=$(tune2fs -l $DEV | awk '/Block size/ {print int($3/512)}')
        # Traduce el num. en sectores de 512B a tamano en MB.
        SIZE=$(resize2fs -P $DEV 2>/dev/null | \
		       awk -v B=$BLKS '/minimum size/ {print int($7*1.1*B/2048)}')
        resize2fs -fp $DEV "${SIZE}M" &>/dev/null || ogr RaiseError $OG_ERR_FILESYS "$1,$2" || return $?
	    ;;
#    REISERFS)		# Usar "resize_reiserfs"
#	    ;;
    NTFS)
        ogr DeleteFile $1 $2 pagefile.sys
        ogr DeleteFile $1 $2 hiberfile.sys
        ogr Unmount $1 $2 2>/dev/null
        # NTFS: Obtiene tamaño mínimo en MB.
        SIZE=$(ntfsresize -fi $DEV | awk '/resize at/ {print int($8*1.1)}')
        ntfsresize -fns "${SIZE}M" $DEV >/dev/null || ogr RaiseError $OG_ERR_FILESYS "$1,$2" || return $?
        ntfsresize -fs "${SIZE}M" $DEV <<<"y" >/dev/null || ogr RaiseError $OG_ERR_FILESYS "$1,$2" || return $?
	    ;;
    *)  ogr RaiseError $OG_ERR_FILESYS "$1,$2"
	    return $? ;;
esac
# Mostrar nuevo tamaño en KB.
echo $[SIZE*1024]
