summaryrefslogtreecommitdiffstats
path: root/client/engine/Disk.lib
diff options
context:
space:
mode:
Diffstat (limited to 'client/engine/Disk.lib')
-rwxr-xr-xclient/engine/Disk.lib119
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"
}