show_object_with_name: simplify by using path_name()
[gitweb.git] / revision.c
index f24ead53d537b05d7819ce53b45b05a15ec60a96..6387068a5582f04811f97aab275bfcd2fcf5d756 100644 (file)
@@ -49,46 +49,18 @@ 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);
+       char *name = path_name(path, component);
+       char *p;
 
        fprintf(out, "%s ", oid_to_hex(&obj->oid));
-       show_path_truncated(out, &leaf);
+       for (p = name; *p && *p != '\n'; p++)
+               fputc(*p, out);
        fputc('\n', out);
+
+       free(name);
 }
 
 static void mark_blob_uninteresting(struct blob *blob)