diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-10-05 12:36:19 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-10-05 12:36:19 -0700 |
commit | f817f2fbb5e3dbe49be446438838a11b192c2715 (patch) | |
tree | 631f27ce82032851689e962945ce2fa5c5b06a9e /revision.c | |
parent | cd4093b6036af696310b1867e9e916485d53ccf4 (diff) | |
parent | beba25abbc34a07e07ce933210cda15202ef76cc (diff) | |
download | git-f817f2fbb5e3dbe49be446438838a11b192c2715.tar.gz git-f817f2fbb5e3dbe49be446438838a11b192c2715.tar.xz |
Merge branch 'jc/traverse-commit-list'
* jc/traverse-commit-list:
revision.c: update show_object_with_name() without using malloc()
revision.c: add show_object_with_name() helper function
rev-list: fix finish_object() call
Diffstat (limited to 'revision.c')
-rw-r--r-- | revision.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/revision.c b/revision.c index 102456b00..19a493bf6 100644 --- a/revision.c +++ b/revision.c @@ -40,6 +40,47 @@ char *path_name(const struct name_path *path, const char *name) return n; } +static int show_path_component_truncated(FILE *out, const char *name, int len) +{ + int cnt; + for (cnt = 0; cnt < len; cnt++) { + int ch = name[cnt]; + if (!ch || ch == '\n') + return -1; + fputc(ch, out); + } + return len; +} + +static int show_path_truncated(FILE *out, const struct name_path *path) +{ + int emitted, ours; + + if (!path) + return 0; + emitted = show_path_truncated(out, path->up); + if (emitted < 0) + return emitted; + if (emitted) + fputc('/', out); + ours = show_path_component_truncated(out, path->elem, path->elem_len); + if (ours < 0) + return ours; + return ours || emitted; +} + +void show_object_with_name(FILE *out, struct object *obj, const struct name_path *path, const char *component) +{ + struct name_path leaf; + leaf.up = (struct name_path *)path; + leaf.elem = component; + leaf.elem_len = strlen(component); + + fprintf(out, "%s ", sha1_to_hex(obj->sha1)); + show_path_truncated(out, &leaf); + fputc('\n', out); +} + void add_object(struct object *obj, struct object_array *p, struct name_path *path, |