From nobody Tue Jul 7 20:57:49 2026 X-Original-To: dev-commits-src-branches@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 4gvtpj6QGwz6kShY for ; Tue, 07 Jul 2026 20:57:49 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gvtpj3HYPz3m0h for ; Tue, 07 Jul 2026 20:57:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783457869; 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=OEZxlBH+ULycAWYprJgScE67GmgoX6N5C0V3SeZJaCo=; b=DXePKpyFUCfEz3ENZy3opju1GzVa90JMmXDCSbCVQwQnL4yvZBLjYb11tzeCv2wzZQ7UyH IbBnjZQULyorNVUMpqy7DzTiUa7jV/aJHjERXlc0tdCutEMGZbV17M1fIfV5fHBkozObgK Nj///4ub1XlM6fapH/7M7h0USZC6jrkc4BgcvS7kCcomTr6iJWQx0KW1UR6mo5AfOh4lnW HDVTNAUk8FrnUWzUtdT69Ij5+lXC2fzDJlwMj+ArFXjEoH73fZbCOWawTnMs2d37zq9P6e jKQTV8ki5wQgt+G0oMKODy+Emq8NpPIniyZ/KY2r/eWO3gSd9q5DluNmPy/4pg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1783457869; a=rsa-sha256; cv=none; b=PxldrZc8BxkiDHxN/om3Thl/jAx+x4SIKwaoB97zjlOJHAZS7e440MiLmbzUkfScck36mx jG7qVHm+Vdb/irkBllFroW1BT7Rw1Jmg5F8RJa/gHU3vuKCv+az2aDVgqrwkwr+kCPyTxE wZ5hpGOvl/dCa1mDm68d3hOwiMBa5AIj9dbyo9WRJjjiDdUW+/UcceVfaQ5CSpi/nS4OoG I3iTQgBmfQ0oJx4zVnidFYyiX/yT7hwQZRo/jJXfuJbq0pB94sR/uYRSFW74oBNo+zmwqZ HN1Mj+DO+r267HqxEiYOFOEikdvJ/f9qJeSVZG5qCXS1rFn87FwlPCWs78t45w== 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=1783457869; 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=OEZxlBH+ULycAWYprJgScE67GmgoX6N5C0V3SeZJaCo=; b=AEKoKaMP/kwD4wJAWqAzKDTxBys+eJVvRiu/KuRalDcc3POYK5diKZDAkjW0kGG0aQp4/H AzFuS9PD5XLol0BrKmQwGXt8bLAVLDg3GAzkrRYXSEyZZ4FgpwsLkZGkbW0q8kGflwCINq TnMISNh3QHaac7kVN44Q/twaBB92Tc3IWLMkAsqsG4w9L0cSAx91Ov27RT55OKWjAh5SbZ MQhHPInwfGgH4qP8oWAz3vgQdeGBWVh+QrmS2yGZaNsIjbMC/9DvDHCd+L0997XY1bE4TS OLV/yt3ZGFW+WGcS66OrxI7E0FpN+KO/6T8pCNjjsclMhvs31mi64KTf9Sm5Vg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gvtpj03rfzrPY for ; Tue, 07 Jul 2026 20:57:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 47ab4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 07 Jul 2026 20:57:49 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: dcb2c375221a - stable/15 - ping: Flush stdout after printing initial status List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: dcb2c375221a8d15543c8caa93634c403939e8db Auto-Submitted: auto-generated Date: Tue, 07 Jul 2026 20:57:49 +0000 Message-Id: <6a4d684d.47ab4.5fea0698@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=dcb2c375221a8d15543c8caa93634c403939e8db commit dcb2c375221a8d15543c8caa93634c403939e8db Author: Dag-Erling Smørgrav AuthorDate: 2026-06-23 15:20:22 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-07-07 07:07:01 +0000 ping: Flush stdout after printing initial status MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D57765 (cherry picked from commit 141bb8579882f9d1f7e95351573e30f10689f4bf) ping: Don't mix stdio and direct writes POSIX does not allow mixing direct writes to STDOUT_FILENO with stdio operations on stdout like we do here. More importantly, it causes tests to fail randomly (or not-so-randomly after I added an fflush in a previous commit). MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D57884 (cherry picked from commit 8bda488114f330d758e6741ff44882bb12b76c0d) --- sbin/ping/ping.c | 27 +++++++++++++++++---------- sbin/ping/ping6.c | 28 ++++++++++++++++++---------- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c index d10e3c85c9bd..3fa21760447f 100644 --- a/sbin/ping/ping.c +++ b/sbin/ping/ping.c @@ -829,7 +829,6 @@ ping(int argc, char *const *argv) sweepmin, sweepmax); else (void)printf(": %d data bytes\n", datalen); - } else { if (sweepmax) (void)printf("PING %s: (%d ... %d) data bytes\n", @@ -837,6 +836,7 @@ ping(int argc, char *const *argv) else (void)printf("PING %s: %d data bytes\n", hostname, datalen); } + (void)fflush(stdout); /* * Use sigaction() instead of signal() to get unambiguous semantics, @@ -982,8 +982,10 @@ ping(int argc, char *const *argv) (void)clock_gettime(CLOCK_MONOTONIC, &last); if (ntransmitted - nreceived - 1 > nmissedmax) { nmissedmax = ntransmitted - nreceived - 1; - if (options & F_MISSED) - (void)write(STDOUT_FILENO, &BBELL, 1); + if (options & F_MISSED) { + (void)putc(BBELL, stdout); + (void)fflush(stdout); + } } } } @@ -1077,8 +1079,10 @@ pinger(void) } ntransmitted++; sntransmitted++; - if (!(options & F_QUIET) && options & F_DOT) - (void)write(STDOUT_FILENO, &DOT[DOTidx++ % DOTlen], 1); + if (!(options & F_QUIET) && options & F_DOT) { + (void)putc(DOT[DOTidx++ % DOTlen], stdout); + (void)fflush(stdout); + } } /* @@ -1200,9 +1204,10 @@ pr_pack(char *buf, ssize_t cc, struct sockaddr_in *from, struct timespec *tv) return; } - if (options & F_DOT) - (void)write(STDOUT_FILENO, &BSPACE, 1); - else { + if (options & F_DOT) { + (void)putc(BSPACE, stdout); + (void)fflush(stdout); + } else { (void)printf("%zd bytes from %s: icmp_seq=%u", cc, pr_addr(from->sin_addr), seq); (void)printf(" ttl=%d", ip.ip_ttl); @@ -1210,8 +1215,10 @@ pr_pack(char *buf, ssize_t cc, struct sockaddr_in *from, struct timespec *tv) (void)printf(" time=%.3f ms", triptime); if (dupflag) (void)printf(" (DUP!)"); - if (options & F_AUDIBLE) - (void)write(STDOUT_FILENO, &BBELL, 1); + if (options & F_AUDIBLE) { + (void)putc(BBELL, stdout); + (void)fflush(stdout); + } if (options & F_MASK) { /* Just prentend this cast isn't ugly */ (void)printf(" mask=%s", diff --git a/sbin/ping/ping6.c b/sbin/ping/ping6.c index f81de062e59a..1cebcee8cc36 100644 --- a/sbin/ping/ping6.c +++ b/sbin/ping/ping6.c @@ -1111,6 +1111,7 @@ ping6(int argc, char *argv[]) (unsigned long)(pingerlen() - 8)); printf("%s --> ", pr_addr((struct sockaddr *)&src, sizeof(src))); printf("%s\n", pr_addr((struct sockaddr *)&dst, sizeof(dst))); + fflush(stdout); if (preload == 0) pinger(); @@ -1237,8 +1238,10 @@ ping6(int argc, char *argv[]) clock_gettime(CLOCK_MONOTONIC, &last); if (ntransmitted - nreceived - 1 > nmissedmax) { nmissedmax = ntransmitted - nreceived - 1; - if (options & F_MISSED) - (void)write(STDOUT_FILENO, &BBELL, 1); + if (options & F_MISSED) { + (void)putc(BBELL, stdout); + (void)fflush(stdout); + } } } } @@ -1414,8 +1417,10 @@ pinger(void) (void)printf("ping: wrote %s %d chars, ret=%d\n", hostname, cc, i); } - if (!(options & F_QUIET) && options & F_DOT) - (void)write(STDOUT_FILENO, &DOT[DOTidx++ % DOTlen], 1); + if (!(options & F_QUIET) && options & F_DOT) { + (void)putc(DOT[DOTidx++ % DOTlen], stdout); + (void)fflush(stdout); + } return(0); } @@ -1612,11 +1617,14 @@ pr_pack(u_char *buf, int cc, struct msghdr *mhdr) return; } - if (options & F_DOT) - (void)write(STDOUT_FILENO, &BSPACE, 1); - else { - if (options & F_AUDIBLE) - (void)write(STDOUT_FILENO, &BBELL, 1); + if (options & F_DOT) { + (void)putc(BSPACE, stdout); + (void)fflush(stdout); + } else { + if (options & F_AUDIBLE) { + (void)putc(BBELL, stdout); + (void)fflush(stdout); + } (void)printf("%d bytes from %s, icmp_seq=%u", cc, pr_addr(from, fromlen), seq); (void)printf(" hlim=%d", hoplim); @@ -1805,7 +1813,7 @@ pr_pack(u_char *buf, int cc, struct msghdr *mhdr) } if (!(options & F_DOT)) { - (void)putchar('\n'); + (void)putc('\n', stdout); if (options & F_VERBOSE) pr_exthdrs(mhdr); (void)fflush(stdout);