[PATCH 17/18] gc: replace local buffer with git_path
- From
Jeff King <peff@peff.net>
- Date
- Mar 28, 2017, 19:47 UTC
- Message-ID
- <20170328194703.jsvwdykdshzzas5y@sigill.intra.peff.net>
- In-Reply-To
- <20170328194255.vf7nfzzmmzxsbn36@sigill.intra.peff.net>
We probe the "17/" loose object directory for auto-gc, and use a local buffer to format the path. We can just use git_path() for this. It handles paths of any length (reducing our error handling). And because we feed the result straight to a system call, we can just use the static variant.
Note that git_path also knows the string "objects/" is special, and will replace it with git_object_directory() when necessary.
Another alternative would be to use sha1_file_name() for the pretend object "170000...", but that ends up being more hassle for no gain, as we have to truncate the final path component.
Signed-off-by: Jeff King <peff@peff.net> --- builtin/gc.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/builtin/gc.c b/builtin/gc.c index c2c61a57b..2daede782 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -135,8 +135,6 @@ static int too_many_loose_objects(void) * distributed, we can check only one and get a reasonable * estimate. */ - char path[PATH_MAX]; - const char *objdir = get_object_directory(); DIR *dir; struct dirent *ent; int auto_threshold; @@ -146,11 +144,7 @@ static int too_many_loose_objects(void) if (gc_auto_threshold <= 0) return 0; - if (sizeof(path) <= snprintf(path, sizeof(path), "%s/17", objdir)) { - warning(_("insanely long object directory %.*s"), 50, objdir); - return 0; - } - dir = opendir(path); + dir = opendir(git_path("objects/17")); if (!dir) return 0;
-- 2.12.2.845.g55fcf8b10