2 * Copyright (C) 2021, Google LLC.
3 * Based on diffcore-order.c, which is Copyright (C) 2005, Junio C Hamano
9 void diffcore_rotate(struct diff_options
*opt
)
11 struct diff_queue_struct
*q
= &diff_queued_diff
;
12 struct diff_queue_struct outq
;
18 for (i
= 0; i
< q
->nr
; i
++) {
19 int cmp
= strcmp(opt
->rotate_to
, q
->queue
[i
]->two
->path
);
21 break; /* exact match */
22 if (!opt
->rotate_to_strict
&& cmp
< 0)
23 break; /* q->queue[i] is now past the target pathname */
27 /* we did not find the specified path */
28 if (opt
->rotate_to_strict
)
29 die(_("No such path '%s' in the diff"), opt
->rotate_to
);
33 DIFF_QUEUE_CLEAR(&outq
);
36 for (i
= rotate_to
; i
< q
->nr
; i
++)
37 diff_q(&outq
, q
->queue
[i
]);
38 for (i
= 0; i
< rotate_to
; i
++) {
39 if (opt
->skip_instead_of_rotate
)
40 diff_free_filepair(q
->queue
[i
]);
42 diff_q(&outq
, q
->queue
[i
]);