diff: support custom callbacks for output
Users can request the DIFF_FORMAT_CALLBACK output format to get a callback consisting of the whole diff_queue_struct. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
2878836c50
commit
0424558190
3
diff.c
3
diff.c
@ -2587,6 +2587,9 @@ void diff_flush(struct diff_options *options)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (output_format & DIFF_FORMAT_CALLBACK)
|
||||||
|
options->format_callback(q, options, options->format_callback_data);
|
||||||
|
|
||||||
for (i = 0; i < q->nr; i++)
|
for (i = 0; i < q->nr; i++)
|
||||||
diff_free_filepair(q->queue[i]);
|
diff_free_filepair(q->queue[i]);
|
||||||
free_queue:
|
free_queue:
|
||||||
|
8
diff.h
8
diff.h
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
struct rev_info;
|
struct rev_info;
|
||||||
struct diff_options;
|
struct diff_options;
|
||||||
|
struct diff_queue_struct;
|
||||||
|
|
||||||
typedef void (*change_fn_t)(struct diff_options *options,
|
typedef void (*change_fn_t)(struct diff_options *options,
|
||||||
unsigned old_mode, unsigned new_mode,
|
unsigned old_mode, unsigned new_mode,
|
||||||
@ -20,6 +21,9 @@ typedef void (*add_remove_fn_t)(struct diff_options *options,
|
|||||||
const unsigned char *sha1,
|
const unsigned char *sha1,
|
||||||
const char *base, const char *path);
|
const char *base, const char *path);
|
||||||
|
|
||||||
|
typedef void (*diff_format_fn_t)(struct diff_queue_struct *q,
|
||||||
|
struct diff_options *options, void *data);
|
||||||
|
|
||||||
#define DIFF_FORMAT_RAW 0x0001
|
#define DIFF_FORMAT_RAW 0x0001
|
||||||
#define DIFF_FORMAT_DIFFSTAT 0x0002
|
#define DIFF_FORMAT_DIFFSTAT 0x0002
|
||||||
#define DIFF_FORMAT_SUMMARY 0x0004
|
#define DIFF_FORMAT_SUMMARY 0x0004
|
||||||
@ -35,6 +39,8 @@ typedef void (*add_remove_fn_t)(struct diff_options *options,
|
|||||||
*/
|
*/
|
||||||
#define DIFF_FORMAT_NO_OUTPUT 0x0080
|
#define DIFF_FORMAT_NO_OUTPUT 0x0080
|
||||||
|
|
||||||
|
#define DIFF_FORMAT_CALLBACK 0x0100
|
||||||
|
|
||||||
struct diff_options {
|
struct diff_options {
|
||||||
const char *filter;
|
const char *filter;
|
||||||
const char *orderfile;
|
const char *orderfile;
|
||||||
@ -68,6 +74,8 @@ struct diff_options {
|
|||||||
int *pathlens;
|
int *pathlens;
|
||||||
change_fn_t change;
|
change_fn_t change;
|
||||||
add_remove_fn_t add_remove;
|
add_remove_fn_t add_remove;
|
||||||
|
diff_format_fn_t format_callback;
|
||||||
|
void *format_callback_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum color_diff {
|
enum color_diff {
|
||||||
|
Loading…
Reference in New Issue
Block a user