From: Stefan Schantl <stefan.schantl@ipfire.org>
To: development@lists.ipfire.org
Subject: [PATCH 4/8] extrahd.cgi: Store configured drives in a hash
Date: Fri, 23 Jun 2023 06:01:20 +0200 [thread overview]
Message-ID: <20230623040124.3826-4-stefan.schantl@ipfire.org> (raw)
In-Reply-To: <20230623040124.3826-1-stefan.schantl@ipfire.org>
[-- Attachment #1: Type: text/plain, Size: 3887 bytes --]
Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
---
| 71 ++++++++++++++++++----------------------
1 file changed, 32 insertions(+), 39 deletions(-)
--git a/html/cgi-bin/extrahd.cgi b/html/cgi-bin/extrahd.cgi
index dde4e7356..fc8685830 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
- <table border='0' width='600' cellspacing="0">
-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 = <FILE>;
- close FILE;
# Loop through the file content.
- foreach my $entry (sort @configfile) {
- my ($uuid, $fs, $path) = split( /\;/, $entry );
- my $color="$Header::colourred";
-
- # Check if the device is currently mounted.
- if (&is_mounted($path)) {
- $color=$Header::colourgreen;
- }
+ while (<FILE>) {
+ # Cut the line into pieces.
+ my ($uuid, $fs, $path) = split( /\;/, $_ );
- print <<END
- <tr><td colspan="4"> </td></tr>
- <tr><td align='left'><font color=$color><b>$uuid</b></font></td>
- <td align='left'>$fs</td>
- <td align='left'>$path</td>
- <td align='center'>
- <form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <input type='hidden' name='DEVICE' value='$uuid' />
- <input type='hidden' name='FS' value='$fs' />
- <input type='hidden' name='PATH' value='$path' />
- <input type='hidden' name='ACTION' value='$Lang::tr{'delete'}' />
- <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' />
- </form></td></tr>
-END
-;
+ # Add the found entry to the hash of configured drives.
+ $configured_drives{$uuid} = $path;
}
- print <<END
- </table>
-END
-;
-&Header::openbox('100%', 'center', $Lang::tr{'extrahd detected drives'});
+ # Close the file handle.
+ close(FILE);
+
print <<END
<table border='0' width='600' cellspacing="0">
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";
- }
-
- # Omit the used filesystem.
- my $fs = $filesystems{$partition};
# Check if the device is used as swap.
- if (&is_swap($partition)) {
+ } elsif (&is_swap($partition)) {
$disabled = "disabled";
$mountpoint = "swap";
}
+ # Omit the used filesystem.
+ my $fs = $filesystems{$partition};
+
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
--
2.39.2
next prev parent reply other threads:[~2023-06-23 4:01 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-23 4:01 [PATCH 1/8] extrahd.cgi: Add various perl functions deal with block devices Stefan Schantl
2023-06-23 4:01 ` [PATCH 2/8] extrahd.cgi: Refactor code to use new introduced perl functions Stefan Schantl
2023-06-23 4:01 ` [PATCH 3/8] extrahd.cgi: Abort if a device could not be umounted Stefan Schantl
2023-06-23 4:01 ` Stefan Schantl [this message]
2023-06-23 4:01 ` [PATCH 5/8] extrahd.cgi: Add is_configured function Stefan Schantl
2023-06-23 4:01 ` [PATCH 6/8] extrahd.cgi: Display mount status next to the corresponding drive Stefan Schantl
2023-06-23 4:01 ` [PATCH 7/8] extrahd.cgi: Re-order sanity check logic Stefan Schantl
2023-06-23 4:01 ` [PATCH 8/8] extrahd.cgi: Add missing translation strings Stefan Schantl
2023-06-25 3:43 ` [PATCH 1/8] extrahd.cgi: Add various perl functions deal with block devices jon
2023-07-01 9:19 ` Michael Tremer
2023-07-01 14:54 ` Stefan Schantl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230623040124.3826-4-stefan.schantl@ipfire.org \
--to=stefan.schantl@ipfire.org \
--cc=development@lists.ipfire.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox