commit:     d639ef781b644478213025450c26fe802cee2a7e
Author:     Kerin Millar <kfm <AT> plushkava <DOT> net>
AuthorDate: Mon Jul  8 02:03:12 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Jul  8 02:04:28 2024 +0000
URL:        
https://gitweb.gentoo.org/proj/gentoo-functions.git/commit/?id=d639ef78

Have _update_time() use a faster rounding method for sh

Directly implement a round half up algorithm for sh, thereby avoiding a
command substitution and a potential subshell along with it.

Signed-off-by: Kerin Millar <kfm <AT> plushkava.net>

 functions.sh | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/functions.sh b/functions.sh
index ccd0d1d..1295a2b 100644
--- a/functions.sh
+++ b/functions.sh
@@ -755,16 +755,18 @@ _update_time()
        elif [ -f /proc/uptime ]; then
                _update_time()
                {
-                       local ds s timeval
+                       local cs ds s timeval
 
                        IFS=' ' read -r timeval _ < /proc/uptime || return
                        s=${timeval%.*}
-                       ds=$(printf '%.1f' ".${timeval#*.}")
-                       if [ "${ds}" = "1.0" ]; then
-                               ds=10
-                       else
-                               ds=${ds#0.}
-                       fi
+                       cs=${timeval#*.}
+                       case ${cs} in
+                               ?[0-4])
+                                       ds=${cs%?}
+                                       ;;
+                               ?[5-9])
+                                       ds=$(( ${cs%?} + 1 ))
+                       esac
                        genfun_time=$(( s * 10 + ds ))
                }
        else

Reply via email to