summaryrefslogtreecommitdiff
path: root/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/dir.c b/dir.c
index d637461da5..fd8aa7c40f 100644
--- a/dir.c
+++ b/dir.c
@@ -2730,11 +2730,8 @@ static struct untracked_cache_dir *validate_untracked_cache(struct dir_struct *d
return NULL;
}
- if (!dir->untracked->root) {
- const int len = sizeof(*dir->untracked->root);
- dir->untracked->root = xmalloc(len);
- memset(dir->untracked->root, 0, len);
- }
+ if (!dir->untracked->root)
+ FLEX_ALLOC_STR(dir->untracked->root, name, "");
/* Validate $GIT_DIR/info/exclude and core.excludesfile */
root = dir->untracked->root;
@@ -2998,6 +2995,23 @@ void setup_standard_excludes(struct dir_struct *dir)
}
}
+char *get_sparse_checkout_filename(void)
+{
+ return git_pathdup("info/sparse-checkout");
+}
+
+int get_sparse_checkout_patterns(struct pattern_list *pl)
+{
+ int res;
+ char *sparse_filename = get_sparse_checkout_filename();
+
+ pl->use_cone_patterns = core_sparse_checkout_cone;
+ res = add_patterns_from_file_to_list(sparse_filename, "", 0, pl, NULL);
+
+ free(sparse_filename);
+ return res;
+}
+
int remove_path(const char *name)
{
char *slash;