Skip to content

Commit 83eb080

Browse files
bk2204gitster
authored andcommitted
builtin/mktree: convert to struct object_id
Convert this file to use struct object_id. Modify one use of get_sha1_hex into parse_oid_hex; this is safe since we get the data from a strbuf. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent ef7b519 commit 83eb080

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

builtin/mktree.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010

1111
static struct treeent {
1212
unsigned mode;
13-
unsigned char sha1[20];
13+
struct object_id oid;
1414
int len;
1515
char name[FLEX_ARRAY];
1616
} **entries;
1717
static int alloc, used;
1818

19-
static void append_to_tree(unsigned mode, unsigned char *sha1, char *path)
19+
static void append_to_tree(unsigned mode, struct object_id *oid, char *path)
2020
{
2121
struct treeent *ent;
2222
size_t len = strlen(path);
@@ -26,7 +26,7 @@ static void append_to_tree(unsigned mode, unsigned char *sha1, char *path)
2626
FLEX_ALLOC_MEM(ent, name, path, len);
2727
ent->mode = mode;
2828
ent->len = len;
29-
hashcpy(ent->sha1, sha1);
29+
oidcpy(&ent->oid, oid);
3030

3131
ALLOC_GROW(entries, used + 1, alloc);
3232
entries[used++] = ent;
@@ -54,7 +54,7 @@ static void write_tree(struct object_id *oid)
5454
for (i = 0; i < used; i++) {
5555
struct treeent *ent = entries[i];
5656
strbuf_addf(&buf, "%o %s%c", ent->mode, ent->name, '\0');
57-
strbuf_add(&buf, ent->sha1, 20);
57+
strbuf_add(&buf, ent->oid.hash, the_hash_algo->rawsz);
5858
}
5959

6060
write_object_file(buf.buf, buf.len, tree_type, oid);
@@ -69,11 +69,12 @@ static const char *mktree_usage[] = {
6969
static void mktree_line(char *buf, size_t len, int nul_term_line, int allow_missing)
7070
{
7171
char *ptr, *ntr;
72+
const char *p;
7273
unsigned mode;
7374
enum object_type mode_type; /* object type derived from mode */
7475
enum object_type obj_type; /* object type derived from sha */
7576
char *path, *to_free = NULL;
76-
unsigned char sha1[20];
77+
struct object_id oid;
7778

7879
ptr = buf;
7980
/*
@@ -85,9 +86,8 @@ static void mktree_line(char *buf, size_t len, int nul_term_line, int allow_miss
8586
die("input format error: %s", buf);
8687
ptr = ntr + 1; /* type */
8788
ntr = strchr(ptr, ' ');
88-
if (!ntr || buf + len <= ntr + 40 ||
89-
ntr[41] != '\t' ||
90-
get_sha1_hex(ntr + 1, sha1))
89+
if (!ntr || parse_oid_hex(ntr + 1, &oid, &p) ||
90+
*p != '\t')
9191
die("input format error: %s", buf);
9292

9393
/* It is perfectly normal if we do not have a commit from a submodule */
@@ -116,12 +116,12 @@ static void mktree_line(char *buf, size_t len, int nul_term_line, int allow_miss
116116
}
117117

118118
/* Check the type of object identified by sha1 */
119-
obj_type = sha1_object_info(sha1, NULL);
119+
obj_type = sha1_object_info(oid.hash, NULL);
120120
if (obj_type < 0) {
121121
if (allow_missing) {
122122
; /* no problem - missing objects are presumed to be of the right type */
123123
} else {
124-
die("entry '%s' object %s is unavailable", path, sha1_to_hex(sha1));
124+
die("entry '%s' object %s is unavailable", path, oid_to_hex(&oid));
125125
}
126126
} else {
127127
if (obj_type != mode_type) {
@@ -131,11 +131,11 @@ static void mktree_line(char *buf, size_t len, int nul_term_line, int allow_miss
131131
* because the new tree entry will never be correct.
132132
*/
133133
die("entry '%s' object %s is a %s but specified type was (%s)",
134-
path, sha1_to_hex(sha1), type_name(obj_type), type_name(mode_type));
134+
path, oid_to_hex(&oid), type_name(obj_type), type_name(mode_type));
135135
}
136136
}
137137

138-
append_to_tree(mode, sha1, path);
138+
append_to_tree(mode, &oid, path);
139139
free(to_free);
140140
}
141141

0 commit comments

Comments
 (0)