]> git.ipfire.org Git - thirdparty/git.git/commitdiff
dir.h: refactor to no longer need to include cache.h
authorElijah Newren <newren@gmail.com>
Fri, 24 Feb 2023 00:09:31 +0000 (00:09 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 24 Feb 2023 01:25:29 +0000 (17:25 -0800)
Moving a few functions around allows us to make dir.h no longer need to
include cache.h.  This commit is best viewed with:
    git log -1 -p --color-moved

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
cache.h
dir.h
pathspec.h
statinfo.h [new file with mode: 0644]
trace2/tr2_sysenv.c

diff --git a/cache.h b/cache.h
index d0e105ec58ff549c7b51691b483beead4acf120b..fdb3125f00d9bbb396c354c4cd301ba0fc77e92f 100644 (file)
--- a/cache.h
+++ b/cache.h
 #include "pack-revindex.h"
 #include "hash.h"
 #include "path.h"
+#include "pathspec.h"
 #include "object.h"
 #include "oid-array.h"
 #include "repository.h"
+#include "statinfo.h"
 #include "mem-pool.h"
 
 typedef struct git_zstream {
@@ -119,26 +121,6 @@ struct cache_header {
 #define INDEX_FORMAT_LB 2
 #define INDEX_FORMAT_UB 4
 
-/*
- * The "cache_time" is just the low 32 bits of the
- * time. It doesn't matter if it overflows - we only
- * check it for equality in the 32 bits we save.
- */
-struct cache_time {
-       uint32_t sec;
-       uint32_t nsec;
-};
-
-struct stat_data {
-       struct cache_time sd_ctime;
-       struct cache_time sd_mtime;
-       unsigned int sd_dev;
-       unsigned int sd_ino;
-       unsigned int sd_uid;
-       unsigned int sd_gid;
-       unsigned int sd_size;
-};
-
 struct cache_entry {
        struct hashmap_entry ent;
        struct stat_data ce_stat_data;
@@ -294,6 +276,15 @@ static inline unsigned int canon_mode(unsigned int mode)
        return S_IFGITLINK;
 }
 
+static inline int ce_path_match(struct index_state *istate,
+                               const struct cache_entry *ce,
+                               const struct pathspec *pathspec,
+                               char *seen)
+{
+       return match_pathspec(istate, pathspec, ce->name, ce_namelen(ce), 0, seen,
+                             S_ISDIR(ce->ce_mode) || S_ISGITLINK(ce->ce_mode));
+}
+
 #define cache_entry_size(len) (offsetof(struct cache_entry,name) + (len) + 1)
 
 #define SOMETHING_CHANGED      (1 << 0) /* unclassified changes go here */
diff --git a/dir.h b/dir.h
index 8acfc044181ca2f47aa39bef25713b1a811e987c..fc4386ae50e94f0d6ab752e412adc2b54f8d31ff 100644 (file)
--- a/dir.h
+++ b/dir.h
@@ -1,8 +1,9 @@
 #ifndef DIR_H
 #define DIR_H
 
-#include "cache.h"
 #include "hashmap.h"
+#include "pathspec.h"
+#include "statinfo.h"
 #include "strbuf.h"
 
 /**
@@ -363,10 +364,6 @@ int count_slashes(const char *s);
 int simple_length(const char *match);
 int no_wildcard(const char *string);
 char *common_prefix(const struct pathspec *pathspec);
-int match_pathspec(struct index_state *istate,
-                  const struct pathspec *pathspec,
-                  const char *name, int namelen,
-                  int prefix, char *seen, int is_dir);
 int report_path_error(const char *ps_matched, const struct pathspec *pathspec);
 int within_depth(const char *name, int namelen, int depth, int max_depth);
 
@@ -533,15 +530,6 @@ int submodule_path_match(struct index_state *istate,
                         const char *submodule_name,
                         char *seen);
 
-static inline int ce_path_match(struct index_state *istate,
-                               const struct cache_entry *ce,
-                               const struct pathspec *pathspec,
-                               char *seen)
-{
-       return match_pathspec(istate, pathspec, ce->name, ce_namelen(ce), 0, seen,
-                             S_ISDIR(ce->ce_mode) || S_ISGITLINK(ce->ce_mode));
-}
-
 static inline int dir_path_match(struct index_state *istate,
                                 const struct dir_entry *ent,
                                 const struct pathspec *pathspec,
index 41f6adfbb421fee745e3717ffd57ff92acfc82b1..a5b38e0907a9b8c498d643653d445ed7cd71fe02 100644 (file)
@@ -171,6 +171,11 @@ int match_pathspec_attrs(struct index_state *istate,
                         const char *name, int namelen,
                         const struct pathspec_item *item);
 
+int match_pathspec(struct index_state *istate,
+                  const struct pathspec *pathspec,
+                  const char *name, int namelen,
+                  int prefix, char *seen, int is_dir);
+
 /*
  * Determine whether a pathspec will match only entire index entries (non-sparse
  * files and/or entire sparse directories). If the pathspec has the potential to
diff --git a/statinfo.h b/statinfo.h
new file mode 100644 (file)
index 0000000..e49e305
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef STATINFO_H
+#define STATINFO_H
+
+/*
+ * The "cache_time" is just the low 32 bits of the
+ * time. It doesn't matter if it overflows - we only
+ * check it for equality in the 32 bits we save.
+ */
+struct cache_time {
+       uint32_t sec;
+       uint32_t nsec;
+};
+
+struct stat_data {
+       struct cache_time sd_ctime;
+       struct cache_time sd_mtime;
+       unsigned int sd_dev;
+       unsigned int sd_ino;
+       unsigned int sd_uid;
+       unsigned int sd_gid;
+       unsigned int sd_size;
+};
+
+#endif
index a380dcf9105e8d7b0022b34508ca384923b2fcd6..069786cb9274f6ab25324386730962503b834525 100644 (file)
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
 #include "config.h"
 #include "dir.h"
 #include "tr2_sysenv.h"