diff --git a/debian/changelog b/debian/changelog index dbe90b4e..e7e74c8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,24 @@ byobu (4.1) unreleased; urgency=low * usr/bin/byobu-status: - move byobu-status back to sh (dash?), for a 2x performance improvement - note that we cannot pass arguments to sourced scripts + * usr/bin/byobu-status, usr/lib/byobu/apport, usr/lib/byobu/battery, + usr/lib/byobu/cpu_freq, usr/lib/byobu/cpu_temp, + usr/lib/byobu/custom, usr/lib/byobu/disk_io, usr/lib/byobu/ec2_cost, + usr/lib/byobu/fan_speed, usr/lib/byobu/hostname, + usr/lib/byobu/ip_address, usr/lib/byobu/load_average, + usr/lib/byobu/logo, usr/lib/byobu/mail, usr/lib/byobu/mem_available, + usr/lib/byobu/mem_used, usr/lib/byobu/menu, usr/lib/byobu/network, + usr/lib/byobu/processes, usr/lib/byobu/raid, usr/lib/byobu/rcs_cost, + usr/lib/byobu/reboot_required, usr/lib/byobu/release, + usr/lib/byobu/services, usr/lib/byobu/swap, usr/lib/byobu/time_utc, + usr/lib/byobu/updates_available, usr/lib/byobu/uptime, + usr/lib/byobu/users, usr/lib/byobu/whoami, + usr/lib/byobu/wifi_quality, usr/share/byobu/tests/byobu-time- + notifications: + - with advice from Scott Moser, almost all $(color ...) calls have + been updated to inline calls to the color() function, which does + the printf itself + - this provides some measurable performance improvements [ Scott Moser ] * usr/bin/byobu-status: diff --git a/usr/bin/byobu-status b/usr/bin/byobu-status index 7dbb18f8..6b2cb82f 100755 --- a/usr/bin/byobu-status +++ b/usr/bin/byobu-status @@ -40,6 +40,7 @@ color() { case "$1" in "") return 0 ;; -) printf "$ESC{-}" ;; + --) printf "$ESC{-} " ;; esc) printf "$ESC" ;; bold1) printf "$ESC{=b }" ;; bold2) printf "$ESC{+b }" ;; diff --git a/usr/lib/byobu/apport b/usr/lib/byobu/apport index 7240235c..4465c3f5 100755 --- a/usr/lib/byobu/apport +++ b/usr/lib/byobu/apport @@ -36,4 +36,7 @@ if [ "$1" = "--detail" ]; then fi # Print {!} if a /var/crash/*.crash file exists -ls /var/crash/*.crash >/dev/null 2>&1 && printf "$(color y k){!}$(color -) " +for i in /var/crash/*.crash; do + color y k; printf "{!}"; color -- + exit 0 +done diff --git a/usr/lib/byobu/battery b/usr/lib/byobu/battery index 1c97efd6..be544596 100755 --- a/usr/lib/byobu/battery +++ b/usr/lib/byobu/battery @@ -50,14 +50,14 @@ for bat in $BATTERY /proc/acpi/battery/*; do percent=$( echo "$rem" "$full" | awk '{printf "%.0f", 100*$1/$2}') if [ "$percent" -lt 33 ]; then - color="$(color R k)" - bcolor="$(color b R k)" + color="R k" + bcolor="b R k" elif [ "$percent" -lt 67 ]; then - color="$(color Y k)" - bcolor="$(color b Y k)" + color="Y k" + bcolor="b Y k" else - color="$(color G k)" - bcolor="$(color b G k)" + color="G k" + bcolor="b G k" fi percent="$percent%" @@ -77,6 +77,6 @@ for bat in $BATTERY /proc/acpi/battery/*; do sign="$state" ;; esac - printf "$bcolor%s$(color -)$color|%s|$(color -) " "$percent" "$sign" + color $bcolor; printf "%s" "$percent"; color -; color $color; printf "|%s|" "$sign"; color -- break done diff --git a/usr/lib/byobu/cpu_freq b/usr/lib/byobu/cpu_freq index 8648598d..e8b3eab5 100755 --- a/usr/lib/byobu/cpu_freq +++ b/usr/lib/byobu/cpu_freq @@ -37,4 +37,4 @@ else freq=$(echo "$freq" "$count" | awk '{printf "%.1f\n", $1/$2/1000}') fi fi -printf "$(color b c W)%s$(color -)$(color c W)%s$(color -) " "$freq" "GHz" +color b c W; printf "%s" "$freq"; color -; color c W; printf "%s" "GHz"; color -- diff --git a/usr/lib/byobu/cpu_temp b/usr/lib/byobu/cpu_temp index dfa5af47..90cbae9e 100755 --- a/usr/lib/byobu/cpu_temp +++ b/usr/lib/byobu/cpu_temp @@ -48,7 +48,7 @@ for i in $MONITORED_TEMP /sys/class/hwmon/hwmon*/temp*_input /proc/acpi/ibm/ther t=$(echo "$t" | awk '{printf "%.0f", $1 *9/5 + 32}') unit="$ICON_F" fi - printf "$(color b k Y)%s$(color -)$(color k Y)$ICON%s$(color -) " "$t" "$unit" + color b k Y; printf "%s" "$t"; color -; color k Y; printf "%s%s" "$ICON" "$unit"; color -- break fi done diff --git a/usr/lib/byobu/custom b/usr/lib/byobu/custom index 6960b302..86f3969c 100755 --- a/usr/lib/byobu/custom +++ b/usr/lib/byobu/custom @@ -46,7 +46,7 @@ for i in "$DATA/bin/"[0-9]*_*; do ;; *) # Default to inverted coloring - printf "$(color invert)$output$(color -) " + color invert; printf "%s" "$output"; color -- ;; esac done diff --git a/usr/lib/byobu/disk_io b/usr/lib/byobu/disk_io index f1c022b3..5a042697 100755 --- a/usr/lib/byobu/disk_io +++ b/usr/lib/byobu/disk_io @@ -68,5 +68,5 @@ for i in "read" "write"; do fi fi [ "$rate" != "0" ] || continue - printf "$(color b M W)$symbol$rate$(color -)$(color M W)$unit$(color -) " + color b M W; printf "%s%s" "$symbol" "$rate"; color -; color M W; printf "%s" "$unit"; color -- done diff --git a/usr/lib/byobu/ec2_cost b/usr/lib/byobu/ec2_cost index 3c520b45..fb82edc4 100755 --- a/usr/lib/byobu/ec2_cost +++ b/usr/lib/byobu/ec2_cost @@ -97,4 +97,4 @@ if [ "$DETAIL" = "1" ]; then exit 0 fi -printf "$(color K G)~\$$(color -)$(color b K G)%s$(color -) " $total_cost +color K G; printf "A\$"; color -; color b K G; printf "%s" "$total_cost"; color -- diff --git a/usr/lib/byobu/fan_speed b/usr/lib/byobu/fan_speed index 3ca44f8c..94d767b1 100755 --- a/usr/lib/byobu/fan_speed +++ b/usr/lib/byobu/fan_speed @@ -32,7 +32,7 @@ DIR="/sys/class/hwmon" for i in $(find $DIR/*/*/ -type f -name "fan1_input"); do speed=$(cat "$i") if [ "$speed" -gt 0 ]; then - printf "$(color bold1)%s$(color -)$(color none)%s$(color -) " "$speed" "rpm" + color bold1; printf "%s" "$speed"; color -; color none; printf "rpm"; color -- exit 0 fi done @@ -45,7 +45,7 @@ if [ -r /proc/i8k ]; then # use `modprobe i8k fan_mult=1` to disable if unneeded, # resulting in nonsensical speeds [ "$speed" -gt 10000 ] && speed=$((${speed} / 30)) - printf "$(color bold1)%s$(color -)$(color none)%s$(color -) " "$speed" "rpm" + color bold1; printf "%s" "$speed"; color -; color none; printf "rpm"; color -- exit 0 fi done diff --git a/usr/lib/byobu/hostname b/usr/lib/byobu/hostname index ba0746ca..90e58660 100755 --- a/usr/lib/byobu/hostname +++ b/usr/lib/byobu/hostname @@ -27,6 +27,5 @@ if [ "$1" = "--detail" ]; then fi . "$DATA/status" -[ "$whoami" = "1" ] && at="@" -printf "$(color bold2)%s%s$(color -)" "$at" $(hostname -s 2>/dev/null || hostname) +color bold2; printf "%s" "$(hostname -s 2>/dev/null || hostname)"; color -- diff --git a/usr/lib/byobu/ip_address b/usr/lib/byobu/ip_address index 42a97838..659ac84f 100755 --- a/usr/lib/byobu/ip_address +++ b/usr/lib/byobu/ip_address @@ -29,8 +29,6 @@ if [ "$1" = "--detail" ]; then fi . "$DATA/status" -[ "$hostname" = "1" ] && space=" " -[ "$whoami" = "1" ] && space=" " # Allow interface overrides in $DATA/statusrc if [ -n "$MONITORED_NETWORK" ]; then @@ -57,4 +55,4 @@ case "$IPV6" in ;; esac -printf "%s$(color bold2)%s$(color -)" "$space" "$ipaddr" +color bold2; printf "%s" "$ipaddr"; color -- diff --git a/usr/lib/byobu/load_average b/usr/lib/byobu/load_average index 746b970d..afd3da3e 100755 --- a/usr/lib/byobu/load_average +++ b/usr/lib/byobu/load_average @@ -25,4 +25,4 @@ if [ "$1" = "--detail" ]; then exit 0 fi -printf "$(color Y k)%s$(color -) " $(awk '{print $1}' /proc/loadavg) +color Y k; printf "%s" "$(awk '{print $1}' /proc/loadavg)"; color -- diff --git a/usr/lib/byobu/logo b/usr/lib/byobu/logo index 5edbe271..7d1ef097 100755 --- a/usr/lib/byobu/logo +++ b/usr/lib/byobu/logo @@ -32,8 +32,11 @@ print_logo() { distro=`echo "$1" | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' ` case "$distro" in *ubuntu*) - #$MARKUP && printf "$(color b k r)%s$(color -)$(color k y)%s$(color -)$(color b k Y)%s$(color -)" "\\" "o" "/" || printf "\\o/" - $MARKUP && printf "$(color m W)%s$(color -)" " U " || printf "\\o/" + if $MARKUP; then + color m W; printf " U "; color - + else + printf "\\o/" + fi ;; *altlinux*) logo="alt" diff --git a/usr/lib/byobu/mail b/usr/lib/byobu/mail index 21972809..95b4c18a 100755 --- a/usr/lib/byobu/mail +++ b/usr/lib/byobu/mail @@ -27,4 +27,6 @@ if [ "$1" = "--detail" ]; then exit 0 fi -[ -s "$mailfile" ] && printf "$(color b)$ICON$(color -) " || exit 0 +if [ -s "$mailfile" ]; then + color b; printf "%s" "$ICON"; color -- +fi diff --git a/usr/lib/byobu/mem_available b/usr/lib/byobu/mem_available index e3b1244f..f71ad79a 100755 --- a/usr/lib/byobu/mem_available +++ b/usr/lib/byobu/mem_available @@ -40,4 +40,5 @@ else mem="$mem" unit="KB" fi -printf "$(color b g W)%s$(color -)$(color g W)$unit%s$(color -)%s" "$mem" "$comma" "$whitespace" + +color b g W; printf "%s" "$mem"; color -; color g W; printf "%s%s" "$unit" "$comma"; color -; printf "%s" "$whitespace" diff --git a/usr/lib/byobu/mem_used b/usr/lib/byobu/mem_used index b2aaf19a..add4f150 100755 --- a/usr/lib/byobu/mem_used +++ b/usr/lib/byobu/mem_used @@ -26,4 +26,4 @@ if [ "$1" = "--detail" ]; then fi f=$(free | awk '/buffers\/cache:/ {printf "%.0f", 100*$3/($3 + $4)}') -printf "$(color b g W)%s$(color -)$(color g W)%%$(color -) " "$f" +color b g W; printf "%s" "$f"; color -; color g W; printf "%%"; color -- diff --git a/usr/lib/byobu/menu b/usr/lib/byobu/menu index eaef8ec2..3f0906cd 100755 --- a/usr/lib/byobu/menu +++ b/usr/lib/byobu/menu @@ -33,4 +33,5 @@ else key="F9" fi -printf " $(color k w)%s:<$(color -)$(color b k w)$key$(color k w)>" `gettext "Menu"` +text=$(gettext "Menu") +color k w; printf "%s:<" "$text"; color -; color b k w; printf "%s" "$key"; color k w; printf ">" diff --git a/usr/lib/byobu/network b/usr/lib/byobu/network index 5b46b9e6..4e8348b1 100755 --- a/usr/lib/byobu/network +++ b/usr/lib/byobu/network @@ -85,5 +85,7 @@ for i in up down; do ;; esac fi - [ "$rate" != "0" ] && printf "$(color b m w)$symbol$rate$(color -)$(color m w)$unit$(color -) " + if [ "$rate" != "0" ]; then + color b m w; printf "%s%s" "$symbol" "$rate"; color -; color m w; printf "%s" "$unit"; color -- + fi done diff --git a/usr/lib/byobu/processes b/usr/lib/byobu/processes index 2ef65fc9..a7faa95a 100755 --- a/usr/lib/byobu/processes +++ b/usr/lib/byobu/processes @@ -25,4 +25,5 @@ if [ "$1" = "--detail" ]; then exit 0 fi -printf "$(color b y w)%s$(color -)$(color y w)&$(color -) " $(ls -d /proc/[0-9]* 2>/dev/null| wc -l) +count=$(ls -d /proc/[0-9]* 2>/dev/null| wc -l) +color b y w; printf "%s" "$count"; color -; color y w; printf "&"; color -- diff --git a/usr/lib/byobu/raid b/usr/lib/byobu/raid index e2813037..9f0fde45 100755 --- a/usr/lib/byobu/raid +++ b/usr/lib/byobu/raid @@ -41,5 +41,5 @@ if grep -qs \% /proc/mdstat; then fi if [ -n "$msg" ]; then - printf "$(color B w r)%s$(color -) " "$msg" + color B w r; printf "%s" "$msg"; color -- fi diff --git a/usr/lib/byobu/rcs_cost b/usr/lib/byobu/rcs_cost index efe713d2..be16865c 100755 --- a/usr/lib/byobu/rcs_cost +++ b/usr/lib/byobu/rcs_cost @@ -96,4 +96,4 @@ if [ "$DETAIL" = "1" ]; then exit 0 fi -printf "$(color K G)~\$$(color -)$(color b K G)%s$(color -) " $total_cost +color K G; printf "R\$%s"; color -; color b K G; printf "%s" "$total_cost"; color -- diff --git a/usr/lib/byobu/reboot_required b/usr/lib/byobu/reboot_required index 46237cfb..d543564d 100755 --- a/usr/lib/byobu/reboot_required +++ b/usr/lib/byobu/reboot_required @@ -33,7 +33,11 @@ case "$1" in [ -e "$reboot" ] && printf "Yes" || printf "No" ;; *) - [ -e "$reboot" ] && printf "$(color b W)($(color -)$(color b b W)%s$(color -)$(color b W))$(color -) " "R" - [ -e "$reload" ] && printf "$(color b W)<$(color -)$(color b b W)%s$(color -)$(color b W)>$(color -) " "F5" + if [ -e "$reboot" ]; then + color b W; printf "("; color -; color b b W; printf "R"; color -; color b W; printf ")"; color -- + fi + if [ -e "$reload" ]; then + color b W; printf "<"; color -; color b b W; printf "F5"; color -; color b W; printf ">"; color -; printf " " + fi ;; esac diff --git a/usr/lib/byobu/release b/usr/lib/byobu/release index 3f998361..06181abb 100755 --- a/usr/lib/byobu/release +++ b/usr/lib/byobu/release @@ -66,4 +66,4 @@ else DISTRO="Byobu" fi -printf "$(color bold2)%s$(color -) " "$DISTRO" +color bold2; printf "%s" "$DISTRO"; color -- diff --git a/usr/lib/byobu/services b/usr/lib/byobu/services index bec34a4a..cb8d52a7 100755 --- a/usr/lib/byobu/services +++ b/usr/lib/byobu/services @@ -70,4 +70,5 @@ for i in $SERVICES; do esac done [ -n "$output" ] || exit 0 -printf "$(color w c)${output#,}$(color -) " + +color w c; printf "%s" ${output#,}; color -- diff --git a/usr/lib/byobu/swap b/usr/lib/byobu/swap index eb1da733..b2732e77 100755 --- a/usr/lib/byobu/swap +++ b/usr/lib/byobu/swap @@ -37,4 +37,7 @@ else mem="$mem" unit="KB" fi -printf "$(color b G W)s%s$(color -)$(color G W)%s,$(color -)$(color b G W)%s$(color -)$(color G W)%%$(color -) " "$mem" "$unit" "$f" + +[ "$f" = "0" ] && exit 0 + +color b G W; printf "s%s" "$mem"; color -; color G W; printf "%s," "$unit"; color -; color b G W; printf "%s" "$f"; color -; color G W; printf "%%"; color -- diff --git a/usr/lib/byobu/time_utc b/usr/lib/byobu/time_utc index e5249565..0f27dcba 100755 --- a/usr/lib/byobu/time_utc +++ b/usr/lib/byobu/time_utc @@ -24,7 +24,8 @@ case "$1" in date -u ;; *) - printf "$(color invert)%s UTC$(color -) " $(date -u +%H:%M) + d=$(date -u +%H:%M) + color invert; printf "%s UTC" "$d"; color -- ;; esac diff --git a/usr/lib/byobu/updates_available b/usr/lib/byobu/updates_available index c957dd4a..7181d4cc 100755 --- a/usr/lib/byobu/updates_available +++ b/usr/lib/byobu/updates_available @@ -39,13 +39,13 @@ print_updates() { s=$2 if [ -n "$u" ]; then if [ "$u" -gt 0 ]; then - printf "$(color b r W)%d$(color -)$(color r W)!" "$u" + color b r W; printf "%d" "$u"; color -; color r W; printf "!" if [ -n "$s" ]; then if [ "$s" -gt 0 ]; then printf "!" fi fi - printf "$(color -) " + color -- fi fi } diff --git a/usr/lib/byobu/uptime b/usr/lib/byobu/uptime index 72355152..35ba6ca4 100755 --- a/usr/lib/byobu/uptime +++ b/usr/lib/byobu/uptime @@ -29,7 +29,7 @@ if [ "$1" = "--detail" ]; then fi u=$(sed "s/\..*$//" /proc/uptime) -printf "$(color w b)" +color w b if [ "$u" -gt 86400 ]; then echo "$u" | awk '{printf "%dd%dh", $1 / 86400, ($1 % 86400)/3600 }' elif [ "$u" -gt 3600 ]; then @@ -39,4 +39,4 @@ elif [ "$u" -gt 60 ]; then else printf "%ds" "$u" fi -printf "$(color -) " +color -- diff --git a/usr/lib/byobu/users b/usr/lib/byobu/users index 7a77399c..29a12d3f 100755 --- a/usr/lib/byobu/users +++ b/usr/lib/byobu/users @@ -31,4 +31,7 @@ fi # Note: we'd like to use pgrep -c, however, this isn't available in # busybox and some distro's pgrep (and it doesn't exit non-zero). count=`pgrep -f "sshd:.*@" | wc -l` || exit 0 -[ $count -gt 0 ] && printf "$(color b w r)%d$(color -)$(color w r)#$(color -) " $count + +if [ $count -gt 0 ]; then + color b w r; printf "%d" "$count"; color -; color w r; printf "#"; color -- +fi diff --git a/usr/lib/byobu/whoami b/usr/lib/byobu/whoami index 1b6e2a64..c3e29dee 100755 --- a/usr/lib/byobu/whoami +++ b/usr/lib/byobu/whoami @@ -24,4 +24,4 @@ if [ "$1" = "--detail" ]; then exit 0 fi -printf "$(color bold2)%s$(color -)" $(whoami) +color bold2; printf "%s@" "$(whoami)"; color - diff --git a/usr/lib/byobu/wifi_quality b/usr/lib/byobu/wifi_quality index 7f6677e7..7622e29d 100755 --- a/usr/lib/byobu/wifi_quality +++ b/usr/lib/byobu/wifi_quality @@ -36,4 +36,5 @@ else quality=`echo "$quality" | awk -F/ '{printf "%.0f", 100*$1/$2}'` fi [ "$quality" = "0" ] && exit 0 -printf "${ICON}$(color b C k)%s$(color -)$(color C k)%s,$(color -)$(color b C k)%s$(color -)$(color C k)%%$(color -) " "$bitrate" "Mbps" "$quality" + +printf "${ICON}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s," "Mbps"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%%"; color -- diff --git a/usr/share/byobu/tests/byobu-time-notifications b/usr/share/byobu/tests/byobu-time-notifications index f708be84..ccd4e7ef 100755 --- a/usr/share/byobu/tests/byobu-time-notifications +++ b/usr/share/byobu/tests/byobu-time-notifications @@ -20,7 +20,7 @@ PKG=byobu -RUNS=10 +RUNS=100 [ -z "$BYOBU_PREFIX" ] && BYOBU_PREFIX="/usr" export BYOBU_PREFIX