fsck: only provide oid/type in fsck_error callback
None of the callbacks actually care about having a "struct object"; they're happy with just the oid and type information. So let's give ourselves more flexibility to avoid having a "struct object" by just passing the broken-down fields. Note that the callback already takes a "type" field for the fsck message type. We'll rename that to "msg_type" (and use "object_type" for the object type) to make the distinction explicit. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Jeff King
					Jeff King
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							82ef89b318
						
					
				
				
					commit
					5afc4b1dc6
				
			| @ -104,23 +104,26 @@ static int objerror(struct object *obj, const char *err) | |||||||
| } | } | ||||||
|  |  | ||||||
| static int fsck_error_func(struct fsck_options *o, | static int fsck_error_func(struct fsck_options *o, | ||||||
| 	struct object *obj, int type, const char *message) | 			   const struct object_id *oid, | ||||||
|  | 			   enum object_type object_type, | ||||||
|  | 			   int msg_type, const char *message) | ||||||
| { | { | ||||||
| 	switch (type) { | 	switch (msg_type) { | ||||||
| 	case FSCK_WARN: | 	case FSCK_WARN: | ||||||
| 		/* TRANSLATORS: e.g. warning in tree 01bfda: <more explanation> */ | 		/* TRANSLATORS: e.g. warning in tree 01bfda: <more explanation> */ | ||||||
| 		fprintf_ln(stderr, _("warning in %s %s: %s"), | 		fprintf_ln(stderr, _("warning in %s %s: %s"), | ||||||
| 			   printable_type(&obj->oid, obj->type), | 			   printable_type(oid, object_type), | ||||||
| 			   describe_object(&obj->oid), message); | 			   describe_object(oid), message); | ||||||
| 		return 0; | 		return 0; | ||||||
| 	case FSCK_ERROR: | 	case FSCK_ERROR: | ||||||
| 		/* TRANSLATORS: e.g. error in tree 01bfda: <more explanation> */ | 		/* TRANSLATORS: e.g. error in tree 01bfda: <more explanation> */ | ||||||
| 		fprintf_ln(stderr, _("error in %s %s: %s"), | 		fprintf_ln(stderr, _("error in %s %s: %s"), | ||||||
| 			   printable_type(&obj->oid, obj->type), | 			   printable_type(oid, object_type), | ||||||
| 			   describe_object(&obj->oid), message); | 			   describe_object(oid), message); | ||||||
| 		return 1; | 		return 1; | ||||||
| 	default: | 	default: | ||||||
| 		BUG("%d (FSCK_IGNORE?) should never trigger this callback", type); | 		BUG("%d (FSCK_IGNORE?) should never trigger this callback", | ||||||
|  | 		    msg_type); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								fsck.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								fsck.c
									
									
									
									
									
								
							| @ -305,7 +305,8 @@ static int report(struct fsck_options *options, struct object *object, | |||||||
|  |  | ||||||
| 	va_start(ap, fmt); | 	va_start(ap, fmt); | ||||||
| 	strbuf_vaddf(&sb, fmt, ap); | 	strbuf_vaddf(&sb, fmt, ap); | ||||||
| 	result = options->error_func(options, object, msg_type, sb.buf); | 	result = options->error_func(options, &object->oid, object->type, | ||||||
|  | 				     msg_type, sb.buf); | ||||||
| 	strbuf_release(&sb); | 	strbuf_release(&sb); | ||||||
| 	va_end(ap); | 	va_end(ap); | ||||||
|  |  | ||||||
| @ -983,13 +984,15 @@ int fsck_object(struct object *obj, void *data, unsigned long size, | |||||||
| } | } | ||||||
|  |  | ||||||
| int fsck_error_function(struct fsck_options *o, | int fsck_error_function(struct fsck_options *o, | ||||||
| 	struct object *obj, int msg_type, const char *message) | 			const struct object_id *oid, | ||||||
|  | 			enum object_type object_type, | ||||||
|  | 			int msg_type, const char *message) | ||||||
| { | { | ||||||
| 	if (msg_type == FSCK_WARN) { | 	if (msg_type == FSCK_WARN) { | ||||||
| 		warning("object %s: %s", fsck_describe_object(o, &obj->oid), message); | 		warning("object %s: %s", fsck_describe_object(o, oid), message); | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| 	error("object %s: %s", fsck_describe_object(o, &obj->oid), message); | 	error("object %s: %s", fsck_describe_object(o, oid), message); | ||||||
| 	return 1; | 	return 1; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								fsck.h
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								fsck.h
									
									
									
									
									
								
							| @ -27,10 +27,12 @@ typedef int (*fsck_walk_func)(struct object *obj, int type, void *data, struct f | |||||||
|  |  | ||||||
| /* callback for fsck_object, type is FSCK_ERROR or FSCK_WARN */ | /* callback for fsck_object, type is FSCK_ERROR or FSCK_WARN */ | ||||||
| typedef int (*fsck_error)(struct fsck_options *o, | typedef int (*fsck_error)(struct fsck_options *o, | ||||||
| 	struct object *obj, int type, const char *message); | 			  const struct object_id *oid, enum object_type object_type, | ||||||
|  | 			  int msg_type, const char *message); | ||||||
|  |  | ||||||
| int fsck_error_function(struct fsck_options *o, | int fsck_error_function(struct fsck_options *o, | ||||||
| 	struct object *obj, int type, const char *message); | 			const struct object_id *oid, enum object_type object_type, | ||||||
|  | 			int msg_type, const char *message); | ||||||
|  |  | ||||||
| struct fsck_options { | struct fsck_options { | ||||||
| 	fsck_walk_func walk; | 	fsck_walk_func walk; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user