From 91ffaca5e7635e1410cc7505862265fbdae7993c Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Wed, 3 Sep 2014 19:10:11 +0000 Subject: [PATCH] New version, new tarball. Contains a major bug fix for a regression introduced in 2.2.2 -m/-M would always show requires root for dmidecode no matter what. Also improved dmidecode error messages/handling. Also, a fix for no display card data, now shows as expected no card data Most other fixes are for bsd, mostly openbsd. 1. Added a class for network devices in freebsd pciconf 2. Added -r support for openbsd 3. Fixed some cpu issues for openbsd 4. Fixed an issue in openbsd/freebsd where client version data failed to get cleaned 5. Changed inxi short form output for bsds to show OS data instead of kernel data. 6. BSDs, maybe all, different syntax in xorg.0.log made unloaded gfx drivers not show, that is fixed now. -p fixed file system type in -p/-P for openbsd, now shows. -I / inxi short - fixed used memory, did not show in openbsd, now does. -f fixed cpu flags in openbsd, now works -C corrected corrupted cpu data outputs, in openbsd at least, maybe also freebsd -C added an openbsd hack to sometimes show cpu L2 cache -m/-M fixed/improved dmidecode error handling for all systems Modified handling of dmesg.boot data, synched so gawk can parse better. --- inxi | 232 ++++++++++++++++++++++++++++++++++--------------- inxi.changelog | 46 ++++++++++ 2 files changed, 209 insertions(+), 69 deletions(-) diff --git a/inxi b/inxi index 0ce37f8..4c2519c 100755 --- a/inxi +++ b/inxi @@ -1,8 +1,8 @@ #!/usr/bin/env bash ######################################################################## #### Script Name: inxi -#### Version: 2.2.2 -#### Date: 2014-09-01 +#### Version: 2.2.3 +#### Date: 2014-09-03 #### Patch Number: 00 ######################################################################## #### SPECIAL THANKS @@ -481,6 +481,7 @@ DEV_DISK_LABEL='' DEV_DISK_MAPPER='' DEV_DISK_UUID='' DMIDECODE_DATA='' +DOWNLOADER='wget' IRC_CLIENT='' IRC_CLIENT_VERSION='' PS_THROTTLED='' @@ -823,6 +824,10 @@ initialize_data() initialize_paths + if [[ -z $( type -p wget ) && -n $( type -p curl ) ]];then + DOWNLOADER='curl' + fi + if [[ -n $BSD_TYPE ]];then if [[ -e $FILE_DMESG_BOOT ]];then B_DMESG_BOOT_FILE='true' @@ -1329,7 +1334,7 @@ error_handler() ;; 7) error_message="One of the options you entered in your script parameters: $2\nis not supported.The option may require extra arguments to work.\nFor supported options (and their arguments), check the help menu: $SCRIPT_NAME -h" ;; - 8) error_message="the self-updater failed, wget exited with error: $2.\nYou probably need to be root.\nHint, to make for easy updates without being root, do: chown $SCRIPT_PATH/$SCRIPT_NAME" + 8) error_message="the self-updater failed, $DOWNLOADER exited with error: $2.\nYou probably need to be root.\nHint, to make for easy updates without being root, do: chown $SCRIPT_PATH/$SCRIPT_NAME" ;; 9) error_message="unsupported debugging level: $2" ;; @@ -1494,7 +1499,7 @@ create_rotate_logfiles() script_self_updater() { eval $LOGFS - local wget_error=0 file_contents='' wget_man_error=0 + local downloader_error=0 file_contents='' downloader_man_error=0 local man_file_path="$MAN_FILE_LOCATION/inxi.1.gz" if [[ $B_IRC == 'true' ]];then @@ -1506,10 +1511,13 @@ script_self_updater() print_screen_output "Currently running $SCRIPT_NAME version number: $SCRIPT_VERSION_NUMBER" print_screen_output "Current version patch number: $SCRIPT_PATCH_NUMBER" print_screen_output "Updating $SCRIPT_NAME in $SCRIPT_PATH using $2 as download source..." - - file_contents="$( wget -q -O - $1$SCRIPT_NAME )" || wget_error=$? + if [[ $DOWNLOADER != 'curl' ]];then + file_contents="$( wget -q -O - $1$SCRIPT_NAME )" || downloader_error=$? + else + file_contents="$( curl -s $1$SCRIPT_NAME )" || downloader_error=$? + fi # then do the actual download - if [[ $wget_error -eq 0 ]];then + if [[ $downloader_error -eq 0 ]];then # make sure the whole file got downloaded and is in the variable if [[ -n $( grep '###\*\*EOF\*\*###' <<< "$file_contents" ) ]];then echo "$file_contents" > $SCRIPT_PATH/$SCRIPT_NAME || error_handler 14 "$?" @@ -1533,14 +1541,22 @@ script_self_updater() exec $( type -p mandb ) -q fi fi - wget -q --spider $MAN_FILE_DOWNLOAD || wget_man_error=$? - if [[ $wget_man_error -eq 0 ]];then - print_screen_output "Man file download URL verified: $MAN_FILE_DOWNLOAD" + if [[ $DOWNLOADER != 'curl' ]];then + wget -q --spider $MAN_FILE_DOWNLOAD || downloader_man_error=$? + fi + if [[ $downloader_man_error -eq 0 ]];then + if [[ $DOWNLOADER != 'curl' ]];then + print_screen_output "Man file download URL verified: $MAN_FILE_DOWNLOAD" + fi print_screen_output "Downloading Man page file now." - wget -q -O $man_file_path $MAN_FILE_DOWNLOAD || wget_man_error=$? - if [[ $wget_man_error -gt 0 ]];then + if [[ $DOWNLOADER != 'curl' ]];then + wget -q -O $man_file_path $MAN_FILE_DOWNLOAD || downloader_man_error=$? + else + curl -s -o $man_file_path $MAN_FILE_DOWNLOAD || downloader_man_error=$? + fi + if [[ $downloader_man_error -gt 0 ]];then print_screen_output "Oh no! Something went wrong downloading the Man gz file at: $MAN_FILE_DOWNLOAD" - print_screen_output "Check the error messages for what happened. Error: $wget_man_error" + print_screen_output "Check the error messages for what happened. Error: $downloader_man_error" else print_screen_output "Download/install of man page successful. Check to make sure it works: man inxi" fi @@ -1559,7 +1575,7 @@ script_self_updater() # now run the error handlers on any wget failure else if [[ $2 == 'svn server' ]];then - error_handler 8 "$wget_error" + error_handler 8 "$downloader_error" elif [[ $2 == 'alt server' ]];then error_handler 10 "$1" else @@ -1703,7 +1719,11 @@ debug_data_collector() mv -f xiin $xiin_file fi # -Nc is creating really weird download anomolies, so using -O instead - xiin_download="$( wget -q -O - http://inxi.googlecode.com/svn/branches/xiin/$xiin_file )" + if [[ $DOWNLOADER != 'curl' ]];then + xiin_download="$( wget -q -O - http://inxi.googlecode.com/svn/branches/xiin/$xiin_file )" + else + xiin_download="$( curl -s http://inxi.googlecode.com/svn/branches/xiin/$xiin_file )" + fi # if nothing got downloaded kick out error, otherwise we'll use an older version if [[ $? -gt 0 && ! -f $xiin_file ]];then echo -e "ERROR: Failed to download required file: $xiin_file\nMaybe the remote site is down or your networking is broken?" @@ -2211,13 +2231,12 @@ remove_erroneous_chars() get_parameters() { eval $LOGFS - local opt='' wget_test='' debug_data_type='' weather_flag='wW:' + local opt='' downloader_test='' debug_data_type='' weather_flag='wW:' local use_short='true' # this is needed to trigger short output, every v/d/F/line trigger sets this false # if distro maintainers don't want the weather feature disable it if [[ $B_ALLOW_WEATHER == 'false' ]];then weather_flag='' - fi if [[ $1 == '--version' ]];then print_version_info @@ -3032,6 +3051,8 @@ get_start_client() if [[ -n $App_Working_Name ]];then Irc_Client_Path=$App_Working_Name + irc_client_path_lower=$( tr '[A-Z]' '[a-z]' <<< $Irc_Client_Path ) + App_Working_Name=${irc_client_path_lower##*/} B_Non_Native_App='false' get_irc_client_version if [[ -z $IRC_CLIENT ]];then @@ -3207,6 +3228,7 @@ get_irc_client_version() }' )" IRC_CLIENT="Pidgin" ;; + # possible failure of wildcard so make it explicit quassel*) # sample: quassel -v # Qt: 4.5.0 @@ -3780,7 +3802,6 @@ get_cpu_data() cpu[nr, "model"] = $NF } } - /^model name|^cpu\t+:/ { gsub(/'"$BAN_LIST_NORMAL"'/, "", $NF ) gsub(/'"$BAN_LIST_CPU"'/, "", $NF ) @@ -3792,7 +3813,6 @@ get_cpu_data() bArm = "true" } } - /^cpu MHz|^clock\t+:/ { if (!min) { min = $NF @@ -3802,7 +3822,6 @@ get_cpu_data() min = $NF } } - if ($NF > max) { max = $NF } @@ -3810,11 +3829,9 @@ get_cpu_data() gsub(/.00[0]+$/,".00",$NF) ## clears out excessive zeros cpu[nr, "speed"] = $NF } - /^cache size/ { cpu[nr, "cache"] = $NF } - /^flags|^features/ { cpu[nr, "flags"] = $NF # not all ARM cpus show ARM in model name @@ -3822,16 +3839,13 @@ get_cpu_data() bArm = "true" } } - /^bogomips/ { cpu[nr, "bogomips"] = $NF } - /vendor_id/ { gsub(/genuine|authentic/,"",$NF) cpu[nr, "vendor"] = tolower( $NF ) } - END { #if (!nr) { print ",,,"; exit } # <- should this be necessary or should bash handle that for ( i = 0; i <= nr; i++ ) { @@ -3914,13 +3928,19 @@ get_cpu_data_bsd() cpuVendor="" bSwitchFs="false" } - /^hw.model/ && ( bsdVersion != "darwin" ) { + /^hw.model/ && ( bsdVersion != "darwin" ) { gsub(/'"$BAN_LIST_NORMAL"'/, "", $NF ) gsub(/'"$BAN_LIST_CPU"'/, "", $NF ) - sub(//,"",$NF) + gsub(/,/," ",$NF) sub(/[a-z]+-core/, "", $NF ) gsub(/^ +| +$|\"/, "", $NF) gsub(/ [ \t]+/, " ", $NF) + if ( $NF ~ /[0-9]+[[:space:]]*[KM]B[[:space:]]+L2 cache/) { + cpuCache=gensub(/.*[^0-9]([0-9]+[[:space:]]*[KM]B)[[:space:]]+L2 cach.*/,"\\1",1,$NV) + } + if ( $NF ~ /\)$/ ){ + sub(/[[:space:]]*\(.*\)$/,"",$NF) + } cpuModel=$NF if ( cpuClock != "" ) { exit @@ -3935,6 +3955,9 @@ get_cpu_data_bsd() /^hw.cpufrequency/ { cpuClock = $NF / 1000000 } + /^hw.cpuspeed/ { + cpuClock=$NF + } /^hw.l2cachesize/ { cpuCache=$NF/1024 cpuCache=cpuCache " kB" @@ -3945,7 +3968,7 @@ get_cpu_data_bsd() /^machdep.cpu.brand_string/ { gsub(/'"$BAN_LIST_NORMAL"'/, "", $NF ) gsub(/'"$BAN_LIST_CPU"'/, "", $NF ) - sub(//,"",$NF) + gsub(/,/," ",$NF) sub(/[a-z]+-core/, "", $NF ) gsub(/^ +| +$|\"/, "", $NF) gsub(/ [ \t]+/, " ", $NF) @@ -3968,18 +3991,16 @@ get_cpu_flags_bsd() local cpu_flags='' local gawk_fs=':' - if [[ $BSD_VERSION == 'openbsd' ]];then - gawk_fs='=' - fi + if [[ -n $Dmesg_Boot_Data ]];then - cpu_flags=$( gawk -F "=" ' + cpu_flags=$( gawk -v bsdVersion=$BSD_VERSION -F ":" ' BEGIN { IGNORECASE=1 cpuFlags="" } - /^CPU:/ { - while ( getline && !/memory/ ) { - if ( $1 ~ /Features/ ) { + /^(CPU:|cpu0:)/ { + while ( getline && !/memory|real mem/ ) { + if ( $1 ~ /Features/ || ( bsdVersion == "openbsd" && $0 ~ /^cpu0.*,[a-z][a-z][a-z],[a-z][a-z][a-z],/ ) ) { # clean up odd stuff like gsub(/<[a-z0-9]+>/,"", $2) # all the flags are contained within < ... > on freebsd at least @@ -3993,6 +4014,9 @@ get_cpu_flags_bsd() exit }' <<< "$Dmesg_Boot_Data" ) elif [[ -n $Sysctl_a_Data ]];then + if [[ $BSD_VERSION == 'openbsd' ]];then + gawk_fs='=' + fi cpu_flags=$( gawk -F "$gawk_fs" ' BEGIN { cpuFlags="" @@ -4936,12 +4960,12 @@ get_dmidecode_data() fi # these tests first, because bsd error messages like this (note how many : are in the string) # inxi: line 4928: /usr/local/sbin/dmidecode: Permission denied - if [[ ${#DMIDECODE_DATA} -lt 100 ]];then - if [[ -z ${DMIDECODE_DATA/*Permission denied*/} ]];then - # if [[ -n $( grep -i 'Permission denied' <<< "$DMIDECODE_DATA" ) ]];then + if [[ ${#dmiData} -lt 100 ]];then + if [[ -z ${dmiData/*Permission denied*/} ]];then + # if [[ -n $( grep -i 'Permission denied' <<< "$dmiData" ) ]];then DMIDECODE_DATA='dmidecode-error-requires-root' # this handles very old systems, like Lenny 2.6.26, with dmidecode, but no data - elif [[ -n $( grep -i 'no smbios ' <<< "$DMIDECODE_DATA" ) ]];then + elif [[ -n $( grep -i 'no smbios ' <<< "$dmiData" ) ]];then DMIDECODE_DATA='dmidecode-error-no-smbios-dmi-data' else DMIDECODE_DATA='dmidecode-error-unknown-error' @@ -5036,7 +5060,8 @@ get_dmesg_boot_data() if [[ $B_DMESG_BOOT_FILE == 'true' ]];then # replace all indented items with ~ so we can id them easily while processing # note that if user, may get error of read permissions - dmsg_boot_data="$( cat $FILE_DMESG_BOOT 2>/dev/null | sed $SED_RX 's/"//g' )" + # for some weird reason, real mem and avail mem are use a '=' separator, who knows why, the others are ':' + dmsg_boot_data="$( cat $FILE_DMESG_BOOT 2>/dev/null | sed -e 's/"//g' -e 's/[[:space:]]*=[[:space:]]*/:/g' -e 's/:[[:space:]]*/:/g' )" fi echo "$dmsg_boot_data" # log_function_data "$dmsg_boot_data" @@ -5254,8 +5279,10 @@ get_graphics_driver() # failed/unloaded, which have not always actually been truly loaded aDrivers[driver]="loaded" } - /Unloading[[:space:]].*('"$driver_list"')(|_drv.so)$/ { - driver=gensub(/(.*)Unloading[[:space:]].*('"$driver_list"')(|_drv.so)$/, "\\2", 1, $0 ) + # openbsd uses UnloadModule: + /(Unloading[[:space:]]|UnloadModule).*('"$driver_list"')(\"||_drv.so)$/ { + gsub(/\"/,"",$0) + driver=gensub(/(.*)(Unloading[[:space:]]|UnloadModule).*('"$driver_list"')(\"||_drv.so)$/, "\\3", 1, $0 ) # we need to make sure that the driver has already been truly loaded, not just discussed if ( driver in aDrivers ) { aDrivers[driver]="unloaded" @@ -6290,7 +6317,7 @@ get_machine_data() get_memory_data() { eval $LOGFS - local memory='' memory_full='' + local memory='' memory_full='' used_memory='' if [[ $B_MEMINFO_FILE == 'true' ]];then memory=$( gawk ' /^MemTotal:/ { @@ -6310,7 +6337,24 @@ get_memory_data() if [[ $BSD_VERSION == 'openbsd' ]];then gawk_fs='=' fi - memory=$( grep -i 'mem' <<< "$Sysctl_a_Data" | gawk -F "$gawk_fs" ' + # use this for all bsds, maybe we can get some useful data on other ones + if [[ -n $( type -p vmstat) ]];then + # avail mem:2037186560 (1942MB) + used_memory=$( vmstat 2>/dev/null | tail -n 1 | gawk ' + # procs memory page disks traps cpu + # r b w avm fre flt re pi po fr sr wd0 wd1 int sys cs us sy id + # 0 0 0 55256 1484092 171 0 0 0 0 0 2 0 12 460 39 3 1 96 + BEGIN { + IGNORECASE=1 + } + { + sub(/K,/,"",$4) + + print $4 " " + exit + }' ) + fi + memory=$( grep -i 'mem' <<< "$Sysctl_a_Data" | gawk -v usedMemory="$used_memory" -F "$gawk_fs" ' BEGIN { realMemory="" freeMemory="" @@ -6335,7 +6379,13 @@ get_memory_data() END { # hack: temp fix for openbsd/darwin: in case no free mem was detected but we have physmem if ( freeMemory == "" && realMemory != "" ) { - printf("NA/%.1fMB\n", realMemory/1024) + # use openbsd avail mem data if available + if (usedMemory != "" ) { + printf("%.1f/%.1fMB\n", usedMemory/1024, realMemory/1024) + } + else { + printf("NA/%.1fMB\n", realMemory/1024) + } } else if ( freeMemory != "" && realMemory != "" ) { used = realMemory - freeMemory @@ -6707,7 +6757,7 @@ get_networking_usb_data() get_networking_wan_ip_data() { eval $LOGFS - local ip='' + local ip='' ip_data='' # get ip using wget redirect to stdout. This is a clean, text only IP output url, # single line only, ending in the ip address. May have to modify this in the future @@ -6715,11 +6765,16 @@ get_networking_wan_ip_data() # awk has bad regex handling so checking it with grep -E instead # ip=$( echo 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | gawk --re-interval ' # ip=$( wget -q -O - $WAN_IP_URL | gawk --re-interval ' - ip=$( wget -t 4 -T $WGET_TIMEOUT -q -O - $WAN_IP_URL | gawk --re-interval ' + if [[ $DOWNLOADER != 'curl' ]];then + ip_data="$(wget -t 4 -T $WGET_TIMEOUT -q -O - $WAN_IP_URL )" + else + ip_data="$( curl -y $WGET_TIMEOUT -s $WAN_IP_URL )" + fi + ip=$( gawk --re-interval ' { #gsub("\n","",$2") print $NF - }' ) + }' <<< "$ip_data" ) # validate the data if [[ -z $ip ]];then ip='None Detected!' @@ -7233,11 +7288,23 @@ get_partition_data() # older bsds have df minus -T so can't get fs type easily, try using mount instead if [[ $BSD_TYPE == 'bsd' ]] && [[ -z $fs_type && -n $dev_item ]];then dev_bsd_item=$( sed -e 's/non-dev-//' -e 's|/|\\/|g' <<< "$dev_item" ) - fs_type=$( gawk -F '(' ' + fs_type=$( gawk -v bsdVersion=$BSD_VERSION -F '(' ' + BEGIN { + IGNORECASE=1 + fileSystem="" + } /'$dev_bsd_item'/ { - # slice out everything after / plus the first comma - sub( /,.*/, "", $2 ) - print $2 + if ( bsdVersion != "openbsd" ) { + # slice out everything after / plus the first comma + sub( /,.*/, "", $2 ) + fileSystem=$2 + } + else { + # for openbsd: /dev/wd0f on /usr type ffs (local, nodev) + gsub( /^.*type[[:space:]]+|[[:space:]]*$/, "", $1 ) + fileSystem=$1 + } + print fileSystem exit }' <<< "$mount_data" ) fi @@ -7628,7 +7695,7 @@ EOF" sub(/:$/, "", pciId) itemData=$4 chipId=gensub(/.*chip=([0-9a-f][0-9a-f][0-9a-f][0-9a-f])([0-9a-f][0-9a-f][0-9a-f][0-9a-f]).*/, "\\2:\\1", itemData ) - if ( $2 == "class=020000" ) { + if ( $2 ~ /class=020000|class=0x068000/ ) { class="network" } else if ( $2 == "class=030000" ) { @@ -8681,7 +8748,7 @@ get_repo_data() local repo_name='' local apt_file='/etc/apt/sources.list' yum_repo_dir='/etc/yum.repos.d/' yum_conf='/etc/yum.conf' local pacman_conf='/etc/pacman.conf' pacman_repo_dir='/etc/pacman.d/' pisi_dir='/etc/pisi/' - local zypp_repo_dir='/etc/zypp/repos.d/' freebsd_conf='/etc/portsnap.conf' + local zypp_repo_dir='/etc/zypp/repos.d/' freebsd_conf='/etc/portsnap.conf' openbsd_conf='/etc/pkg.conf' # apt - debian, buntus, also sometimes some yum/rpm repos may create apt repos here as well if [[ -f $apt_file || -d $apt_file.d ]];then @@ -8881,6 +8948,15 @@ $repo_data_working" print "BSD ports servers:" repoFile ":" $2 } ' $freebsd_conf )" + elif [[ -f $openbsd_conf ]];then + REPO_DATA="$( gawk -F '=' -v repoFile=$openbsd_conf ' + BEGIN { + IGNORECASE=1 + } + /^installpath/ { + print "BSD ports servers:" repoFile ":" $2 + } + ' $openbsd_conf )" fi eval $LOGFE } @@ -9394,8 +9470,8 @@ get_shell_data() shell_type="$shell_type $shell_version" fi echo $shell_type - - eval $LOGFS + log_function_data "shell type: $shell_type" + eval $LOGFE } get_shell_parent() @@ -9436,6 +9512,7 @@ get_sysctl_data() fi # log_function_data "sysctl_data: $sysctl_data" echo "$sysctl_data" + eval $LOGFE } @@ -9605,7 +9682,7 @@ get_weather_data() local location_site='http://geoip.ubuntu.com/lookup' local weather_feed='http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=' local weather_spider='http://wunderground.com/' - local data_grab_error='' wget_error=0 + local data_grab_error='' downloader_error=0 local b_test_loc=false b_test_weather=false b_debug=false local test_dir="$HOME/bin/scripts/inxi/data/weather/" local test_location='location2.xml' test_weather='weather-feed.xml' @@ -9620,12 +9697,16 @@ get_weather_data() # echo $ALTERNATE_WEATHER_LOCATION;exit else if [[ $b_test_loc != 'true' ]];then - location_data=$( wget -q -t 1 -T $WGET_TIMEOUT -O- $location_site || wget_error=$? ) - log_function_data "$location_data" - if [[ $wget_error -ne 0 ]];then - data_grab_error="Error: location server up but download error - wget: $wget_error" + if [[ $DOWNLOADER != 'curl' ]];then + location_data=$( wget -q -t 1 -T $WGET_TIMEOUT -O- $location_site || downloader_error=$? ) + else + location_data=$( curl -s -y $WGET_TIMEOUT $location_site || downloader_error=$? ) fi - wget_error=0 + log_function_data "$location_data" + if [[ $downloader_error -ne 0 ]];then + data_grab_error="Error: location server up but download error - $DOWNLOADER: $downloader_error" + fi + downloader_error=0 else if [[ -f $test_dir$test_location ]];then location_data="$( cat $test_dir$test_location )" @@ -9736,9 +9817,13 @@ get_weather_data() # now either dump process or go on to get weather data if [[ -z $data_grab_error ]];then if [[ $b_test_weather != 'true' ]];then - weather_data="$( wget -q -t 1 -T $WGET_TIMEOUT -O- $weather_feed"$location" || wget_error=$? )" - if [[ $wget_error -ne 0 ]];then - data_grab_error="Error: weather server up but download error - wget: $wget_error" + if [[ $DOWNLOADER != 'curl' ]];then + weather_data="$( wget -q -t 1 -T $WGET_TIMEOUT -O- $weather_feed"$location" || downloader_error=$? )" + else + weather_data="$( curl -s -y $WGET_TIMEOUT $weather_feed"$location" || downloader_error=$? )" + fi + if [[ $downloader_error -ne 0 ]];then + data_grab_error="Error: weather server up but download error - $DOWNLOADER: $downloader_error" fi log_function_data "$weather_data" else @@ -10087,6 +10172,13 @@ print_short_data() local cpu_core_count=${A_CPU_CORE_DATA[3]} local cpu_core_alpha=${A_CPU_CORE_DATA[1]} local cpu_type=${A_CPU_CORE_DATA[2]} + local kernel_os='' + + if [[ $BSD_TYPE == 'bsd' ]];then + kernel_os="${C1}OS${C2}$SEP1$( uname -rsp )" + else + kernel_os="${C1}Kernel${C2}$SEP1$current_kernel" + fi if [[ $cpu_physical_count -gt 1 ]];then cpc_plural='(s)' @@ -10156,7 +10248,7 @@ print_short_data() #C1="${C1},1"; C2="${C2},1"; CN="${CN},1" fi fi - short_data="${C1}CPU$cpc_plural${C2}$SEP1$cpu_data_string $cpu_model$model_plural ($cpu_type) clocked at $min_max_clock$SEP2${C1}Kernel${C2}$SEP1$current_kernel$SEP2${C1}Up${C2}$SEP1$up_time$SEP2${C1}Mem${C2}$SEP1$memory$SEP2${C1}HDD${C2}$SEP1$hdd_capacity($hdd_used)$SEP2${C1}Procs${C2}$SEP1$processes$SEP2" + short_data="${C1}CPU$cpc_plural${C2}$SEP1$cpu_data_string $cpu_model$model_plural ($cpu_type) clocked at $min_max_clock$SEP2$kernel_os$SEP2${C1}Up${C2}$SEP1$up_time$SEP2${C1}Mem${C2}$SEP1$memory$SEP2${C1}HDD${C2}$SEP1$hdd_capacity($hdd_used)$SEP2${C1}Procs${C2}$SEP1$processes$SEP2" if [[ $SHOW_IRC -gt 0 ]];then short_data="$short_data${C1}Client${C2}$SEP1$IRC_CLIENT$IRC_CLIENT_VERSION$SEP2" @@ -10533,11 +10625,13 @@ print_cpu_flags_full() a_cpu_flags[$counter]=$flag_string flag_string=$flag (( counter++ )) - fi + fi temp_string='' done if [[ -n $flag_string ]];then a_cpu_flags[$counter]=$flag_string + else + a_cpu_flags[$counter]='No CPU flag data found.' fi # then print it out for (( i=0; i < ${#a_cpu_flags[@]};i++ )) @@ -10683,8 +10777,8 @@ print_graphics_data() if [[ -n $root_x_string ]];then root_x_string="${C1}Advanced Data$SEP3${C2} N/A $root_x_string" fi - - if [[ ${#A_GRAPHICS_CARD_DATA[@]} -gt 0 ]];then + # note, this comes out with a count of 1 sometimes for null data + if [[ ${A_GRAPHICS_CARD_DATA[0]} != '' ]];then for (( i=0; i < ${#A_GRAPHICS_CARD_DATA[@]}; i++ )) do IFS="," diff --git a/inxi.changelog b/inxi.changelog index e78f92c..4598271 100755 --- a/inxi.changelog +++ b/inxi.changelog @@ -1,3 +1,49 @@ +===================================================================================== +Version: 2.2.3 +Patch Version: 00 +Script Date: 2014-09-03 +----------------------------------- +Changes: +----------------------------------- +New version, new tarball. Contains a major bug fix for a regression introduced in 2.2.2 + +-m/-M would always show requires root for dmidecode no matter what. Also improved dmidecode +error messages/handling. + +Also, a fix for no display card data, now shows as expected no card data + +Most other fixes are for bsd, mostly openbsd. + +1. Added a class for network devices in freebsd pciconf + +2. Added -r support for openbsd + +3. Fixed some cpu issues for openbsd + +4. Fixed an issue in openbsd/freebsd where client version data failed to get cleaned + +5. Changed inxi short form output for bsds to show OS data instead of kernel data. + +6. BSDs, maybe all, different syntax in xorg.0.log made unloaded gfx drivers not show, + that is fixed now. + +-p fixed file system type in -p/-P for openbsd, now shows. + +-I / inxi short - fixed used memory, did not show in openbsd, now does. + +-f fixed cpu flags in openbsd, now works + +-C corrected corrupted cpu data outputs, in openbsd at least, maybe also freebsd + +-C added an openbsd hack to sometimes show cpu L2 cache + +-m/-M fixed/improved dmidecode error handling for all systems + +modified handling of dmesg.boot data, synched so gawk can parse better. + +----------------------------------- +-- Harald Hope - Wed, 03 Sep 2014 12:00:04 -0700 + ===================================================================================== Version: 2.2.2 Patch Version: 00