Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/bin/ls



Robert Elz <kre%munnari.OZ.AU@localhost> wrote:

> Is is the output format which is chosen (by option, or by
> using the rule to select the default) which affects what is
> output.
> 
> And I believe that the -x and -C variation depending upon how
> many columns are output really is a bug, that should just be
> fixed.

How about the attached diff?

That fixes '-xs' and '-Cs' to print 'total' even if a
single-column is all that can be printed.  With that:

ls -s            -> prints 'total'
ls -s1           -> does not print 'total'
ls -s | cat      -> does not print 'total'
ls -Cs | cat     -> prints 'total'
ls -ms           -> does not print 'total'
ls -xs           -> prints 'total'
ls -xs | cat     -> prints 'total'
COLUMNS=1 ls -s  -> prints 'total'
COLUMNS=1 ls -xs -> prints 'total'

-Jan
Index: ls.1
===================================================================
RCS file: /cvsroot/src/bin/ls/ls.1,v
retrieving revision 1.81
diff -b -u -r1.81 ls.1
--- ls.1	16 May 2020 18:31:45 -0000	1.81
+++ ls.1	5 Nov 2024 21:41:30 -0000
@@ -225,8 +225,11 @@
 .Sx ENVIRONMENT )
 where partial units are rounded up to the
 next integer value.
-If the output is to a terminal, a total sum for all the file
-sizes is output on a line before the listing.
+In multi-column output
+.Ns ( Fl C
+or
+.Fl x Ns ),
+a total sum for all the file sizes is output on a line before the listing.
 .It Fl T
 When used with the
 .Fl l
Index: print.c
===================================================================
RCS file: /cvsroot/src/bin/ls/print.c,v
retrieving revision 1.57
diff -b -u -r1.57 print.c
--- print.c	17 May 2020 23:34:11 -0000	1.57
+++ print.c	5 Nov 2024 21:41:30 -0000
@@ -231,6 +231,8 @@
 
 	colwidth += 1;
 
+	printtotal(dp);				/* "total: %u\n" */
+
 	if (termwidth < 2 * colwidth) {
 		printscol(dp);
 		return;
@@ -262,8 +264,6 @@
 	if (num % numcols)
 		++numrows;
 
-	printtotal(dp);				/* "total: %u\n" */
-
 	for (row = 0; row < numrows; ++row) {
 		for (base = row, chcnt = col = 0; col < numcols; ++col) {
 			chcnt = printaname(array[base], dp->s_inode,
@@ -298,6 +298,8 @@
 
 	colwidth += 1;
 
+	printtotal(dp);				/* "total: %u\n" */
+
 	if (termwidth < 2 * colwidth) {
 		printscol(dp);
 		return;
@@ -306,8 +308,6 @@
 	numcols = termwidth / colwidth;
 	colwidth = termwidth / numcols;		/* spread out if possible */
 
-	printtotal(dp);				/* "total: %u\n" */
-
 	chcnt = col = 0;
 	for (p = dp->list; p; p = p->fts_link) {
 		if (IS_NOPRINT(p))


Home | Main Index | Thread Index | Old Index