diff --git a/inxi b/inxi index e89cf15..08d83a4 100755 --- a/inxi +++ b/inxi @@ -1,7 +1,7 @@ #!/bin/bash ######################################################################## #### Script Name: inxi -#### version: 1.3.3 +#### version: 1.3.4 #### Date: January 29 2010 ######################################################################## #### SPECIAL THANKS @@ -266,6 +266,16 @@ FILE_MOUNTS='/proc/mounts' FILE_PARTITIONS='/proc/partitions' FILE_SCSI='/proc/scsi/scsi' +## app tested for and present, to avoid repeat tests +B_FILE_TESTED='false' +B_HDDTEMP_TESTED='false' +B_MODINFO_TESTED='false' +B_SUDO_TESTED='false' +FILE_PATH='' +HDDTEMP_PATH='' +MODINFO_PATH='' +SUDO_PATH='' + ### Variable initializations: constants DCOPOBJ="default" DEBUG=0 # Set debug levels from 1-10 (8-10 trigger logging levels) @@ -2689,18 +2699,25 @@ get_hdd_temp_data() { eval $LOGFS local hdd_temp='' sudo_command='' - local hddtemp_path=$( type -p hddtemp ) - local sudo_path=$( type -p sudo ) + + if [[ $B_HDDTEMP_TESTED != 'true' ]];then + B_HDDTEMP_TESTED='true' + HDDTEMP_PATH=$( type -p hddtemp ) + fi + if [[ $B_SUDO_TESTED != 'true' ]];then + B_SUDO_TESTED='true' + SUDO_PATH=$( type -p sudo ) + fi - if [[ -n $hddtemp_path && -n $1 ]];then + if [[ -n $HDDTEMP_PATH && -n $1 ]];then # only use sudo if not root, -n option requires sudo -V 1.7 or greater. sudo will just error out # which is the safest course here for now, otherwise that interactive sudo password thing is too annoying # important: -n makes it non interactive, no prompt for password - if [[ $B_ROOT != 'true' && -n $sudo_path ]];then + if [[ $B_ROOT != 'true' && -n $SUDO_PATH ]];then sudo_command='sudo -n ' fi # this will fail if regular user and no sudo present, but that's fine, it will just return null - hdd_temp=$( eval $sudo_command $hddtemp_path -nq -u C $1 ) + hdd_temp=$( eval $sudo_command $HDDTEMP_PATH -nq -u C $1 ) if [[ -n $hdd_temp && -n $( grep -E '^([0-9]+)$' <<< $hdd_temp ) ]];then echo $hdd_temp fi @@ -2750,10 +2767,14 @@ get_module_version_number() { eval $LOGFS local module_version='' - local modinfo_path=$( type -p modinfo ) + + if [[ $B_MODINFO_TESTED != 'true' ]];then + B_MODINFO_TESTED='true' + MODINFO_PATH=$( type -p modinfo ) + fi - if [[ -n $modinfo_path ]];then - module_version=$( $modinfo_path $1 2>/dev/null | gawk ' + if [[ -n $MODINFO_PATH ]];then + module_version=$( $MODINFO_PATH $1 2>/dev/null | gawk ' BEGIN { IGNORECASE=1 } @@ -3636,19 +3657,27 @@ get_unmounted_partition_filesystem() { eval $LOGFS local partition_filesystem='' sudo_command='' - local file_path=$( type -p file ) - local sudo_path=$( type -p sudo ) - if [[ -n $file_path && -n $1 ]];then + if [[ $B_FILE_TESTED != 'true' ]];then + B_FILE_TESTED='true' + FILE_PATH=$( type -p file ) + fi + + if [[ $B_SUDO_TESTED != 'true' ]];then + B_SUDO_TESTED='true' + SUDO_PATH=$( type -p sudo ) + fi + + if [[ -n $FILE_PATH && -n $1 ]];then # only use sudo if not root, -n option requires sudo -V 1.7 or greater. sudo will just error out # which is the safest course here for now, otherwise that interactive sudo password thing is too annoying # important: -n makes it non interactive, no prompt for password - if [[ $B_ROOT != 'true' && -n $sudo_path ]];then + if [[ $B_ROOT != 'true' && -n $SUDO_PATH ]];then sudo_command='sudo -n ' fi # this will fail if regular user and no sudo present, but that's fine, it will just return null # note the hack that simply slices out the first line if > 1 items found in string - partition_filesystem=$( eval $sudo_command $file_path -s $1 | grep -Eio '(ext2|ext3|ext4|ext5|ext[[:space:]]|ntfs|fat32|fat16|fat[[:space:]]\(.*\)|vfat|fatx|tfat|swap|btrfs|ffs[[:space:]]|hfs\+|hfs[[:space:]]plus|hfs[[:space:]]extended[[:space:]]version[[:space:]][1-9]|hfsj|hfs[[:space:]]|jfs[[:space:]]|nss[[:space:]]|reiserfs|reiser4|ufs2|ufs[[:space:]]|xfs[[:space:]]|zfs[[:space:]])' | grep -Em 1 '.*' ) + partition_filesystem=$( eval $sudo_command $FILE_PATH -s $1 | grep -Eio '(ext2|ext3|ext4|ext5|ext[[:space:]]|ntfs|fat32|fat16|fat[[:space:]]\(.*\)|vfat|fatx|tfat|swap|btrfs|ffs[[:space:]]|hfs\+|hfs[[:space:]]plus|hfs[[:space:]]extended[[:space:]]version[[:space:]][1-9]|hfsj|hfs[[:space:]]|jfs[[:space:]]|nss[[:space:]]|reiserfs|reiser4|ufs2|ufs[[:space:]]|xfs[[:space:]]|zfs[[:space:]])' | grep -Em 1 '.*' ) if [[ -n $partition_filesystem ]];then echo $partition_filesystem fi