From 53bbf03ceab26baef38dbc50a15e88b7a557edce Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Fri, 29 Jan 2010 23:31:20 +0000 Subject: [PATCH] (Change Version) Optimized to not do repeated tests of tools for functions that are used more than one time. Added boolean tested flags, and global app path variables to handle this. this can knock off up to 10 or more type -p app exists type tests for one script execution. --- inxi | 57 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 14 deletions(-) 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