1010
1111static 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 ;
1717static 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[] = {
6969static 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