diff options
Diffstat (limited to 'client/engine/Disk.lib')
-rwxr-xr-x | client/engine/Disk.lib | 119 |
1 files changed, 108 insertions, 11 deletions
diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib index f15f1e08..6b642b38 100755 --- a/client/engine/Disk.lib +++ b/client/engine/Disk.lib @@ -319,7 +319,7 @@ local DISK # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" \ "$FUNCNAME 1 => 244198584" + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" "$FUNCNAME 1 => 244198584" return fi # Error si no se recibe 1 parámetro. @@ -467,6 +467,59 @@ esac #/** +# ogGetPartitionType int_ndisk int_npartition +#@brief Muestra el tipo de una particion determinada. +#@see ogGetFsType +#*/ ## +function ogGetPartitionType () +{ +ogGetFsType "$@" +} + + +#/** +# ogHidePartition int_ndisk int_npartition +#@brief Oculta un apartición visible. +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@return (nada) +#@exception OG_ERR_FORMAT formato incorrecto. +#@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo). +#@exception OG_ERR_PARTITION tipo de partición no reconocido. +#@version 1.0 - Versión en pruebas. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010/01/12 +#*/ ## +function ogHidePartition () +{ +# Variables locales. +local PART TYPE NEWTYPE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ + "$FUNCNAME 1 1" + return +fi +# Error si no se reciben 2 parámetros. +[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? +PART=$(ogDiskToDev "$1" "$2") || return $? + +# Obtener tipo de partición. +TYPE=$(ogGetPartitionType "$1" "$2") +case "$TYPE" in + NTFS) NEWTYPE="HNTFS" ;; + FAT32) NEWTYPE="HFAT32" ;; + FAT16) NEWTYPE="HFAT16" ;; + FAT12) NEWTYPE="HFAT12" ;; + *) ogRaiseError $OG_ERR_PARTITION "$TYPE" + return $? ;; +esac +# Cambiar tipo de partición. +ogSetPartitionId $1 $2 $NEWTYPE +} + + +#/** # ogListPartitions int_ndisk #@brief Lista las particiones definidas en un disco. #@param int_ndisk nº de orden del disco @@ -613,11 +666,52 @@ DISK="$(ogDiskToDev $1)" || return $? PART="$(ogDiskToDev $1 $2)" || return $? # Convertir tamaño en KB a sectores de 512 B. SIZE=$[$3*2] || ogRaiseError $OG_ERR_FORMAT || return $? -# Usar \c sfdisk para redefinir el tamaño. +# Redefinir el tamaño de la partición. sfdisk -f -uS -N$2 $DISK <<< ",$SIZE" &>/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? partprobe 2>/dev/null } +#/** +# ogUnhidePartition int_ndisk int_npartition +#@brief Hace visible una partición oculta. +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@return (nada) +#@exception OG_ERR_FORMAT formato incorrecto. +#@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo). +#@exception OG_ERR_PARTITION tipo de partición no reconocido. +#@version 1.0 - Versión en pruebas. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010/01/12 +#*/ ## +function ogUnhidePartition () +{ +# Variables locales. +local PART TYPE NEWTYPE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ + "$FUNCNAME 1 1" + return +fi +# Error si no se reciben 2 parámetros. +[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? +PART=$(ogDiskToDev "$1" "$2") || return $? + +# Obtener tipo de partición. +TYPE=$(ogGetPartitionType "$1" "$2") +case "$TYPE" in + HNTFS) NEWTYPE="NTFS" ;; + HFAT32) NEWTYPE="FAT32" ;; + HFAT16) NEWTYPE="FAT16" ;; + HFAT12) NEWTYPE="FAT12" ;; + *) ogRaiseError $OG_ERR_PARTITION "$TYPE" + return $? ;; +esac +# Cambiar tipo de partición. +ogSetPartitionId $1 $2 $NEWTYPE +} + #/** # ogUpdatePartitionTable @@ -629,10 +723,10 @@ partprobe 2>/dev/null #@version 0.1 - Integracion para Opengnsys - EAC: UpdatePartitionTable() en ATA.lib #@author Antonio J. Doblas Viso. Universidad de Malaga #@date 27/10/2008 -#*/ - +#*/ ## function ogUpdatePartitionTable () { +local i for i in `ogDiskToDev` do partprobe $i @@ -641,10 +735,12 @@ done -#/** @function ogGetPartitionsNumber: @brief detecta el numero de particiones del disco duro indicado. -#@param int_numdisk (indentificado EAC del disco) -#@return devuelve el numero paritiones del disco duro indicado -#@warning Salidas de errores no determinada +#/** +# ogGetPartitionsNumber int_ndisk +#@brief Detecta el numero de particiones del disco duro indicado. +#@param int_ndisk nº de orden del disco +#@return Devuelve el numero paritiones del disco duro indicado +#@warning Salidas de errores no determinada #@attention Requisitos: parted #@note Notas sin especificar #@version 0.1 - Integracion para Opengnsys - EAC: DetectNumberPartition () en ATA.lib @@ -653,14 +749,15 @@ done #@version 1.0 - Uso de sfdisk Primera version para OpenGnSys #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/07/24 -#*/ -function ogGetPartitionsNumber () { +#*/ ## +function ogGetPartitionsNumber () +{ #local disco totalpart #disco=`ogDiskToDev $1` #totalpart=`parted $disco print | egrep ^" [0123456789] " -c` #echo $totalpart local DISK -#/// Contar el nº de veces que aparece el disco en su lista de particiones. +# Contar el nº de veces que aparece el disco en su lista de particiones. DISK=$(ogDiskToDev $1) 2>/dev/null sfdisk -l $DISK 2>/dev/null | grep -c "^$DISK" } |