Thread (62 messages) 62 messages, 5 authors, 3d ago

Re: [PATCH v7 2/4] read-cache: pass 'repo' to 'ce_mode_from_stat()'

From: Tian Yuchen <hidden>
Date: 2026-07-20 10:12:41

On 7/20/26 17:52, SZEDER Gábor wrote:
On Mon, Jul 20, 2026 at 05:13:17PM +0800, Tian Yuchen wrote:
quoted
On 7/19/26 03:02, SZEDER Gábor wrote:
quoted
On Fri, Jul 17, 2026 at 02:35:57PM +0800, Tian Yuchen wrote:
quoted
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.:
quoted
quoted
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.
quoted
+					     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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help