[PATCH] umount: always use umount2 syscall with specified flags

Denys Vlasenko vda.linux at googlemail.com
Mon Oct 5 17:04:12 UTC 2015


On Sat, Oct 3, 2015 at 12:58 PM, Xabier Oneca  --  xOneca
<xoneca at gmail.com> wrote:
> Hello,
>
> Excuse my ignorance, but what does this typedef do?
>
> ------------------
>     {
>         typedef char bug[
>             (OPT_FORCE != MNT_FORCE || OPT_LAZY != MNT_DETACH) ? -1 : 1
>         ];
>     }
> ------------------
>
> My understanding is that this snippet catches when those two constants
> are not equal and then trigger a compiler error by defining a char[-1]
> type. Am I correct? If so, why isn't used the preprocessor #errror
> with a less cryptic error description?

Constants like MNT_FORCE may be enums, not literals.
Preprocessor can't evaluate enums.


More information about the busybox mailing list