summaryrefslogtreecommitdiffstats
path: root/client/engine/FileSystem.lib
diff options
context:
space:
mode:
Diffstat (limited to 'client/engine/FileSystem.lib')
-rwxr-xr-xclient/engine/FileSystem.lib65
1 files changed, 48 insertions, 17 deletions
diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib
index 1219f832..e29baf99 100755
--- a/client/engine/FileSystem.lib
+++ b/client/engine/FileSystem.lib
@@ -486,6 +486,43 @@ test -n "$(ogMount "$1" "$2")"
#/**
+# ogIsLocked int_ndisk int_npartition
+#@brief Comprueba si una partición está bloqueada por una operación de uso exclusivo.
+#@param int_ndisk nº de orden del disco
+#@param int_npartition nº de orden de la partición
+#@return Código de salida: 0 - bloqueado, 1 - sin bloquear o error.
+#@note El fichero de bloqueo se localiza en \c /var/lock/part, siendo \c part el dispositivo de la partición, sustituyendo el carácter "/" por "-".
+#@version 0.9 - Primera versión para OpenGnSys.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2009-09-03
+#@version 1.0.1 - Devolver falso en caso de error.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2011-05-18
+#*/ ##
+function ogIsLocked ()
+{
+# Variables locales
+local PART LOCKFILE
+
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "if $FUNCNAME 1 1; then ... ; fi"
+ return
+fi
+# Falso, en caso de error.
+[ $# == 2 ] || return 1
+
+# Obtener partición.
+PART="$(ogDiskToDev $1 $2)" || return 1
+
+# Comprobar existencia del fichero de bloqueo.
+LOCKFILE="/var/lock/lock${PART//\//-}"
+test -f $LOCKFILE
+}
+
+
+#/**
# ogIsMounted int_ndisk int_nfilesys
#@brief Comprueba si un sistema de archivos está montado.
#@param int_ndisk nº de orden del disco
@@ -514,27 +551,23 @@ test -n "$(ogGetMountPoint $1 $2)"
#/**
-# ogIsLocked int_ndisk int_npartition
-#@brief Comprueba si una partición está bloqueada por una operación de uso exclusivo.
+# ogIsWritable int_ndisk int_nfilesys
+#@brief Comprueba si un sistema de archivos está montado de lectura y escritura.
#@param int_ndisk nº de orden del disco
-#@param int_npartition nº de orden de la partición
-#@return Código de salida: 0 - bloqueado, 1 - sin bloquear o error.
-#@note El fichero de bloqueo se localiza en \c /var/lock/part, siendo \c part el dispositivo de la partición, sustituyendo el carácter "/" por "-".
-#@version 0.9 - Primera versión para OpenGnSys.
-#@author Ramon Gomez, ETSII Universidad de Sevilla
-#@date 2009-09-03
-#@version 1.0.1 - Devolver falso en caso de error.
+#@param int_nfilesys nº de orden del sistema de archivos
+#@return Código de salida: 0 - lectura y escritura, 1 - solo lectura o no montado.
+#@version 1.0.5 - Primera versión para OpenGnSys.
#@author Ramon Gomez, ETSII Universidad de Sevilla
-#@date 2011-05-18
-#*/ ##
-function ogIsLocked ()
+#@date 2013-10-09
+#/**
+function ogIsWritable ()
{
# Variables locales
-local PART LOCKFILE
+local PART
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
- ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \
"if $FUNCNAME 1 1; then ... ; fi"
return
fi
@@ -544,9 +577,7 @@ fi
# Obtener partición.
PART="$(ogDiskToDev $1 $2)" || return 1
-# Comprobar existencia del fichero de bloqueo.
-LOCKFILE="/var/lock/lock${PART//\//-}"
-test -f $LOCKFILE
+test -n "$(findmnt -n -o OPTIONS $PART | awk 'BEGIN {RS=","} /^rw$/ {print}')"
}