diff --git a/html/cgi-bin/extrahd.cgi b/html/cgi-bin/extrahd.cgi
index f31bc2c44..bb0c22610 100644
--- a/html/cgi-bin/extrahd.cgi
+++ b/html/cgi-bin/extrahd.cgi
@@ -31,6 +31,9 @@ require "${General::swroot}/header.pl";
my %extrahdsettings = ();
my $errormessage = "";
+# Hash to store the configured drives.
+my %configured_drives;
+
# SYSFS directory which contains all block device data.
my $sysfs_block_dir = "/sys/class/block";
@@ -187,50 +190,26 @@ if ($errormessage) {
############################################################################################################################
############################################################################################################################
- print <
-END
-;
+&Header::openbox('100%', 'center', $Lang::tr{'extrahd detected drives'});
+
# Re-read mountpoints.
%mountpoints = &get_mountpoints();
# Read-in the device config file.
open( FILE, "< $devicefile" ) or die "Unable to read $devicefile";
- my @configfile = ;
- close FILE;
# Loop through the file content.
- foreach my $entry (sort @configfile) {
- my ($uuid, $fs, $path) = split( /\;/, $entry );
- my $color="$Header::colourred";
+ while () {
+ # Cut the line into pieces.
+ my ($uuid, $fs, $path) = split( /\;/, $_ );
- # Check if the device is currently mounted.
- if (&is_mounted($path)) {
- $color=$Header::colourgreen;
- }
-
- print <| |
- | $uuid |
- $fs |
- $path |
-
- |
-END
-;
+ # Add the found entry to the hash of configured drives.
+ $configured_drives{$uuid} = $path;
}
- print <
-END
-;
-&Header::openbox('100%', 'center', $Lang::tr{'extrahd detected drives'});
+ # Close the file handle.
+ close(FILE);
+
print <
END
@@ -270,21 +249,35 @@ END
# Get the mountpoint.
my $mountpoint = $mountpoints{$partition};
+ # If no mountpoint could be determined try to grab from
+ # configured drives.
+ unless($mountpoint) {
+ my $uuid = $uuids{$partition};
+
+ # Build uuid string.
+ $uuid = "UUID=" . $uuid;
+
+ # Try to obtain a possible moutpoint from configured drives.
+ $mountpoint = $configured_drives{$uuid} if ($configured_drives{$uuid});
+ }
+
+ # Check if the mountpoint is used as root or boot device.
if ($mountpoint eq "/" or $mountpoint =~ "^/boot") {
$disabled = "disabled";
+
+ # Check if it is mounted.
} elsif(&is_mounted($mountpoint)) {
$disabled = "disabled";
+
+ # Check if the device is used as swap.
+ } elsif (&is_swap($partition)) {
+ $disabled = "disabled";
+ $mountpoint = "swap";
}
# Omit the used filesystem.
my $fs = $filesystems{$partition};
- # Check if the device is used as swap.
- if (&is_swap($partition)) {
- $disabled = "disabled";
- $mountpoint = "swap";
- }
-
print <