mirror of
https://github.com/git/git.git
synced 2024-11-27 12:03:55 +08:00
sha1_file: allow stat_sha1_file to handle arbitrary repositories
Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
a68377b5de
commit
d2607fa053
11
sha1_file.c
11
sha1_file.c
@ -867,23 +867,22 @@ int git_open_cloexec(const char *name, int flags)
|
||||
* Note that it may point to static storage and is only valid until another
|
||||
* call to sha1_file_name(), etc.
|
||||
*/
|
||||
#define stat_sha1_file(r, s, st, p) stat_sha1_file_##r(s, st, p)
|
||||
static int stat_sha1_file_the_repository(const unsigned char *sha1,
|
||||
struct stat *st, const char **path)
|
||||
static int stat_sha1_file(struct repository *r, const unsigned char *sha1,
|
||||
struct stat *st, const char **path)
|
||||
{
|
||||
struct alternate_object_database *alt;
|
||||
static struct strbuf buf = STRBUF_INIT;
|
||||
|
||||
strbuf_reset(&buf);
|
||||
sha1_file_name(the_repository, &buf, sha1);
|
||||
sha1_file_name(r, &buf, sha1);
|
||||
*path = buf.buf;
|
||||
|
||||
if (!lstat(*path, st))
|
||||
return 0;
|
||||
|
||||
prepare_alt_odb(the_repository);
|
||||
prepare_alt_odb(r);
|
||||
errno = ENOENT;
|
||||
for (alt = the_repository->objects->alt_odb_list; alt; alt = alt->next) {
|
||||
for (alt = r->objects->alt_odb_list; alt; alt = alt->next) {
|
||||
*path = alt_sha1_path(alt, sha1);
|
||||
if (!lstat(*path, st))
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user