ls -l behaves like ls -lh when HUMAN_READABLE is turned on

Mark Whitley markw at lineo.com
Wed Mar 28 18:52:01 UTC 2001


Package: busybox
Version: CVS (Wed Mar 28 11:44:04 MST 2001)
Severity: normal

I suspect this problem was introduced with the recent modifications to ls and
make_human_readable(). Test case follows:


Busybox compiled with BB_FEATURE_HUMAN_READABLE disabled:

$ /bin/ls -l tests/
total 76
drwxr-xr-x    2 markw    users        4096 Mar 27 13:50 CVS
-rw-r--r--    1 markw    users         675 Aug 21  2000 Makefile
-rw-r--r--    1 markw    users        8944 Dec 11 10:33 cp_tests.mk
-rw-r--r--    1 markw    users         294 Mar 13 13:54 expr
-rw-r--r--    1 markw    users         210 Mar 26 10:07 grep.in
-rw-r--r--    1 markw    users        1423 Mar  4  2000 ln_tests.mk
-rw-r--r--    1 markw    users        1086 Mar 15 15:13 mb.patch
-rwxr-xr-x    1 markw    users        2206 Mar 15 15:13 multibuild.pl
-rwxr-xr-x    1 markw    users        2414 Mar 15 15:15 multifeat.pl
-rw-r--r--    1 markw    users        3906 Dec 11 10:33 mv_tests.mk
-rw-r--r--    1 markw    users         298 Apr 19  2000 syslog_test.c
-rw-r--r--    1 markw    users        4989 Mar 27 13:25 testcases
-rw-r--r--    1 markw    users         772 Mar 27 13:26 tester.log
-rwxr-xr-x    1 markw    users        3873 Mar 13 16:05 tester.sh
-rw-r--r--    1 markw    users         229 Mar 27 13:26 tmp-tst
-rw-r--r--    1 markw    users         837 Mar 12 13:01 tst-syslogd.c
$ ./busybox ls -l tests/
drwxr-xr-x   2 markw    users        4096 Mar 27 13:50 CVS
-rw-r--r--   1 markw    users         675 Aug 21  2000 Makefile
-rw-r--r--   1 markw    users        8944 Dec 11 10:33 cp_tests.mk
-rw-r--r--   1 markw    users         294 Mar 13 13:54 expr
-rw-r--r--   1 markw    users         210 Mar 26 10:07 grep.in
-rw-r--r--   1 markw    users        1423 Mar  4  2000 ln_tests.mk
-rw-r--r--   1 markw    users        1086 Mar 15 15:13 mb.patch
-rwxr-xr-x   1 markw    users        2206 Mar 15 15:13 multibuild.pl
-rwxr-xr-x   1 markw    users        2414 Mar 15 15:15 multifeat.pl
-rw-r--r--   1 markw    users        3906 Dec 11 10:33 mv_tests.mk
-rw-r--r--   1 markw    users         298 Apr 19  2000 syslog_test.c
-rw-r--r--   1 markw    users        4989 Mar 27 13:25 testcases
-rw-r--r--   1 markw    users         772 Mar 27 13:26 tester.log
-rwxr-xr-x   1 markw    users        3873 Mar 13 16:05 tester.sh
-rw-r--r--   1 markw    users         229 Mar 27 13:26 tmp-tst
-rw-r--r--   1 markw    users         837 Mar 12 13:01 tst-syslogd.c

Works fine. Now watch this:

Busybox compiled with BB_FEATURE_HUMAN_READABLE turned on:

$ /bin/ls -l tests/
total 76
drwxr-xr-x    2 markw    users        4096 Mar 27 13:50 CVS
-rw-r--r--    1 markw    users         675 Aug 21  2000 Makefile
-rw-r--r--    1 markw    users        8944 Dec 11 10:33 cp_tests.mk
-rw-r--r--    1 markw    users         294 Mar 13 13:54 expr
-rw-r--r--    1 markw    users         210 Mar 26 10:07 grep.in
-rw-r--r--    1 markw    users        1423 Mar  4  2000 ln_tests.mk
-rw-r--r--    1 markw    users        1086 Mar 15 15:13 mb.patch
-rwxr-xr-x    1 markw    users        2206 Mar 15 15:13 multibuild.pl
-rwxr-xr-x    1 markw    users        2414 Mar 15 15:15 multifeat.pl
-rw-r--r--    1 markw    users        3906 Dec 11 10:33 mv_tests.mk
-rw-r--r--    1 markw    users         298 Apr 19  2000 syslog_test.c
-rw-r--r--    1 markw    users        4989 Mar 27 13:25 testcases
-rw-r--r--    1 markw    users         772 Mar 27 13:26 tester.log
-rwxr-xr-x    1 markw    users        3873 Mar 13 16:05 tester.sh
-rw-r--r--    1 markw    users         229 Mar 27 13:26 tmp-tst
-rw-r--r--    1 markw    users         837 Mar 12 13:01 tst-syslogd.c
$ ./busybox ls -l tests/
drwxr-xr-x   2 markw    users        4.0k Mar 27 13:50 CVS
-rw-r--r--   1 markw    users         675 Aug 21  2000 Makefile
-rw-r--r--   1 markw    users        8.7k Dec 11 10:33 cp_tests.mk
-rw-r--r--   1 markw    users         294 Mar 13 13:54 expr
-rw-r--r--   1 markw    users         210 Mar 26 10:07 grep.in
-rw-r--r--   1 markw    users        1.3k Mar  4  2000 ln_tests.mk
-rw-r--r--   1 markw    users        1.0k Mar 15 15:13 mb.patch
-rwxr-xr-x   1 markw    users        2.1k Mar 15 15:13 multibuild.pl
-rwxr-xr-x   1 markw    users        2.3k Mar 15 15:15 multifeat.pl
-rw-r--r--   1 markw    users        3.8k Dec 11 10:33 mv_tests.mk
-rw-r--r--   1 markw    users         298 Apr 19  2000 syslog_test.c
-rw-r--r--   1 markw    users        4.8k Mar 27 13:25 testcases
-rw-r--r--   1 markw    users         772 Mar 27 13:26 tester.log
-rwxr-xr-x   1 markw    users        3.7k Mar 13 16:05 tester.sh
-rw-r--r--   1 markw    users         229 Mar 27 13:26 tmp-tst
-rw-r--r--   1 markw    users         837 Mar 12 13:01 tst-syslogd.c

Whoops...

This line in ls.c, line 651 is okay:

fprintf(stdout, "%9s ", make_human_readable_str(dn->dstat.st_size,
			(ls_disp_hr==TRUE)? 0: 1));

But the new version of make_human_readable_str never tests the value of the
'hr' param to see if it should human-readable-ify the string or not. (I'd also
recommend that this parm be changed to a more boolean-sounding name, like
make_hr, or some such.)



Mark Whitley
markw at lineo.com

---------------------------------------
Received: (at 1142-close) by bugs.lineo.com; 28 Mar 2001 20:16:50 +0000


More information about the busybox mailing list