Re: [PATCH v2 06/10] fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 18, 2021, 22:27 UTC
- Message-ID
- <xmqqy2flc8pk.fsf@gitster.g>
- In-Reply-To
- <YC7FcTnduQiaF+W5@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 44 quoted lines
> On Thu, Feb 18, 2021 at 11:58:36AM +0100, Ævar Arnfjörð Bjarmason wrote:
>
>> Move the FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} defines into a new
>> fsck_msg_type enum.
>
> Makes sense. As with my previous comment, I wonder if "severity" is a
> more descriptive term.
>
>> diff --git a/fsck.h b/fsck.h
>> index 0c75789d219..c77e8ddf10b 100644
>> --- a/fsck.h
>> +++ b/fsck.h
>> @@ -3,10 +3,13 @@
>>
>> #include "oidset.h"
>>
>> -#define FSCK_ERROR 1
>> -#define FSCK_WARN 2
>> -#define FSCK_IGNORE 3
>> -
>> +enum fsck_msg_type {
>> + FSCK_INFO = -2,
>> + FSCK_FATAL = -1,
>> + FSCK_ERROR = 1,
>> + FSCK_WARN,
>> + FSCK_IGNORE
>> +};
>
> You kept the values the same as they were before, which is good in a
> refactoring step, but...wow, the ordering is weird and confusing.
>
> In FATAL/ERROR/WARN/IGNORE the number increases as severity decreases.
> Maybe reversed from how I'd do it, but at least the order makes sense.
> But somehow INFO is on the far side of FATAL?
>
> Again, not something to address in this patch, but I hope something we
> could maybe deal with in the longer term (perhaps along with fixing the
> weird "INFO is a warning from the user's perspective, but WARNING is
> generally an error" behavior).
>
> I also know that this is assigning WARN and IGNORE based on
> counting-by-one from ERROR, so it's correct. But I think it would be
> more obvious if you simply filled in the values manually, so a reader
> does not have to wonder why some are assigned and some are not.I had the same reaction, plus "Wow, we had FSCK_* constants in two different places and without colliding? Have we been lucky? Declaring it in one place, whether we use enum or not (as enum is not very useful in C as a type checking vehicle), makes a lot of sense but why does this come this late in the series, instead of being at the front as a trivial low-hanging fruit?"
Thanks.