git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [BUG] Non-portable Construct Introduced in diagnose.c (dirent) at v2.38.0-rc0

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 17, 2022, 00:46 UTC
Message-ID
<xmqqtu56eskk.fsf@gitster.g>
In-Reply-To
<5d02d3b8-dc79-a2d8-f5e1-129d2228ff23@github.com>
Victoria Dye <vdye@github.com> writes:
Show 12 quoted lines
> rsbecker@nexbridge.com wrote:
>> The dirent d_type field is not available on every system. This was
>> introduced at 2.38.0-rc0 in diagnose.c
>> 
>> diagnose.c, line 79: error(1565): struct "dirent" has no field "d_type"
>> 
>>   		    e->d_type == DT_DIR && strlen(e->d_name) == 2 &&
>> 
>> (3 more issues in diagnose exist of this form).
>> 
>> The code should use the  NO_D_TYPE_IN_DIRENT knob to detect whether this is
>> an existing field as defined in cache.h.

Also, even if d_type member exists in the dirent struct, the value can be DT_UNKNOWN and the code should be prepared to fall back to do lstat() on the path in such a case.

dir.c::resolve_dtype() can be looked at for inspiration but only for inspiration and not for copying (because it is about tracked working tree paths, the function does a lot more than what diagnose.c wants to).

> Apologies for missing that, I'll try to send a patch fixing it either later
> today or sometime Monday.
Thanks, both of you.
Previous: rsbecker@nexbridge.com
Message 4 of 4 in “[BUG] Non-portable Construct Introduced in diagnose.c (dirent) at v2.38.0-rc0”
  1. rsbecker@nexbridge.comSep 16, 2022
  2. Victoria DyeSep 16, 2022
  3. rsbecker@nexbridge.comSep 16, 2022
  4. Junio C HamanoSep 17, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.