diff --git a/inxi b/inxi index 71abe7f..7a1c625 100755 --- a/inxi +++ b/inxi @@ -31,7 +31,7 @@ use POSIX qw(uname strftime ttyname); ## INXI INFO ## my $self_name='inxi'; -my $self_version='3.0.01'; +my $self_version='3.0.02'; my $self_date='2018-04-12'; my $self_patch='00'; ## END INXI INFO ## @@ -2234,12 +2234,12 @@ sub check_items { } elsif ($type eq 'recommended system programs'){ if ($bsd_type){ - @data = qw(camcontrol dig dmidecode file glabel gpart ifconfig ipmi-sensors + @data = qw(camcontrol dig dmidecode fdisk file glabel gpart ifconfig ipmi-sensors ipmitool lsusb sudo smartctl sysctl tree uptime usbdevs); $info_os = 'info-bsd'; } else { - @data = qw(dig dmidecode file hddtemp ifconfig ip ipmitool ipmi-sensors + @data = qw(dig dmidecode fdisk file hddtemp ifconfig ip ipmitool ipmi-sensors lsblk lsusb modinfo runlevel sensors strings sudo tree uptime); } $b_program = 1; @@ -2459,6 +2459,13 @@ sub item_data { 'pacman' => 'dmidecode', 'rpm' => 'dmidecode', }), + 'fdisk' => ({ + 'info' => '-D partition scheme (fallback)', + 'info-bsd' => '-D partition scheme', + 'apt' => 'fdisk', + 'pacman' => 'util-linux', + 'rpm' => 'util-linux', + }), 'fetch' => ({ 'info' => '', 'info-bsd' => '-i (if no dig); -w,-W; -U', @@ -7215,7 +7222,7 @@ sub proc_data_advanced { my ($i) = (0); my (@data,@rows,@scsi,@temp,@working); my ($pt_cmd) = ('unset'); - my ($block_type,$file,$firmware,$model,$path,$partition_table, + my ($block_type,$file,$firmware,$model,$path,$partition_scheme, $serial,$vendor,$working_path); @by_id = main::globber('/dev/disk/by-id/*'); @by_path = main::globber('/dev/disk/by-path/*'); @@ -7238,10 +7245,10 @@ sub proc_data_advanced { #print 'drives:', Data::Dumper::Dumper \@drives; for ($i = 1; $i < scalar @drives; $i++){ #next if $drives[$i]{'id'} =~ /^hd[a-z]/; - ($block_type,$firmware,$model,$partition_table, + ($block_type,$firmware,$model,$partition_scheme, $serial,$vendor,$working_path) = ('','','','','','',''); if ($extra > 2){ - @data = partition_table($pt_cmd,$drives[$i]{'id'}); + @data = partition_scheme($pt_cmd,$drives[$i]{'id'}); $pt_cmd = $data[0]; $drives[$i]{'partition-table'} = uc($data[1]) if $data[1]; } @@ -7475,7 +7482,7 @@ sub peripheral_data { eval $end if $b_log; return $type; } -sub partition_table { +sub partition_scheme { eval $start if $b_log; my ($set_cmd,$id) = @_; my ($cmd,$pt,$program,@data,@return); @@ -7494,15 +7501,35 @@ sub partition_table { if (!$return[0] && $b_root && -e "/lib/udev/udisks-part-id") { $return[0] = "/lib/udev/udisks-part-id /dev/"; } - elsif (!$return[0]) { + elsif (!$return[0] && $b_root && ($program = main::check_program('fdisk'))) { + $return[0] = "$program -l /dev/"; + } + if (!$return[0]) { $return[0] = 'na' } } if ($return[0] ne 'na'){ - $cmd = "$return[0]$id 2>/dev/null"; + $cmd = "$return[0]$id 2>&1"; main::log_data('cmd',$cmd) if $b_log; @data = main::grabber($cmd); - $return[1] = main::awk(\@data,'^(UDISKS_PARTITION_TABLE_SCHEME|ID_PART_TABLE_TYPE)',2,'='); + # for pre ~ 2.30 fdisk did not show gpt, but did show gpt scheme error, so + # if no gpt match, it's dos = mbr + if ($cmd =~ /fdisk/){ + foreach (@data){ + if (/^WARNING:\s+GPT/){ + $return[1] = 'gpt'; + last; + } + elsif (/^Disklabel\stype:\s*(.+)/i){ + $return[1] = $1; + last; + } + } + $return[1] = 'dos' if !$return[1]; + } + else { + $return[1] = main::awk(\@data,'^(UDISKS_PARTITION_TABLE_SCHEME|ID_PART_TABLE_TYPE)',2,'='); + } $return[1] = 'mbr' if $return[1] eq 'dos'; } eval $end if $b_log; diff --git a/inxi.changelog b/inxi.changelog index 52efa95..2c944b6 100644 --- a/inxi.changelog +++ b/inxi.changelog @@ -1,3 +1,26 @@ +===================================================================================== +Version: 3.0.02 +Patch Version: 00 +Script Date: 2018-04-12 +----------------------------------- +Changes: +----------------------------------- +new version, new man. + +Rolls up a few changes from the latest features: + +1. For -Dxxx, if root, will use fdisk to try to find partition table scheme (mbr/gpt) +2. For Display: server: will try to use loginctl if out of X and using +--display flag to force display data and not root. + +This completes more or less the very last minute features added pre 3.0.0 version. + +I wanted to get these in because the features were not super useful since they only +worked on a few systems, particulary the scheme: + +----------------------------------- +-- Harald Hope - Thu, 12 Apr 2018 15:26:00 -0700 + ===================================================================================== Version: 3.0.01 Patch Version: 00