summaryrefslogtreecommitdiffstats
path: root/rescue/bin/lsparts
diff options
context:
space:
mode:
Diffstat (limited to 'rescue/bin/lsparts')
-rwxr-xr-xrescue/bin/lsparts46
1 files changed, 46 insertions, 0 deletions
diff --git a/rescue/bin/lsparts b/rescue/bin/lsparts
new file mode 100755
index 000000000..a1855a21e
--- /dev/null
+++ b/rescue/bin/lsparts
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+#
+# Main author Pascal Rigaux (pixel)
+# Put together by Guillaume Cottenceau
+#
+# Copyright 1999-2005 Mandriva
+#
+# This software may be freely redistributed under the terms of the GNU
+# public license.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#
+# Detects partition types using signatures
+#
+
+use lib qw(/usr/lib/libDrakX);
+use common;
+use fs::type;
+use fs::proc_partitions;
+
+my $params = join '', @ARGV;
+my $verbose = $params =~ /-v/;
+
+$params =~ /-h/ and die "usage: lsparts [-v]\n";
+
+
+foreach (fs::proc_partitions::read_raw()) {
+ if (my $err = $_->{size} <= 1 ?
+ "Skipping <$_->{dev}> because too little blocks ($_->{size})" :
+ $_->{dev} !~ /\d$/ ?
+ "Skipping <$_->{dev}> because doesn't end with a number (e.g. seems to not be a partition)" :
+ $_->{dev} =~ /^loop\d+$/ ?
+ "Skipping <$_->{dev}>" :
+ '') {
+ print STDERR "$err\n" if $verbose;
+ } else {
+ $_->{device} = $_->{dev};
+ local $::isStandalone = 1; # silent run_program
+ if (my $type = fs::type::type_subpart_from_magic($_)) {
+ printf "$_->{dev}: %6s, fs %s (%s) [%s]\n", formatXiB($_->{size} * 1024), $type->{fs_type}, fs::type::part2type_name($type), $type->{device_LABEL};
+ }
+ }
+}