Browse Source

move load_ref_decorations() to log-tree.c and export it

log-tree.c is the ideal place for load_ref_decorations() and its
helper functions to live in, because the variable name_decoration
they're operating on is already located there, so move them thither.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
René Scharfe 17 years ago committed by Junio C Hamano
parent
commit
cab4feb67d
  1. 35
      builtin-log.c
  2. 36
      log-tree.c
  3. 1
      log-tree.h

35
builtin-log.c

@ -14,7 +14,6 @@ @@ -14,7 +14,6 @@
#include "tag.h"
#include "reflog-walk.h"
#include "patch-ids.h"
#include "refs.h"
#include "run-command.h"
#include "shortlog.h"

@ -25,40 +24,6 @@ static int default_show_root = 1; @@ -25,40 +24,6 @@ static int default_show_root = 1;
static const char *fmt_patch_subject_prefix = "PATCH";
static const char *fmt_pretty;

static void add_name_decoration(const char *prefix, const char *name, struct object *obj)
{
int plen = strlen(prefix);
int nlen = strlen(name);
struct name_decoration *res = xmalloc(sizeof(struct name_decoration) + plen + nlen);
memcpy(res->name, prefix, plen);
memcpy(res->name + plen, name, nlen + 1);
res->next = add_decoration(&name_decoration, obj, res);
}

static int add_ref_decoration(const char *refname, const unsigned char *sha1, int flags, void *cb_data)
{
struct object *obj = parse_object(sha1);
if (!obj)
return 0;
add_name_decoration("", refname, obj);
while (obj->type == OBJ_TAG) {
obj = ((struct tag *)obj)->tagged;
if (!obj)
break;
add_name_decoration("tag: ", refname, obj);
}
return 0;
}

void load_ref_decorations(void)
{
static int loaded;
if (!loaded) {
loaded = 1;
for_each_ref(add_ref_decoration, NULL);
}
}

static void cmd_log_init(int argc, const char **argv, const char *prefix,
struct rev_info *rev)
{

36
log-tree.c

@ -1,12 +1,48 @@ @@ -1,12 +1,48 @@
#include "cache.h"
#include "diff.h"
#include "commit.h"
#include "tag.h"
#include "graph.h"
#include "log-tree.h"
#include "reflog-walk.h"
#include "refs.h"

struct decoration name_decoration = { "object names" };

static void add_name_decoration(const char *prefix, const char *name, struct object *obj)
{
int plen = strlen(prefix);
int nlen = strlen(name);
struct name_decoration *res = xmalloc(sizeof(struct name_decoration) + plen + nlen);
memcpy(res->name, prefix, plen);
memcpy(res->name + plen, name, nlen + 1);
res->next = add_decoration(&name_decoration, obj, res);
}

static int add_ref_decoration(const char *refname, const unsigned char *sha1, int flags, void *cb_data)
{
struct object *obj = parse_object(sha1);
if (!obj)
return 0;
add_name_decoration("", refname, obj);
while (obj->type == OBJ_TAG) {
obj = ((struct tag *)obj)->tagged;
if (!obj)
break;
add_name_decoration("tag: ", refname, obj);
}
return 0;
}

void load_ref_decorations(void)
{
static int loaded;
if (!loaded) {
loaded = 1;
for_each_ref(add_ref_decoration, NULL);
}
}

static void show_parents(struct commit *commit, int abbrev)
{
struct commit_list *p;

1
log-tree.h

@ -17,5 +17,6 @@ void log_write_email_headers(struct rev_info *opt, const char *name, @@ -17,5 +17,6 @@ void log_write_email_headers(struct rev_info *opt, const char *name,
const char **subject_p,
const char **extra_headers_p,
int *need_8bit_cte_p);
void load_ref_decorations(void);

#endif

Loading…
Cancel
Save