(Branch one test, no version change)

bug fix for df output wrapping in partitions
This commit is contained in:
inxi-svn 2009-02-15 05:04:35 +00:00
parent f1ec8f1a8b
commit 553e55f4ec

106
inxi
View file

@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
######################################################################## ########################################################################
#### Script Name: inxi #### Script Name: inxi
#### version: 0.10.2-b1-t3 #### version: 1.0.2-b1-t1
#### Date: 5 February 2009 #### Date: 11 February 2009
######################################################################## ########################################################################
#### SPECIAL THANKS #### SPECIAL THANKS
######################################################################## ########################################################################
@ -78,6 +78,7 @@
#### All variables MUST be initialized / declared explicitly #### All variables MUST be initialized / declared explicitly
####, globals UPPER CASE, at top of script, SOME_VARIABLE='' (words separated by _ ). ####, globals UPPER CASE, at top of script, SOME_VARIABLE='' (words separated by _ ).
#### Locals always with: local some_variable= (lower case, words separated by _ ) #### Locals always with: local some_variable= (lower case, words separated by _ )
#### Locals that will be inherited by child functions: Some_Variable (so you know they are inherited)
#### and at the top of the function. #### and at the top of the function.
#### ####
#### Booleans should start with b_ or B_ and state clearly what is being tested #### Booleans should start with b_ or B_ and state clearly what is being tested
@ -236,8 +237,8 @@ shopt -u nullglob
# Backup the current Internal Field Separator # Backup the current Internal Field Separator
ORIGINAL_IFS="$IFS" ORIGINAL_IFS="$IFS"
# These two determine separators in single line output, to force irc clients not to break off sections # These two determine separators in single line output, to force irc clients not to break off sections
FL1='-' SEP1='-'
FL2='' SEP2='~'
### Script names/paths ### Script names/paths
SCRIPT_NAME="inxi" SCRIPT_NAME="inxi"
@ -1267,7 +1268,7 @@ get_audio_data()
IFS=$'\n' IFS=$'\n'
# this first step handles the drivers for cases where the second step fails to find one # this first step handles the drivers for cases where the second step fails to find one
device_count=$( echo "$lspci_data" | egrep -ic '(multimedia audio controller|audio device)' ) device_count=$( echo "$Lspci_Data" | egrep -ic '(multimedia audio controller|audio device)' )
if [[ $device_count -eq 1 ]] && [[ $B_ASOUND_CARDS == 'true' ]];then if [[ $device_count -eq 1 ]] && [[ $B_ASOUND_CARDS == 'true' ]];then
alsa_driver=$( gawk -F ']: ' ' alsa_driver=$( gawk -F ']: ' '
BEGIN { BEGIN {
@ -1289,7 +1290,7 @@ get_audio_data()
alsa_driver=$( echo $alsa_driver ) alsa_driver=$( echo $alsa_driver )
# now we'll build the main audio data, card name, driver, and port. If no driver is found, # now we'll build the main audio data, card name, driver, and port. If no driver is found,
# and if the first method above is not null, and one card is found, it will use that instead. # and if the first method above is not null, and one card is found, it will use that instead.
A_AUDIO_DATA=( $( echo "$lspci_data" | gawk -F ': ' -v alsaDriver="$alsa_driver" ' A_AUDIO_DATA=( $( echo "$Lspci_Data" | gawk -F ': ' -v alsaDriver="$alsa_driver" '
BEGIN { BEGIN {
IGNORECASE=1 IGNORECASE=1
} }
@ -1769,7 +1770,7 @@ get_graphics_card_data()
local i='' local i=''
IFS=$'\n' IFS=$'\n'
A_GFX_CARD_DATA=( $( echo "$lspci_data" | gawk -F': ' ' A_GFX_CARD_DATA=( $( echo "$Lspci_Data" | gawk -F': ' '
BEGIN { BEGIN {
IGNORECASE=1 IGNORECASE=1
} }
@ -1791,7 +1792,7 @@ get_graphics_card_data()
fi fi
# GFXMEM is UNUSED at the moment, because it shows AGP aperture size, which is not necessarily equal to GFX memory.. # GFXMEM is UNUSED at the moment, because it shows AGP aperture size, which is not necessarily equal to GFX memory..
# GFXMEM="size=[$(echo "$lspci_data" | gawk '/VGA/{while (!/^$/) {getline;if (/size=[0-9][0-9]*M/) {size2=gensub(/.*\[size=([0-9]+)M\].*/,"\\1","g",$0);if (size<size2){size=size2}}}}END{print size2}')M]" # GFXMEM="size=[$(echo "$Lspci_Data" | gawk '/VGA/{while (!/^$/) {getline;if (/size=[0-9][0-9]*M/) {size2=gensub(/.*\[size=([0-9]+)M\].*/,"\\1","g",$0);if (size<size2){size=size2}}}}END{print size2}')M]"
} }
## create array of glx data ## create array of glx data
@ -1941,7 +1942,8 @@ get_hdd_data_basic()
local hdd_used='' local hdd_used=''
hdd_used=$( df | gawk ' hdd_used=$( df | gawk '
/^\/dev\/(mapper\/|[hs]d[a-z][0-9]+)/ { # also handles odd dm-1 type, from lvm
/^\/dev\/(mapper\/|[hs]d[a-z][0-9]+|dm[-]?[0-9]+)/ {
# this handles the case where the first item is too long # this handles the case where the first item is too long
# and makes df wrap output to next line, so here we advance # and makes df wrap output to next line, so here we advance
# it to the next line for that single case # it to the next line for that single case
@ -2182,7 +2184,7 @@ get_module_version_number()
get_networking_data() get_networking_data()
{ {
IFS=$'\n' IFS=$'\n'
A_NETWORK_DATA=( $( echo "$lspci_data" | gawk ' A_NETWORK_DATA=( $( echo "$Lspci_Data" | gawk '
BEGIN { BEGIN {
IGNORECASE=1 IGNORECASE=1
} }
@ -2324,20 +2326,33 @@ get_partition_data()
BEGIN { BEGIN {
IGNORECASE=1 IGNORECASE=1
} }
/\/$|\/boot$|\/var$|\/home$|\/tmp$|\/usr$/ && ! /aufs/ { # this handles yet another fredforfaen special case where a mounted drive
# has the search string in its name
$NF ~ /^\/$|^\/boot$|^\/var$|^\/home$|^\/tmp$|^\/usr$/ && ! /aufs/ {
print $NF "," $(NF - 4) "," $(NF - 3) "," $(NF - 1) ",main" print $NF "," $(NF - 4) "," $(NF - 3) "," $(NF - 1) ",main"
} }
# this is required because below we are subtracting from NF, so it has to be
# > 1, actually greater than 4, but that is so unlikely to occur because
# the real issue is long file system names that force the wrap of df output: //fileserver/main
( NF == 1 ) {
getline
}
# skip all these, including the first, header line. Use the --exclude-type # skip all these, including the first, header line. Use the --exclude-type
# to handle new filesystems types we do not want listed here # to handle new filesystems types we do not want listed here
! /\/$|\/boot$|\/var$|\/home$|\/tmp$|\/usr$|^filesystem/ { $NF !~ /^\/$|^\/boot$|^\/var$|^\/home$|^\/tmp$|^\/usr$|^filesystem/ {
# this is to avoid file systems with spaces in their names, that will make # this is to avoid file systems with spaces in their names, that will make
# the test show the wrong data in each of the fields, if no x%, then do not use # the test show the wrong data in each of the fields, if no x%, then do not use
# using 3 cases, first default, standard, 2nd, 3rd, handles one and two spaces in name
if ( $(NF - 1) ~ /[0-9]+\%/ ) { if ( $(NF - 1) ~ /[0-9]+\%/ ) {
# cleaning up user name here to avoid showing too much info on irc
# partitionName=gensub( /^\/home\/(.*)\/(.*)/, "/home/###/\\2", 1, $NF )
# print partitionName "," $(NF - 4) "," $(NF - 3) "," $(NF - 1) ",secondary"
print $NF "," $(NF - 4) "," $(NF - 3) "," $(NF - 1) ",secondary" print $NF "," $(NF - 4) "," $(NF - 3) "," $(NF - 1) ",secondary"
} }
# these two cases construct the space containing name
else if ( $(NF - 2) ~ /[0-9]+\%/ ) {
print $(NF - 1) " " $NF "," $(NF - 5) "," $(NF - 4) "," $(NF - 2) ",secondary"
}
else if ( $(NF - 3) ~ /[0-9]+\%/ ) {
print $(NF - 2) " " $(NF - 1) " " $NF "," $(NF - 6) "," $(NF - 5) "," $(NF - 3) ",secondary"
}
} }
' ) ' )
# now add the swap partition data, doesn't show percent used, someone can figure that in the future # now add the swap partition data, doesn't show percent used, someone can figure that in the future
@ -2442,47 +2457,35 @@ get_partition_data_advanced()
dev_uuid=${a_partition_working[7]} dev_uuid=${a_partition_working[7]}
# then if dev data/uuid is incomplete, try to get missing piece # then if dev data/uuid is incomplete, try to get missing piece
# it's more likely we'll get a uuid than a label. # it's more likely we'll get a uuid than a label. But this should get the
if [[ -n $dev_disk_uuid ]];then # dev item set no matter what, so then we can get the rest of any missing data
if [[ -n $dev_item && -z $dev_uuid ]];then # first we'll get the dev_item if it's missing
dev_uuid=$( echo "$dev_disk_uuid" | gawk ' if [[ -n $dev_disk_uuid ]] && [[ -z $dev_item && -n $dev_uuid ]];then
/'$dev_item'$/ {
print $(NF - 2)
}' )
elif [[ -z $dev_item && -n $dev_uuid ]];then
dev_item=$( echo "$dev_disk_uuid" | gawk ' dev_item=$( echo "$dev_disk_uuid" | gawk '
/'$dev_uuid'/ { /'$dev_uuid'/ {
item=gensub( /..\/..\/(.+)/, "\\1", 1, $NF ) item=gensub( /..\/..\/(.+)/, "\\1", 1, $NF )
print item print item
}' ) }' )
# last chance, if nothing found, check with uuid elif [[ -n $dev_disk_label ]] && [[ -z $dev_item && -n $dev_label ]];then
elif [[ -n $dev_disk_label ]];then
if [[ -z $dev_item && -n $dev_label ]];then
dev_item=$( echo "$dev_disk_label" | gawk ' dev_item=$( echo "$dev_disk_label" | gawk '
/'$dev_label'/ { /'$dev_label'/ {
item=gensub( /..\/..\/(.+)/, "\\1", 1, $NF ) item=gensub( /..\/..\/(.+)/, "\\1", 1, $NF )
print item print item
}' ) }' )
fi fi
fi if [[ -n $dev_disk_uuid ]] && [[ -n $dev_item && -z $dev_uuid ]];then
fi dev_uuid=$( echo "$dev_disk_uuid" | gawk '
# first if the dev data/label data is incomplete, try to get missing piece
if [[ -n $dev_disk_label ]];then
if [[ -n $dev_item && -z $dev_label ]];then
dev_label=$( echo "$dev_disk_label" | gawk '
/'$dev_item'$/ { /'$dev_item'$/ {
print $(NF - 2) print $(NF - 2)
}' ) }' )
elif [[ -z $dev_item && -n $dev_label ]];then fi
dev_item=$( echo "$dev_disk_label" | gawk ' if [[ -n $dev_disk_label ]] && [[ -n $dev_item && -z $dev_label ]];then
/'$dev_label'/ { dev_label=$( echo "$dev_disk_label" | gawk '
item=gensub( /..\/..\/(.+)/, "\\1", 1, $NF ) /'$dev_item'/ {
print item print $(NF - 2)
}' ) }' )
fi
fi
fi
# assemble everything we could get for dev/h/dx, label, and uuid # assemble everything we could get for dev/h/dx, label, and uuid
IFS="," IFS=","
A_PARTITION_DATA[i]=${a_partition_working[0]}","${a_partition_working[1]}","${a_partition_working[2]}","${a_partition_working[3]}","${a_partition_working[4]}","$dev_item","$dev_label","$dev_uuid A_PARTITION_DATA[i]=${a_partition_working[0]}","${a_partition_working[1]}","${a_partition_working[2]}","${a_partition_working[3]}","${a_partition_working[4]}","$dev_item","$dev_label","$dev_uuid
@ -2589,16 +2592,16 @@ process_cpu_flags()
#### MASTER PRINT FUNCTION - triggers all line item print functions #### MASTER PRINT FUNCTION - triggers all line item print functions
## main function to print out, master for all sub print functions. ## main function to print out, master for all sub print functions.
## note that it passes local variable values on to its children,
## and in some cases, their children, with lspci_data
print_it_out() print_it_out()
{ {
local lspci_data='' # only for verbose # note that print_it_out passes local variable values on to its children,
# and in some cases, their children, with Lspci_Data
local Lspci_Data='' # only for verbose
if [[ $B_SHOW_SHORT_OUTPUT == 'true' ]];then if [[ $B_SHOW_SHORT_OUTPUT == 'true' ]];then
print_short_data print_short_data
else else
lspci_data="$( get_lspci_data )" Lspci_Data="$( get_lspci_data )"
if [[ $VERBOSITY_LEVEL -ge 1 || $B_SHOW_SYSTEM == 'true' ]];then if [[ $VERBOSITY_LEVEL -ge 1 || $B_SHOW_SYSTEM == 'true' ]];then
print_system_data print_system_data
fi fi
@ -2701,12 +2704,12 @@ print_short_data()
#C1="${C1},1"; C2="${C2},1"; CN="${CN},1" #C1="${C1},1"; C2="${C2},1"; CN="${CN},1"
fi fi
fi fi
short_data="${C1}CPU$cpc_plural${CN}[${C2} ${cpu_data_string} ${cpu_model}$model_plural (${cpu_type}) ${C1}clocked at${C2} ${min_max_clock}${CN}] ${C1}Kernel${CN}[${C2} ${current_kernel}${CN}] ${C1}Up${CN}[${C2}${FL2}${FL1}${up_time}${FL1}${CN}] ${C1}Mem${CN}[${C2}${FL2}${FL1}${memory}${FL1}${CN}] ${C1}HDD${CN}[${C2}${FL2}${FL1}${hdd_capacity}($hdd_used)${FL1}${CN}] ${C1}Procs${CN}[${C2}${FL2}${FL1}${processes}${FL1}${CN}]" short_data="${C1}CPU$cpc_plural${CN}[${C2}${SEP1}${cpu_data_string} ${cpu_model}$model_plural (${cpu_type}) clocked at ${min_max_clock}${SEP1}${CN}] ${C1}Kernel${CN}[${C2}${SEP1}${current_kernel}${SEP1}${CN}] ${C1}Up${CN}[${C2}${SEP1}${up_time}${SEP1}${CN}] ${C1}Mem${CN}[${C2}${SEP1}${memory}${SEP1}${CN}] ${C1}HDD${CN}[${C2}${SEP1}${hdd_capacity}($hdd_used)${SEP1}${CN}] ${C1}Procs${CN}[${C2}${SEP1}${processes}${SEP1}${CN}]"
if [[ $SHOW_IRC -gt 0 ]];then if [[ $SHOW_IRC -gt 0 ]];then
short_data="${short_data} ${C1}Client${CN}[${C2}${IRC_CLIENT}${IRC_CLIENT_VERSION}${CN}]" short_data="${short_data} ${C1}Client${CN}[${C2}${SEP1}${IRC_CLIENT}${IRC_CLIENT_VERSION}${SEP1}${CN}]"
fi fi
short_data="${short_data} ${CN}:: ${C1}$SCRIPT_NAME${C2} $SCRIPT_VERSION_NUMBER${CN}" short_data="${short_data} ${C1}$SCRIPT_NAME${C2}${CN}[${C2}${SEP1}$SCRIPT_VERSION_NUMBER${SEP1}${CN}]"
if [[ $SCHEME -gt 0 ]];then if [[ $SCHEME -gt 0 ]];then
short_data="${short_data} $NORMAL" short_data="${short_data} $NORMAL"
fi fi
@ -3216,7 +3219,8 @@ print_partition_data()
IFS="," IFS=","
a_partition_working=(${A_PARTITION_DATA[i]}) a_partition_working=(${A_PARTITION_DATA[i]})
IFS="$ORIGINAL_IFS" IFS="$ORIGINAL_IFS"
full_label=''
full_uuid=''
if [[ $B_SHOW_PARTITIONS_FULL == 'true' ]] || [[ ${a_partition_working[4]} == 'swap' || ${a_partition_working[4]} == 'main' ]];then if [[ $B_SHOW_PARTITIONS_FULL == 'true' ]] || [[ ${a_partition_working[4]} == 'swap' || ${a_partition_working[4]} == 'main' ]];then
if [[ -n ${a_partition_working[2]} ]];then if [[ -n ${a_partition_working[2]} ]];then
partition_used=" ${C1}used:${C2} ${a_partition_working[2]} (${a_partition_working[3]})" partition_used=" ${C1}used:${C2} ${a_partition_working[2]} (${a_partition_working[3]})"
@ -3231,7 +3235,7 @@ print_partition_data()
# don't show user names in output # don't show user names in output
if [[ $B_SHOW_LABELS == 'true' || $B_SHOW_UUIDS == 'true' ]];then if [[ $B_SHOW_LABELS == 'true' || $B_SHOW_UUIDS == 'true' ]];then
if [[ -n ${a_partition_working[5]} ]];then if [[ -n ${a_partition_working[5]} ]];then
if [[ -z $( grep '^//' <<< ${a_partition_working[5]} ) ]];then if [[ -z $( grep -E '(^//|:/)' <<< ${a_partition_working[5]} ) ]];then
part_dev="/dev/${a_partition_working[5]}" part_dev="/dev/${a_partition_working[5]}"
dev_remote='dev' dev_remote='dev'
else else
@ -3242,7 +3246,7 @@ print_partition_data()
part_dev='N/A' part_dev='N/A'
fi fi
full_dev=" ${C1}$dev_remote:${C2} $part_dev" full_dev=" ${C1}$dev_remote:${C2} $part_dev"
if [[ $B_SHOW_LABELS == 'true' ]];then if [[ $B_SHOW_LABELS == 'true' && $dev_remote != 'remote' ]];then
if [[ -n ${a_partition_working[6]} ]];then if [[ -n ${a_partition_working[6]} ]];then
part_label="${a_partition_working[6]}" part_label="${a_partition_working[6]}"
else else
@ -3250,7 +3254,7 @@ print_partition_data()
fi fi
full_label=" ${C1}label:${C2} $part_label" full_label=" ${C1}label:${C2} $part_label"
fi fi
if [[ $B_SHOW_UUIDS == 'true' ]];then if [[ $B_SHOW_UUIDS == 'true' && $dev_remote != 'remote' ]];then
if [[ -n ${a_partition_working[7]} ]];then if [[ -n ${a_partition_working[7]} ]];then
part_uuid="${a_partition_working[7]}" part_uuid="${a_partition_working[7]}"
else else