#/**
#         ogr MountFs int_ndisk int_nfilesys
#@brief   Monta un sistema de archivos.
#@param   int_ndisk       nº de orden del disco
#@param   int_nfilesys    nº de orden del sistema de archivos
#@return  path_mountpoint Punto de montaje
#@exception OG_ERR_FORMAT   Formato incorrecto.
#@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo.
#@exception OG_ERR_FILESYS  Tipo de sistema de archivos desconocido o no se puede montar.
#@version 0.1 -  Integracion para Opengnsys  -  EAC:   MountPartition() en FileSystem.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-28
#@version 0.91 - Correcciones para caché local.
#@author  Ramon Gomez, ETSII Universidad de Sevilla
#@date    2010-03-18
#*/ ##
# Variables locales
local PART TYPE MNTDIR MOUNT PARAMS

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

# Obtener dispositivo a montar.
DEV="$(ogr DiskToDev $1 $2)" || return $?

# Comprobar si el sistema de archivos ya está montada.
MNTDIR="$(ogr GetMountPoint $1 $2)"
# Si no, montarla en un directorio de sistema
if [ -z "$MNTDIR" ]; then
    # Error si la particion esta bloqueada.
    ogr IsLocked $1 $2 && ogr RaiseError $OG_ERR_LOCKED "$1 $2" && return $?
    # Crear punto de montaje o enlace simbólico para Caché local. 
    MNTDIR="${DEV/dev/mnt}"
    TYPE="$(ogr GetFsType $1 $2)" || return $?
    if [ "$TYPE" == "LINUX-SWAP" ]; then
        swapon ${DEV}
        return
    elif [ "$TYPE" == "CACHE" -a -n "$OGCAC" ]; then 
        ln -fs $OGCAC $MNTDIR 
    else 
        mkdir -p $MNTDIR 
    fi 
    # Montar según el tipo de sitema de archivos.
    case "$TYPE" in
        CACHE)      MOUNT=mount ;;
        EXT[234])   MOUNT=mount ;;
        REISERFS)   MOUNT=mount ;;
        JFS)        MOUNT=mount ;;
        XFS)        MOUNT=mount ;;
        HFS|HFS+)   MOUNT=mount ;;
        NTFS)       MOUNT=ntfs-3g ;;
        FAT32|FAT16)
                    MOUNT=mount; PARAMS="-t vfat" ;;
        *)  # Error, si la partición no es montable.
            rmdir $MNTDIR
            ogr RaiseError $OG_ERR_FILESYS "$1, $2, $TYPE"
            return $?  ;;
    esac
    $MOUNT $PARAMS $DEV $MNTDIR || $MOUNT $PARAMS $DEV $MNTDIR -o force,remove_hiberfile || ogr RaiseError $OG_ERR_FILESYS "$1, $2, $TYPE" || return $?
fi
echo $MNTDIR
}


#####  PRUEBAS
# Montar CDROM
function ogr MountCdrom ()
{
local DEV MNTDIR
DEV="/dev/cdrom"            # Por defecto
MNTDIR=$(mount | awk -v D=$DEV '{if ($1==D) {print $3}}')
if [ -z "$MNTDIR" ]; then
    MNTDIR=${DEV/dev/mnt}
    mkdir -p $MNTDIR
    mount -t iso9660 $DEV $MNTDIR || ogr RaiseError $OG_ERR_PARTITION "cdrom" || return $?
fi
echo $MNTDIR
