Trying the locsmif method, querying /proc/scsi/scsi directly instead, a failure case was discovered there.

This commit is contained in:
inxi-svn 2008-11-08 23:21:53 +00:00
parent 0a6347bed9
commit b27b6507a1

48
inxi
View file

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
######################################################################## ########################################################################
#### Script Name: inxi #### Script Name: inxi
#### version: 0.4.15 #### version: 0.4.16
#### Date: November 8 2008 #### Date: November 8 2008
######################################################################## ########################################################################
#### inxi is a fork of infobash, the original bash sys info script by locsmif #### inxi is a fork of infobash, the original bash sys info script by locsmif
@ -1242,15 +1242,43 @@ get_hard_drive_data_advanced()
IFS=$'\n' IFS=$'\n'
## prints out hdd device if field one is ATA type (sata compatibility mode) or prints out scsi device ## prints out hdd device if field one is ATA type (sata compatibility mode) or prints out scsi device
# note: pmap handles usb mounted devices, which have a null first field # note: pmap handles usb mounted devices, which have a null first field
a_temp_scsi=( $( gawk -F'\t' ' if [[ $B_TESTING_FLAG == 'true' ]];then
BEGIN { IGNORECASE=1 } a_temp_scsi=( $( gawk -F'\t' '
# if the item starts with empty, void field, assume it is flash drive BEGIN { IGNORECASE=1 }
/^ata|^scsi|^ |^corsair|^wdc|^kingston/ { # if the item starts with empty, void field, assume it is flash drive
gsub(/,/, " ", $(NF -1) ) /^ata|^scsi|^ |^corsair|^wdc|^kingston/ {
gsub(/^ +| +$/, "", $(NF -1) ) gsub(/,/, " ", $(NF -1) )
print $(NF -1) gsub(/^ +| +$/, "", $(NF -1) )
} print $(NF -1)
' /proc/scsi/sg/device_strs ) ) }
' /proc/scsi/sg/device_strs ) )
else
a_temp_scsi=( $( gawk '
BEGIN { IGNORECASE=1 }
/host/ {
getline a[$0]
getline b[$0]
}
END {
for (i in a) {
if (b[i] ~ / *type: *direct-access.*/) {
#c=gensub(/^ *vendor: (.+) +model: (.+) +rev: (.+)$/,"\\1 \\2 \\3","g",a[i])
#c=gensub( /^ *vendor: (.+) +model: (.+) +rev:.*$/,"\\1 \\2","g",a[i] )
# the vendor: string is useless, and is a bug, ATA is not a vendor for example
c=gensub( /^ *vendor: (.+) +model: (.+) +rev:.*$/,"\\2","g",a[i] )
gsub(/,/, " ", c)
gsub(/^ +| +$/, "", c)
gsub(/ [ \t]+/, " ", c)
#print a[i]
# we actually want this data, so leaving this off for now
# if (c ~ /\<flash\>|\<pendrive\>|memory stick|memory card/) {
# continue
# }
print c
}
}
}' /proc/scsi/scsi) )
fi
IFS="$ORIGINAL_IFS" IFS="$ORIGINAL_IFS"
fi fi