]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
extrahd.cgi: Abort if a device could not be umounted.
authorStefan Schantl <stefan.schantl@ipfire.org>
Tue, 1 Aug 2023 15:48:30 +0000 (17:48 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 2 Aug 2023 09:11:57 +0000 (09:11 +0000)
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
html/cgi-bin/extrahd.cgi

index bafdb9fc93f3faf5fac475129ff0cf70f0dabbc4..f31bc2c4427647c16c0978f26c7e24b3dbbdc07c 100644 (file)
@@ -146,33 +146,35 @@ if ($extrahdsettings{'ACTION'} eq $Lang::tr{'add'}) {
 #
 } elsif ($extrahdsettings{'ACTION'} eq $Lang::tr{'delete'})  {
        # Call helper binary to unmount the device.
-       &General::system("/usr/local/bin/extrahdctrl", "umount", "$extrahdsettings{'PATH'}");
+       unless(&General::system("/usr/local/bin/extrahdctrl", "umount", "$extrahdsettings{'PATH'}")) {
+               # Open the device file for reading.
+               open(FILE, "< $devicefile" ) or die "Unable to read $devicefile";
 
-       # Open the device file for reading.
-       open(FILE, "< $devicefile" ) or die "Unable to read $devicefile";
+               # Read the file content into a temporary array.
+               my @tmp = <FILE>;
 
-       # Read the file content into a temporary array.
-       my @tmp = <FILE>;
-
-       # Close file handle.
-       close(FILE);
+               # Close file handle.
+               close(FILE);
 
-       # Re-open device file for writing.
-       open(FILE, "> $devicefile" ) or die "Unable to write $devicefile";
+               # Re-open device file for writing.
+               open(FILE, "> $devicefile" ) or die "Unable to write $devicefile";
 
-       # Loop through the previous read file content.
-       foreach my $line (sort @tmp) {
-               # Split line content and assign nice variables.
-               my ($uuid, $fs, $path) = split( /\;/, $line );
+               # Loop through the previous read file content.
+               foreach my $line (sort @tmp) {
+                       # Split line content and assign nice variables.
+                       my ($uuid, $fs, $path) = split( /\;/, $line );
 
-               # Write the line in case it does not contain our element to delete.
-               if ($path ne $extrahdsettings{'PATH'}) {
-                       print FILE "$line";
+                       # Write the line in case it does not contain our element to delete.
+                       if ($path ne $extrahdsettings{'PATH'}) {
+                               print FILE "$line";
+                       }
                }
-       }
 
-       # Close file handle.
-       close(FILE);
+               # Close file handle.
+               close(FILE);
+       } else {
+               $errormessage = "$Lang::tr{'extrahd cant umount'} $extrahdsettings{'PATH'}$Lang::tr{'extrahd maybe the device is in use'}?";
+       }
 }
 
 if ($errormessage) {