git: b0c292621eb6 - stable/15 - du: Print progress information to stderr
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 12 Aug 2026 19:41:41 UTC
The branch stable/15 has been updated by des:
URL: https://cgit.FreeBSD.org/src/commit/?id=b0c292621eb61ba4e88d5868fa7cba4911f2a172
commit b0c292621eb61ba4e88d5868fa7cba4911f2a172
Author: Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2026-08-08 00:10:23 +0000
Commit: Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2026-08-12 19:17:22 +0000
du: Print progress information to stderr
* On SIGINFO, print the current path to stderr rather than stdout.
* Do so immediately, instead of the next time we finish a directory.
* Document this behavior in the manual page.
PR: 296861
MFC after: 1 week
Fixes: d1588599c024 ("Report the next directory being scanned ...")
Reviewed by: wollman
Differential Revision: https://reviews.freebsd.org/D58702
(cherry picked from commit fd79bf63442eefd2c3bfb695a377dbd705f5cc6d)
---
usr.bin/du/du.1 | 12 +++++++++++-
usr.bin/du/du.c | 8 ++++----
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/usr.bin/du/du.1 b/usr.bin/du/du.1
index 3b330de7bc5b..71469226cce1 100644
--- a/usr.bin/du/du.1
+++ b/usr.bin/du/du.1
@@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd April 15, 2026
+.Dd August 7, 2026
.Dt DU 1
.Os
.Sh NAME
@@ -182,6 +182,16 @@ and
.Fl Fl si
options all override each other; the last one specified determines
the block counts used.
+.Pp
+If
+.Nm
+receives a
+.Dv SIGINFO
+(see the
+.Cm status
+argument for
+.Xr stty 1 )
+signal, the current file will be written to the standard error output.
.Sh ENVIRONMENT
.Bl -tag -width BLOCKSIZE
.It Ev BLOCKSIZE
diff --git a/usr.bin/du/du.c b/usr.bin/du/du.c
index bf138b1b5e36..47ed3c840d5a 100644
--- a/usr.bin/du/du.c
+++ b/usr.bin/du/du.c
@@ -270,6 +270,10 @@ main(int argc, char *argv[])
xo_open_container("disk-usage-information");
xo_open_list("paths");
for (errno = 0; (p = fts_read(fts)) != NULL; errno = 0) {
+ if (info) {
+ info = 0;
+ (void)fprintf(stderr, "\t%s\n", p->fts_path);
+ }
switch (p->fts_info) {
case FTS_D: /* Ignore. */
if (ignorep(p))
@@ -284,10 +288,6 @@ main(int argc, char *argv[])
if (p->fts_level <= depth && check_threshold(p))
print_file_size(p);
- if (info) {
- info = 0;
- (void)printf("\t%s\n", p->fts_path);
- }
break;
case FTS_DC: /* Ignore. */
break;