Module Name: src Committed By: dsl Date: Sun Nov 15 13:39:00 UTC 2009
Modified Files: src/sys/conf: osrelease.sh Log Message: Use shell builtins instead of awk and sed. Avoids problems with awk processing floating point numbers when LC_NUMERIC give a decimal point of ','. Fixes PR/42321 To generate a diff of this commit: cvs rdiff -u -r1.117 -r1.118 src/sys/conf/osrelease.sh Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/conf/osrelease.sh diff -u src/sys/conf/osrelease.sh:1.117 src/sys/conf/osrelease.sh:1.118 --- src/sys/conf/osrelease.sh:1.117 Thu Oct 29 06:33:27 2009 +++ src/sys/conf/osrelease.sh Sun Nov 15 13:39:00 2009 @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: osrelease.sh,v 1.117 2009/10/29 06:33:27 apb Exp $ +# $NetBSD: osrelease.sh,v 1.118 2009/11/15 13:39:00 dsl Exp $ # # Copyright (c) 1997 The NetBSD Foundation, Inc. # All rights reserved. @@ -32,28 +32,43 @@ # We use the number specified in <sys/param.h> -AWK=${AWK:-awk} -SED=${TOOL_SED:-sed} -PARAMH="`dirname $0`"/../sys/param.h -release=`$AWK '/^#define[ ]*__NetBSD_Version__/ { print $6 }' $PARAMH` +path="./$0" +exec < ${path%/*}/../sys/param.h -# default: return nn.nn.nn -# -m: return nn, representing only the major number; however, for -current, +while + read define ver_tag release comment || exit 1 +do + [ "$define" = "#define" ] || continue; + [ "$ver_tag" = "__NetBSD_Version__" ] || continue + break +done + +# ${release} is [M]Mmm00pp00 +# +# default: return MM.mm.pp +# -m: return MM, representing only the major number; however, for -current, # return the next major number (e.g. for 5.99.nn, return 6) -# -n: return nn.nn -# -s: return nnnnnn (no dots) +# -n: return MM.mm +# -s: return MMmmpp (no dots) + +release=${release%??} + +rel_MMmm=${release%????} +rel_MM=${rel_MMmm%??} +rel_mm=${rel_MMmm#${rel_MM}} +rel_pp=${release#${rel_MMmm}00} case $1 in -m) - echo $release | $AWK -F. '{print int($1+$2/100+0.01)}' + echo "$(((${rel_MMmm}+1)/100))" ;; -n) - echo $release | $AWK -F. '{print $1 "." $2}' + echo "$rel_MM.$rel_mm" ;; -s) - echo $release | $SED -e 's,\.,,g' + echo "$rel_MM$rel_mm$rel_pp" ;; *) - echo $release + echo "$rel_MM.$rel_mm.$rel_pp" ;; esac