On Wed, Aug 22, 2018 at 02:50:05PM -0700, Junio C Hamano wrote:
> Jeff King <[email protected]> writes:
>
> > Yes. I was thinking it had more purpose than this, but it really is just
> > a flag to check "did we do this already?". Which is one of the main
> > purposes I claimed for the new flag in my commit message. :)
>
> OK.
>
> The reason I was on the fence was primarily because read_from_stdin
> field in the structure observable from outside can be a boolean
> (that is, "unsigned :1"), but internally this may want to count up
> to two.
>
> Or with "unsigned read_from_stdin:1", would this
>
> if (revs->read_from_stdin++)
> die("twice???");
>
> still be usable? As the value of post-increment would be 1 even
> when the resulting field would have wrapped-around already, it
> should be OK, but it just felt strange to me.
I agree it would work in practice, though I also agree it is funny and
should be avoided.
> But that is something we do not have to worry about until somebody
> tries to shrink the structure by making these flags into bitfields.
Also agreed. I'd probably resolve it then by writing:
if (revs->read_from_stdin)
die("twice");
revs->read_from_stdin = 1;
I guess we could even do that now. Or add a test to make sure "--stdin
--stdin" barfs. But I am perfectly happy to punt until somebody actually
wants to use a bitfield.
-Peff