#/**
#         ogr GetOsVersion int_ndisk int_nfilesys
#@brief   Devuelve la versión del sistema operativo instalado en un sistema de archivos.
#@param   int_ndisk     nº de orden del disco
#@param   int_nfilesys  nº de orden del sistema de archivos
#@return  str_OSType:str_OSVersion - tipo y versión del sistema operativo.
#@note    TipoSistema = { Linux, Windows }
#@note    Requisitos: awk, head, chroot
#@exception OG_ERR_FORMAT    Formato incorrecto.
#@exception OG_ERR_NOTFOUND  Disco o partición no corresponden con un dispositiv
#@exception OG_ERR_PARTITION Fallo al montar el sistema de archivos.
#@version 0.9 - Primera versión para OpenGNSys
#@author  Ramon Gomez, ETSII Universidad de Sevilla
#@date    2009-09-15
#*/ ##
# Variables locales.
local MNTDIR TYPE VERSION FILE

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

FSTYPE=$(ogr GetFsType $1 $2)

# Las particiones swap no tienen versión
[ "$FSTYPE" == "LINUX-SWAP" ] && return

# Montar la particion, si no lo estaba previamente.
MNTDIR=$(ogr Mount $1 $2) || return $?

# Elección del tipo de sistema operativo.
case "$FSTYPE" in
    EXT[234] | REISERFS | REISER4 | JFS | XFS)
        TYPE="Linux"
        # Para Linux: leer descripción.
        VERSION=$(chroot $MNTDIR lsb_release -d 2>/dev/null| awk -F: '{gsub (/\t/,""); print $2}')
        # Si no se puede obtener, buscar en ficheros del sistema.
        if [ -z "$VERSION" ]; then
            FILE="$MNTDIR/etc/lsb-release"
            [ -r $FILE ] && VERSION="$(awk 'BEGIN {FS="="}; $1~/DESCRIPTION/ {gsub(/\"/,"",$2); print $2}' $FILE)"
            for DISTRIB in redhat SuSE mandrake; do
                FILE="$MNTDIR/etc/${DISTRIB}-release"
                [ -r $FILE ] && VERSION="$(head -1 $FILE)"
            done
            FILE="$MNTDIR/etc/arch-release"
            [ -r $FILE ] && VERSION="Arch Linux"
        fi
        [ -e $MNTDIR/lib64 ] && VERSION="$VERSION 64 bits"
        ;;
    NTFS | FAT32 | FAT16)
        TYPE="Windows"
        # Para Windows: leer la version del registro.
        VERSION=$(ogr GetRegistryValue $MNTDIR software '\Microsoft\Windows NT\CurrentVersion\ProductName')
        ;;
esac

# Mostrar resultado y salir sin errores.
[ -n "$VERSION" ] && echo "$TYPE:$VERSION"
return 0
