Download raw body.
add got_patch_process_cb
On Mon, Mar 14, 2022 at 10:18:15PM +0100, Omar Polo wrote:
> blob - 6e5ec0f2143d39ff9eeca89060522c5155706a77
> blob + a10f54062e0e80aa2a49665b6f36f51f610d9350
> --- lib/patch.c
> +++ lib/patch.c
> @@ -66,12 +66,19 @@ struct got_patch_hunk {
> };
>
> struct got_patch {
> + got_patch_progress_cb cb;
> + void *arg;
These should no longer be needed? ^
Oh wait, you did not go all the way.
patch_add() was not updated to use struct patch_args. More below.
> int nop;
> char *old;
> char *new;
> STAILQ_HEAD(, got_patch_hunk) head;
> };
>
> +struct patch_args {
> + got_patch_progress_cb progress_cb;
> + void *progress_arg;
> +};
> +
> static const struct got_error *
> send_patch(struct imsgbuf *ibuf, int fd)
> {
> @@ -565,13 +572,29 @@ check_file_status(struct got_patch *p, int file_rename
> }
>
> static const struct got_error *
> +patch_delete(void *arg, unsigned char status, unsigned char staged_status,
> + const char *path)
> +{
> + struct patch_args *pa = arg;
> +
> + return pa->progress_cb(pa->progress_arg, path, NULL, status);
> +}
> +
> +static const struct got_error *
> +patch_add(void *arg, unsigned char status, const char *path)
> +{
> + struct got_patch *p = arg;
> +
> + return p->cb(p->arg, NULL, path, status);
> +}
> @@ -654,9 +681,8 @@ done:
>
> const struct got_error *
> got_patch(int fd, struct got_worktree *worktree, struct got_repository *repo,
> - int nop, got_worktree_delete_cb delete_cb, void *delete_arg,
> - got_worktree_checkout_cb add_cb, void *add_arg, got_cancel_cb cancel_cb,
> - void *cancel_arg)
> + int nop, got_patch_progress_cb progress_cb, void *progress_arg,
> + got_cancel_cb cancel_cb, void *cancel_arg)
> {
> const struct got_error *err = NULL;
> struct imsgbuf *ibuf;
> @@ -704,9 +730,10 @@ got_patch(int fd, struct got_worktree *worktree, struc
> if (err || done)
> break;
>
> + p.cb = progress_cb;
> + p.arg = progress_arg;
> p.nop = nop;
Could we pass progress_cb, progress_arg, and nop as separate arguments
to apply_patch(), instead of stashing them into struct got_patch?
> - err = apply_patch(worktree, repo, &p, delete_cb, delete_arg,
> - add_cb, add_arg, cancel_cb, cancel_arg);
> + err = apply_patch(worktree, repo, &p, cancel_cb, cancel_arg);
> patch_free(&p);
> if (err)
> break;
>
>
>
add got_patch_process_cb