Jim Meyering wrote:
> +  /* Find the smallest power of two, P (e.g., 0010000) such that P & V == P. 
> */
> +  unsigned int p = v ^ (v & (v - 1));

This is equivalent to

      unsigned int p = v & ~(v - 1);

This latter expression may be clearer (depending on the reader's mental model of
bitwise expressions).

> +  /* Compute and return r = log2 (p), using code from
> +     http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn 
> */
> +  return MultiplyDeBruijnBitPosition[(uint32_t) (p * 0x077CB531UL) >> 27];

Why is this done at runtime? Is S_IFMT not guaranteed to be a compile-time 
constant?

Bruno


Reply via email to