From nobody Mon Feb 2 16:37:06 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4f4XMQ5nMFz6QhrV for ; Mon, 02 Feb 2026 16:37:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f4XMQ5FjJz3NLD for ; Mon, 02 Feb 2026 16:37:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770050226; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=aeZnbIV7JuITxmyZNHWKCHFXezv/euKj65gB1HCbtDo=; b=IusgtgmHTuYr9oGZLJAGunEzJMmasbofkox4T764tmPz6kNeFzx3rqcwDJDMr3KBWkXaCI +HtJ8eMxJf75qkbSnAYQ3ktJlwzrlij7pLq4C3cIJ8slyddgvB6UMH3B+LYonybPVdmhQ6 FjFE9R80pkstOKGHsT8M2NGGf0CiPrCdiVV4M7tR2aroG8Lgvt15HP9u6et1i31M77Ossz yz3hqdiknHv921YQd0OASk/RHeYJvIO2hhx/MvKpoWDSQIXtF3ei6s0eSgqvc7Za71fHn0 nmTFNqQI0K6K4iGU1ucrM9oHj217lqoe2LxroBFOtqnJytgmUg1CAR2op34dwg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770050226; a=rsa-sha256; cv=none; b=a/uLTvf/ygFN7Oei/Nh0XLE8EzFjjP6A2Pu28YVOl6YIq8Uw8EDwyzM/tnfNkJ3M4Rz9Z4 Q1CJNFVFYol7/o15H5VIykan4cbQFhhEpyTChG4sWnQG5ch268O+CQ1VoMZQfkSeije14z O+k0cglDjJKh4FcIryCM5Qv9LpGSQ2yBKi/7YgYsfRNawI+PzR/tVQqcPjG4x6mjJMbd9g Wd65aQxgwYHgnvW8H+fXN+58xbwI1JtcZ7LL5uNtqENu4w1D0VlTXFSuMDn36ZMfEZPL2t hGNOYrLZrgXmqCduNOfnUc6WYudItK9Z06KGb9ECFVAjMZb+5i54oCLprePs6g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770050226; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=aeZnbIV7JuITxmyZNHWKCHFXezv/euKj65gB1HCbtDo=; b=tf4Y5NIjxZn7bEO78U7Sr04wQcyK7Lr+v4Z0uTXWP+E/D+1GQdHviaodvnINUhGmJSmAHr zEzXPWf/zTngUVHCKRk7pOA778c2Kd7SiKL2q9HDet8qzeAU9e1sODDhxnWrT889NtJo/X oBk5ivqBfRWc5SLFSqSSdTK80grqH3wkAiXaec9EO+vWfVVIQxsMuXXZj5a++cGGzrZYIw wYDl0BiPPw9hn6b8ia5x+1LjVdI4gq1Rpy+S/xYc2uawunHje5x5EKTw1/oYv96OGxZiT7 8LzllTHbAg/QzdvV/EfKn7Tr+GSSYd8+jLYRdeeMM7A0nZuoEw2RzPJde8qBVQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f4XMQ4gFjzb7p for ; Mon, 02 Feb 2026 16:37:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1c290 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Feb 2026 16:37:06 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: 404753664a5e - main - diff3: use pdwait instead of homemade one List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 404753664a5e145d98f1749d1c7bc046c8aa32c3 Auto-Submitted: auto-generated Date: Mon, 02 Feb 2026 16:37:06 +0000 Message-Id: <6980d2b2.1c290.17bea253@gitrepo.freebsd.org> The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=404753664a5e145d98f1749d1c7bc046c8aa32c3 commit 404753664a5e145d98f1749d1c7bc046c8aa32c3 Author: Baptiste Daroussin AuthorDate: 2026-02-02 16:29:49 +0000 Commit: Baptiste Daroussin CommitDate: 2026-02-02 16:36:42 +0000 diff3: use pdwait instead of homemade one MFC After: 3 days --- usr.bin/diff3/diff3.c | 56 +++++++++++++++++---------------------------------- 1 file changed, 19 insertions(+), 37 deletions(-) diff --git a/usr.bin/diff3/diff3.c b/usr.bin/diff3/diff3.c index 39523f6e6b38..d010a0b1d067 100644 --- a/usr.bin/diff3/diff3.c +++ b/usr.bin/diff3/diff3.c @@ -65,7 +65,6 @@ #include #include #include -#include #include #include @@ -921,11 +920,26 @@ increase(void) szchanges = newsz; } +static void +wait_and_check(int pd) +{ + int status; + + while (pdwait(pd, &status, WEXITED, NULL, NULL) == -1) { + if (errno != EINTR) + err(2, "pdwait"); + } + + if (WIFEXITED(status) && WEXITSTATUS(status) >= 2) + errx(2, "diff exited abnormally"); + if (WIFSIGNALED(status)) + errx(2, "diff killed by signal %d", WTERMSIG(status)); +} int main(int argc, char **argv) { - int ch, nblabels, status, m, n, kq, nke, nleft, i; + int ch, nblabels, m, n; char *labels[] = { NULL, NULL, NULL }; const char *diffprog = DIFF_PATH; char *file1, *file2, *file3; @@ -934,7 +948,6 @@ main(int argc, char **argv) int fd13[2], fd23[2]; int pd13, pd23; cap_rights_t rights_ro; - struct kevent *e; nblabels = 0; eflag = EFLAG_NONE; @@ -1016,14 +1029,6 @@ main(int argc, char **argv) cap_rights_init(&rights_ro, CAP_READ, CAP_FSTAT, CAP_SEEK); - kq = kqueue(); - if (kq == -1) - err(2, "kqueue"); - - e = malloc(2 * sizeof(*e)); - if (e == NULL) - err(2, "malloc"); - /* TODO stdio */ file1 = argv[0]; file2 = argv[1]; @@ -1069,20 +1074,10 @@ main(int argc, char **argv) diffargv[diffargc] = file1; diffargv[diffargc + 1] = file3; diffargv[diffargc + 2] = NULL; - - nleft = 0; pd13 = diffexec(diffprog, diffargv, fd13); - EV_SET(e + nleft , pd13, EVFILT_PROCDESC, EV_ADD, NOTE_EXIT, 0, NULL); - if (kevent(kq, e + nleft, 1, NULL, 0, NULL) == -1) - err(2, "kevent1"); - nleft++; diffargv[diffargc] = file2; pd23 = diffexec(diffprog, diffargv, fd23); - EV_SET(e + nleft , pd23, EVFILT_PROCDESC, EV_ADD, NOTE_EXIT, 0, NULL); - if (kevent(kq, e + nleft, 1, NULL, 0, NULL) == -1) - err(2, "kevent2"); - nleft++; caph_cache_catpages(); if (caph_enter() < 0) @@ -1093,22 +1088,9 @@ main(int argc, char **argv) m = readin(fd13[0], &d13); n = readin(fd23[0], &d23); - /* waitpid cooked over pdforks */ - while (nleft > 0) { - nke = kevent(kq, NULL, 0, e, nleft, NULL); - if (nke == -1) - err(2, "kevent"); - for (i = 0; i < nke; i++) { - status = e[i].data; - if (WIFEXITED(status) && WEXITSTATUS(status) >= 2) - errx(2, "diff exited abnormally"); - else if (WIFSIGNALED(status)) - errx(2, "diff killed by signal %d", - WTERMSIG(status)); - } - nleft -= nke; - } - free(e); + wait_and_check(pd13); + wait_and_check(pd23); + merge(m, n); return (EXIT_SUCCESS);