From aa9f12ff8ea3fe215ef0a819cdd193e3088d9b86 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 24 Jan 2024 12:51:49 +0100 Subject: Find files via git-grep instead of git-ls-files It would be preferable to use git-ls-files as it is more suited for our purposes, however git-grep allows us to filter out binary files. It makes no sense to regex match in a binary file, so this is crucial. --- src/grab.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/grab.c') diff --git a/src/grab.c b/src/grab.c index 601d81e..300a787 100644 --- a/src/grab.c +++ b/src/grab.c @@ -804,7 +804,7 @@ getfstream(int argc, char *argv[argc]) case -1: die("fork"); case 0:; - size_t len = argc + 5; + size_t len = argc + 6; char **args; close(fds[FD_R]); @@ -815,14 +815,15 @@ getfstream(int argc, char *argv[argc]) if (!(args = malloc(len * sizeof(char *)))) die("malloc"); args[0] = "git"; - args[1] = "ls-files"; - args[2] = "-z"; - args[3] = "--"; - memcpy(args + 4, argv, argc * sizeof(char *)); + args[1] = "grep"; + args[2] = "--cached"; + args[3] = "-Ilz"; + args[4] = ""; + memcpy(args + 5, argv, argc * sizeof(char *)); args[len - 1] = nullptr; execvp("git", args); - die("execvp: git ls-files -z"); + die("execvp: git grep --cached -Ilz ''"); } close(fds[FD_W]); -- cgit v1.2.3