object-file: inline calls to read_object()
Since read_object() is these days just a thin wrapper around
oid_object_info_extended(), and since it only has two callers, let's
just inline those calls. This has a few positive outcomes:
  - it's a net reduction in source code lines
  - even though the callers end up with a few extra lines, they're now
    more flexible and can use object_info flags directly. So no more
    need to convert die_if_corrupt between parameter/flag, and we can
    ask for lookup replacement with a flag rather than doing it
    ourselves.
  - there's one fewer function in an already crowded namespace (e.g.,
    the difference between read_object() and read_object_file() was not
    immediately obvious; now we only have one of them).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
				maint
			
			
		
							parent
							
								
									4dbebc36b0
								
							
						
					
					
						commit
						b25562e63f
					
				|  | @ -1671,23 +1671,6 @@ int oid_object_info(struct repository *r, | |||
| 	return type; | ||||
| } | ||||
|  | ||||
| static void *read_object(struct repository *r, | ||||
| 			 const struct object_id *oid, enum object_type *type, | ||||
| 			 unsigned long *size, | ||||
| 			 int die_if_corrupt) | ||||
| { | ||||
| 	struct object_info oi = OBJECT_INFO_INIT; | ||||
| 	void *content; | ||||
| 	oi.typep = type; | ||||
| 	oi.sizep = size; | ||||
| 	oi.contentp = &content; | ||||
|  | ||||
| 	if (oid_object_info_extended(r, oid, &oi, die_if_corrupt | ||||
| 				     ? OBJECT_INFO_DIE_IF_CORRUPT : 0) < 0) | ||||
| 		return NULL; | ||||
| 	return content; | ||||
| } | ||||
|  | ||||
| int pretend_object_file(void *buf, unsigned long len, enum object_type type, | ||||
| 			struct object_id *oid) | ||||
| { | ||||
|  | @ -1709,8 +1692,8 @@ int pretend_object_file(void *buf, unsigned long len, enum object_type type, | |||
|  | ||||
| /* | ||||
|  * This function dies on corrupt objects; the callers who want to | ||||
|  * deal with them should arrange to call read_object() and give error | ||||
|  * messages themselves. | ||||
|  * deal with them should arrange to call oid_object_info_extended() and give | ||||
|  * error messages themselves. | ||||
|  */ | ||||
| void *read_object_file_extended(struct repository *r, | ||||
| 				const struct object_id *oid, | ||||
|  | @ -1718,16 +1701,19 @@ void *read_object_file_extended(struct repository *r, | |||
| 				unsigned long *size, | ||||
| 				int lookup_replace) | ||||
| { | ||||
| 	struct object_info oi = OBJECT_INFO_INIT; | ||||
| 	unsigned flags = OBJECT_INFO_DIE_IF_CORRUPT; | ||||
| 	void *data; | ||||
| 	const struct object_id *repl = lookup_replace ? | ||||
| 		lookup_replace_object(r, oid) : oid; | ||||
|  | ||||
| 	errno = 0; | ||||
| 	data = read_object(r, repl, type, size, 1); | ||||
| 	if (data) | ||||
| 		return data; | ||||
|  | ||||
| 	oi.typep = type; | ||||
| 	oi.sizep = size; | ||||
| 	oi.contentp = &data; | ||||
| 	if (lookup_replace) | ||||
| 		flags |= OBJECT_INFO_LOOKUP_REPLACE; | ||||
| 	if (oid_object_info_extended(r, oid, &oi, flags)) | ||||
| 	    return NULL; | ||||
|  | ||||
| 	return data; | ||||
| } | ||||
|  | ||||
| void *read_object_with_reference(struct repository *r, | ||||
|  | @ -2255,6 +2241,7 @@ int force_object_loose(const struct object_id *oid, time_t mtime) | |||
| { | ||||
| 	void *buf; | ||||
| 	unsigned long len; | ||||
| 	struct object_info oi = OBJECT_INFO_INIT; | ||||
| 	enum object_type type; | ||||
| 	char hdr[MAX_HEADER_LEN]; | ||||
| 	int hdrlen; | ||||
|  | @ -2262,8 +2249,10 @@ int force_object_loose(const struct object_id *oid, time_t mtime) | |||
|  | ||||
| 	if (has_loose_object(oid)) | ||||
| 		return 0; | ||||
| 	buf = read_object(the_repository, oid, &type, &len, 0); | ||||
| 	if (!buf) | ||||
| 	oi.typep = &type; | ||||
| 	oi.sizep = &len; | ||||
| 	oi.contentp = &buf; | ||||
| 	if (oid_object_info_extended(the_repository, oid, &oi, 0)) | ||||
| 		return error(_("cannot read object for %s"), oid_to_hex(oid)); | ||||
| 	hdrlen = format_object_header(hdr, sizeof(hdr), type, len); | ||||
| 	ret = write_loose_object(oid, hdr, hdrlen, buf, len, mtime, 0); | ||||
|  |  | |||
|  | @ -358,7 +358,7 @@ void assert_oid_type(const struct object_id *oid, enum object_type expect); | |||
| /* | ||||
|  * Enabling the object read lock allows multiple threads to safely call the | ||||
|  * following functions in parallel: repo_read_object_file(), read_object_file(), | ||||
|  * read_object_file_extended(), read_object_with_reference(), read_object(), | ||||
|  * read_object_file_extended(), read_object_with_reference(), | ||||
|  * oid_object_info() and oid_object_info_extended(). | ||||
|  * | ||||
|  * obj_read_lock() and obj_read_unlock() may also be used to protect other | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Jeff King
						Jeff King