fsck: give the error function a chance to see the fsck_options
We will need this in the next commit, where fsck will be taught to optionally name the objects when reporting issues about them. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7b35efd734
commit
1cd772cc41
@ -82,7 +82,8 @@ static int objerror(struct object *obj, const char *err)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fsck_error_func(struct object *obj, int type, const char *message)
|
static int fsck_error_func(struct fsck_options *o,
|
||||||
|
struct object *obj, int type, const char *message)
|
||||||
{
|
{
|
||||||
objreport(obj, (type == FSCK_WARN) ? "warning" : "error", message);
|
objreport(obj, (type == FSCK_WARN) ? "warning" : "error", message);
|
||||||
return (type == FSCK_WARN) ? 0 : 1;
|
return (type == FSCK_WARN) ? 0 : 1;
|
||||||
|
5
fsck.c
5
fsck.c
@ -291,7 +291,7 @@ 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(object, msg_type, sb.buf);
|
result = options->error_func(options, object, msg_type, sb.buf);
|
||||||
strbuf_release(&sb);
|
strbuf_release(&sb);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
@ -897,7 +897,8 @@ int fsck_object(struct object *obj, void *data, unsigned long size,
|
|||||||
obj->type);
|
obj->type);
|
||||||
}
|
}
|
||||||
|
|
||||||
int fsck_error_function(struct object *obj, int msg_type, const char *message)
|
int fsck_error_function(struct fsck_options *o,
|
||||||
|
struct object *obj, int msg_type, const char *message)
|
||||||
{
|
{
|
||||||
if (msg_type == FSCK_WARN) {
|
if (msg_type == FSCK_WARN) {
|
||||||
warning("object %s: %s", oid_to_hex(&obj->oid), message);
|
warning("object %s: %s", oid_to_hex(&obj->oid), message);
|
||||||
|
6
fsck.h
6
fsck.h
@ -23,9 +23,11 @@ int is_valid_msg_type(const char *msg_id, const char *msg_type);
|
|||||||
typedef int (*fsck_walk_func)(struct object *obj, int type, void *data, struct fsck_options *options);
|
typedef int (*fsck_walk_func)(struct object *obj, int type, void *data, struct fsck_options *options);
|
||||||
|
|
||||||
/* 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 object *obj, int type, const char *message);
|
typedef int (*fsck_error)(struct fsck_options *o,
|
||||||
|
struct object *obj, int type, const char *message);
|
||||||
|
|
||||||
int fsck_error_function(struct object *obj, int type, const char *message);
|
int fsck_error_function(struct fsck_options *o,
|
||||||
|
struct object *obj, int type, const char *message);
|
||||||
|
|
||||||
struct fsck_options {
|
struct fsck_options {
|
||||||
fsck_walk_func walk;
|
fsck_walk_func walk;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user