On 2014-02-24, Fabian Raetz <fabian.ra...@gmail.com> wrote:
> Hi misc@,
>
> while calculating my phys. memory (mb) with the 
> folllowing shellsript i get as a result -424.
>
> sysctl -n hw.physmem returns 3849830400
>
> ------------
> #!/bin/sh
>
> phys_mem_bytes=`sysctl -n hw.physmem`
> phys_mem_mb=`expr $phys_mem_bytes / 1024 / 1024`
> echo $phys_mem_mb
> ----------
>
> so i tried
> expr 2147483647 / 2 which returns 1073741824 while
> expr 2147483648 / 2 returns -1073741824
>
>
> ksh(1) states that expr does Integer arithmetic.
> So is this the expected behaviour or a bug?

I don't see this discussed in ksh(1) - it's expr(1), /bin/expr on OpenBSD.
This uses 32-bit signed integer types, which are limited to 2^31-1, above
which it wraps around.

It may be possible to change this after we're done with release, but for
now here's a quick workaround:

phys_mem_mb=`perl -e "print int($phys_mem_bytes / 1024 / 1024);"`

Reply via email to