On Sat, 23 Dec 2017 23:13:22 +0000, Theo Buehler wrote:
> > Obviously, the relevant condition should have been
> >
> >     if ((iflag ? strcasecmp : strcmp)(t1, t2) != 0)
> >
> > instead of awkwardly messing with logical AND and OR.
>
> Indeed, this is much better. I like your version, but perhaps others
> might like this one more:
>
>     if ((iflag && strcasecmp(t1, t2)) || strcmp(t1, t2))

Well, this is even worse: this version not only has the same kind of
performance drawback as the current one, but it is also logically
incorrect, and will cause the `-i' flag to have no effect at all.

If you really want to do this without a ternary operator, the equivalent
form is

        if (iflag && strcasecmp(t1, t2) || !iflag && strcmp(t1, t2))

which looks very dumb indeed, but at least it is logically sound.

Regards,

kshe

Reply via email to