commit 9498a85d1cedb78a38b54f243c9c4a3daad5bcc6 Author: Thomas Koch Date: Tue Feb 28 20:33:44 2017 +0100 tlp-stat: intercept non-existing or invalid charge values Reference: * Issue #256: https://github.com/linrunner/TLP/issues/256 diff --git a/tlp-stat.in b/tlp-stat.in index ca08527..8aeb6a6 100644 --- a/tlp-stat.in +++ b/tlp-stat.in @@ -58,6 +58,15 @@ no_runtimepm=0 # --- Functions +catparm () { # echo contents of sysfile or default if non-existent or unreadable + # $1: sysfile, $2: default value + local val="$(cat $1 2> /dev/null)" + [ -n "$val" ] || val="$2" # sysfile nonexistent or read failed + + printf "%s" $val + return 0 +} + printparm () { # formatted output of sysfile - general # $1: format, $2: sysfile, $3: namsg, $4: cutoff local format="$1" @@ -257,7 +266,7 @@ check_ata_errors () { # check kernel log for ata errors # count matching error lines echo $( dmesg | egrep -c "${RE_ATA_ERROR}" 2> /dev/null ) else - # no values in question configured + # no values in question configured echo "0" fi @@ -1115,9 +1124,9 @@ if [ "$show_bat" = "1" ] || [ "$show_all" = "1" ]; then echo # store values for charge / capacity calculation below - ed=$(cat $batd/design_capacity) - ef=$(cat $batd/last_full_capacity) - en=$(cat $batd/remaining_capacity) + ed=$(catparm $batd/design_capacity 0) + ef=$(catparm $batd/last_full_capacity 0) + en=$(catparm $batd/remaining_capacity 0) # show charge + capacity lcnt=0 @@ -1184,9 +1193,9 @@ if [ "$show_bat" = "1" ] || [ "$show_all" = "1" ]; then printparm "%-59s = ##%6d## [mW]" $batd/power_now "" 000 # store values for charge / capacity calculation below - ed=$(cat $batd/energy_full_design) - ef=$(cat $batd/energy_full) - en=$(cat $batd/energy_now) + ed=$(catparm $batd/energy_full_design 0) + ef=$(catparm $batd/energy_full 0) + en=$(catparm $batd/energy_now 0) elif [ -f $batd/charge_full ]; then printparm "%-59s = ##%6d## [mAh]" $batd/charge_full_design "" 000 @@ -1195,9 +1204,15 @@ if [ "$show_bat" = "1" ] || [ "$show_all" = "1" ]; then printparm "%-59s = ##%6d## [mA]" $batd/current_now "" 000 # store values for charge / capacity calculation below - ed=$(cat $batd/charge_full_design) - ef=$(cat $batd/charge_full) - en=$(cat $batd/charge_now) + ed=$(catparm $batd/charge_full_design 0) + ef=$(catparm $batd/charge_full 0) + en=$(catparm $batd/charge_now 0) + + else + ed=0 + ef=0 + en=0 + fi if [ $tpbat -eq 1 ]; then print_tp_batstate $batd/status