From nobody Wed Jul 24 20:07:09 2024 X-Original-To: dev-commits-src-main@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 4WTlRK6Y2sz5QMbh; Wed, 24 Jul 2024 20:07:09 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4WTlRK5ymdz4Xdh; Wed, 24 Jul 2024 20:07:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1721851629; 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=+isKivb7WcT2rIVwhCC2Vd3EZGZWE5aHAjTenNcmiX0=; b=JbK1Mla5bod0DRU11c6009w0GKjlwHYpPbRHYAd77bDRbMjNHs5r/MWRJBnESJER0P9yMP qnpdzVxqUA5Kp9VhUOaBEl2AgAXY5ICSDG9lsR15GrjGO+wOfDa/Z3Pf+befqObSKY/KOC lUpUp+8LvOwlwZAiF0xjXirR+7Iwlsm2S42WskI8OYBQuYcTLnOTUzV+pGCcrKbZt2bdmY H4U6fBoC67Wuaz6/392+oMGhLXmrjYweJwQoJnF36QJQSjdJNRBuVXncuNh3kWvLwPwtCb zZrl1/floMK1s3iwe5AMFFyiEdtn3ZTSvppp8c1jdzJJWH5WltJfY5sUfWL6fQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1721851629; a=rsa-sha256; cv=none; b=eMWFP7UUVtazUTE+cMapAYpceNN/7hD0U40wNcyb84QQI+kMDQQXVBUpW9LXRa8FKHeCm4 dRsn9F/6L3tnxZChO7ZXmHfcDNwm6sq3N/pkqyPRPH11uqDAiBGPDYo38iD+0QKhe85Y62 09cUOIyIVdwtDBaMONJuvm6gZJGuYd2FdY1a+KFtRreJUFWi6tFrTKf7d6oBYt/skT2II9 MkXt2hcNv4y6J1wQgsw1GZrMjvumd++XPj2cZq9Bt/NYo0bc8fhW5eVLP8Z7B9wd5YsSWZ CMfmZGeZ7Np/Qdhfzcg/QUPU5b9kCp0+hUrbkaZqOvawbOOP1O6g4sml//JQLA== 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=1721851629; 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=+isKivb7WcT2rIVwhCC2Vd3EZGZWE5aHAjTenNcmiX0=; b=podm+IzskV+1d8BNEuhVAI/XRsabtq0MveiUF/qqxoTp5AgtssuqCxga6ADJb0V3L7YOWO /rUBEwAK52iur0C7fenUZWmCl6+U3/Z/l1FGXgHIFUcTrZGtXSv3VFjdxm4ZNtheC/gq6P v7MJZGQGs6QJjiH3lawIRsUvYJaF1uCP/FDP7EA8BcZZXq3zUPXAW32YzEf2QiQKg305kZ hVMCHkMtn1Y5rpPWGh6ek5/pJ7h0/0790LvhnEcd4OVTnBQPA2MxORcj+4bT16NU4kEng2 Fbrq8Fz67T9dX0HJCdB6cQISCnJlu9GGzgfj9PTJ7LD44n1/xgIXquc/K2cA4Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4WTlRK5XqkzQHP; Wed, 24 Jul 2024 20:07:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 46OK7938046014; Wed, 24 Jul 2024 20:07:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 46OK79NT046011; Wed, 24 Jul 2024 20:07:09 GMT (envelope-from git) Date: Wed, 24 Jul 2024 20:07:09 GMT Message-Id: <202407242007.46OK79NT046011@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 647d4a8cafd2 - main - ls: Make -, apply to -s as well as -l. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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/main X-Git-Reftype: branch X-Git-Commit: 647d4a8cafd2c9b291cab388191bc7fcfe12a66b Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=647d4a8cafd2c9b291cab388191bc7fcfe12a66b commit 647d4a8cafd2c9b291cab388191bc7fcfe12a66b Author: Dag-Erling Smørgrav AuthorDate: 2024-07-24 20:06:39 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-07-24 20:07:06 +0000 ls: Make -, apply to -s as well as -l. While here, remove a bogus comment about a gcc bug. The bug was in ls, which used an incorrect format string, and in libc, which accepted it. MFC after: 1 week Reviewed by: brooks Differential Revision: https://reviews.freebsd.org/D46067 --- bin/ls/ls.1 | 4 +++- bin/ls/ls.c | 3 ++- bin/ls/print.c | 14 ++++++-------- bin/ls/tests/ls_tests.sh | 16 ++++++++++++++++ 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/bin/ls/ls.1 b/bin/ls/ls.1 index 9d4c55b9b17d..d86250b82db2 100644 --- a/bin/ls/ls.1 +++ b/bin/ls/ls.1 @@ -29,7 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd February 21, 2024 +.Dd July 22, 2024 .Dt LS 1 .Os .Sh NAME @@ -434,6 +434,8 @@ output is not to a terminal. .It Fl , (Comma) When the .Fl l +or +.Fl s option is set, print file sizes grouped and separated by thousands using the non-monetary separator returned by .Xr localeconv 3 , diff --git a/bin/ls/ls.c b/bin/ls/ls.c index b5e3578f27bb..a285838e2ee1 100644 --- a/bin/ls/ls.c +++ b/bin/ls/ls.c @@ -969,7 +969,8 @@ label_out: d.maxlen = maxlen; if (needstats) { d.btotal = btotal; - d.s_block = snprintf(NULL, 0, "%lu", howmany(maxblock, blocksize)); + d.s_block = snprintf(NULL, 0, f_thousands ? "%'ld" : "%ld", + howmany(maxblock, blocksize)); d.s_flags = maxflags; d.s_label = maxlabelstr; d.s_group = maxgroup; diff --git a/bin/ls/print.c b/bin/ls/print.c index 979ad0ffc43e..f651dea5de90 100644 --- a/bin/ls/print.c +++ b/bin/ls/print.c @@ -221,7 +221,7 @@ printlong(const DISPLAY *dp) (void)printf("%*ju ", dp->s_inode, (uintmax_t)sp->st_ino); if (f_size) - (void)printf("%*jd ", + (void)printf(f_thousands ? "%'*jd " : "%*jd ", dp->s_block, howmany(sp->st_blocks, blocksize)); strmode(sp->st_mode, buf); aclmode(buf, p); @@ -400,7 +400,7 @@ printaname(const FTSENT *p, u_long inodefield, u_long sizefield) chcnt += printf("%*ju ", (int)inodefield, (uintmax_t)sp->st_ino); if (f_size) - chcnt += printf("%*jd ", + chcnt += printf(f_thousands ? "%'*jd " : "%*jd ", (int)sizefield, howmany(sp->st_blocks, blocksize)); #ifdef COLORLS if (f_color) @@ -753,12 +753,10 @@ printsize(size_t width, off_t bytes) humanize_number(buf, sizeof(buf), (int64_t)bytes, "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); (void)printf("%*s ", (u_int)width, buf); - } else if (f_thousands) { /* with commas */ - /* This format assignment needed to work round gcc bug. */ - const char *format = "%*j'd "; - (void)printf(format, (u_int)width, bytes); - } else - (void)printf("%*jd ", (u_int)width, bytes); + } else { + (void)printf(f_thousands ? "%'*jd " : "%*jd ", + (u_int)width, bytes); + } } /* diff --git a/bin/ls/tests/ls_tests.sh b/bin/ls/tests/ls_tests.sh index c82b4e8c8851..c732b60b21a4 100755 --- a/bin/ls/tests/ls_tests.sh +++ b/bin/ls/tests/ls_tests.sh @@ -800,6 +800,21 @@ s_flag_body() done } +atf_test_case scomma_flag +scomma_flag_head() +{ + atf_set "descr" "Verify that -s, prints out the size with ',' delimiters" +} + +scomma_flag_body() +{ + export LC_ALL=en_US.UTF-8 + atf_check -e ignore dd if=/dev/urandom of=file bs=65536 count=64 + blocks=$(stat -f "%b" file) + cblocks=$(printf "%'d" $blocks) + atf_check -e empty -o match:"$cblocks[[:space:]]+file" ls -s, file +} + atf_test_case t_flag t_flag_head() { @@ -972,6 +987,7 @@ atf_init_test_cases() atf_add_test_case q_flag_and_w_flag atf_add_test_case r_flag atf_add_test_case s_flag + atf_add_test_case scomma_flag atf_add_test_case t_flag atf_add_test_case u_flag atf_add_test_case v_flag