Subject: Re: [PATCH v2] wrapper: NetBSD gives EFTYPE and FreeBSD gives EMFILE where POSIX uses ELOOP

From: Junio C Hamano <[email-masked]>
Date: Mon, 05 May 2025 13:41:21 -0700

Patrick Steinhardt <[email-masked]> writes:

>> +#ifdef __NetBSD__
>> +#define SYMLINK_ERRNO EFTYPE
>> +#elif defined(__FreeBSD__)
>> +#define SYMLINK_ERRNO EMLINK
>> +#endif
>
> Nit, to make this a bit easier to read: our style guide says that nested
> preprocessor directives should be indented by one spaces. So this would
> become:
>
>     # ifdef __NetBSD__
>     #  define SYMLINK_ERRNO EFTYPE
>     # elif defined(__FreeBSD__)
>     #  define SYMLINK_ERRNO EMLINK
>     # endif
>
> Note that the `ifdef` itself would also be indented because we already
> have a surrounding `#ifdef O_NOFOLLOW`.

Hmph, it does look easier to read.  I think we used to have some
outlier files that indented CPP directives by prefixing spaces in
front of the whole line, but these days we standardized to express
the indentation by inserting spaces immediately after '#' that
always sit at the beginning of line, so what you showed here is a
good example to mimic.

Thanks.

>
>> +#if SYMLINK_ERRNO
>> +	if (ret < 0 && errno == SYMLINK_ERRNO) {
>> +		errno = ELOOP;
>> +		return -1;
>> +	}
>> +#undef SYMLINK_ERRNO
>> +#endif
>
> These three preprocessor defines should be indented, as well.
>
> Patrick