From: Tian Yuchen Date: Mon, 20 Jul 2026 10:12:30 GMT Subject: Re: [PATCH v7 2/4] read-cache: pass 'repo' to 'ce_mode_from_stat()' Message-ID: <6407614a-156b-40e1-bf70-e54ce84427ad@malon.dev> In-Reply-To: On 7/20/26 17:52, SZEDER Gábor wrote: > On Mon, Jul 20, 2026 at 05:13:17PM +0800, Tian Yuchen wrote: >> On 7/19/26 03:02, SZEDER Gábor wrote: >>> On Fri, Jul 17, 2026 at 02:35:57PM +0800, Tian Yuchen wrote: >>>> diff --git a/read-cache.h b/read-cache.h >>>> index 043da1f1aa..94b8d3e547 100644 >>>> --- a/read-cache.h >>>> +++ b/read-cache.h >>>> @@ -4,15 +4,24 @@ >>>> #include "read-cache-ll.h" >>>> #include "object.h" >>>> #include "pathspec.h" >>>> +#include "environment.h" >>>> -static inline unsigned int ce_mode_from_stat(const struct cache_entry *ce, >>>> +/* >>>> + * Determine the appropriate index mode for a file based on its stat() >>>> + * information and the existing cache entry (if any). >>>> + * >>>> + * This function handles degradation for filesystems that lack >>>> + * symlink support or reliable executable bits. >>>> + */ >>>> +static inline unsigned int ce_mode_from_stat(struct repository *repo, >>> >>> This new parameter is not yet used in this function, which causes >>> compilation errors in all source files which include "read-cache.h" >>> when trying to build this commit using DEVELOPER=1, e.g.: > >>> I think the new parameter should be marked as UNUSED in this patch, >>> and then the UNUSED should be dropped in the next, where you start >>> using the parameter. >>> >>>> + const struct cache_entry *ce, >>>> unsigned int mode) >>>> { >>>> extern int trust_executable_bit, has_symlinks; >>>> - if (!has_symlinks && S_ISREG(mode) && >>>> + if (S_ISREG(mode) && !has_symlinks && >>>> ce && S_ISLNK(ce->ce_mode)) >>>> return ce->ce_mode; >>>> - if (!trust_executable_bit && S_ISREG(mode)) { >>>> + if (S_ISREG(mode) && !trust_executable_bit) { >>>> if (ce && S_ISREG(ce->ce_mode)) >>>> return ce->ce_mode; >>>> return create_ce_mode(0666); >>>> -- >>>> 2.43.0 >>>> >> >> But 'USUSED' cannot be used here since the corresponding header >> (git-compat-util.h, or more specifically compat/posix.h) is not included. > > UNUSED _can_ be used here, because: > > - This is a header file, so it's not supposed to be compiled on its > own. > - All C source files including this header file must start with > including "git-compat-util.h", so by the time they include > "read-cache.h", the UNUSED macro is already defined. > I see. Thanks, yuchen