The branch stable/14 has been updated by mav:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=b0b4dedfa163623e8ab2c3f76480c7041ade2c2e

commit b0b4dedfa163623e8ab2c3f76480c7041ade2c2e
Author:     Alexander Motin <m...@freebsd.org>
AuthorDate: 2023-12-06 19:55:58 +0000
Commit:     Alexander Motin <m...@freebsd.org>
CommitDate: 2023-12-23 04:13:24 +0000

    vmstat: Improve -z formatting for large names/values
    
    MFC after:      2 weeks
    
    (cherry picked from commit 6f048e71304310db80a210d07cb3768de18589c8)
---
 usr.bin/vmstat/vmstat.c | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/usr.bin/vmstat/vmstat.c b/usr.bin/vmstat/vmstat.c
index c4fb7186363f..a72ba127f40c 100644
--- a/usr.bin/vmstat/vmstat.c
+++ b/usr.bin/vmstat/vmstat.c
@@ -1468,8 +1468,7 @@ domemstat_zone(void)
 {
        struct memory_type_list *mtlp;
        struct memory_type *mtp;
-       int error;
-       char name[MEMTYPE_MAXNAME + 1];
+       int error, len;
 
        mtlp = memstat_mtl_alloc();
        if (mtlp == NULL) {
@@ -1494,20 +1493,20 @@ domemstat_zone(void)
                }
        }
        xo_open_container("memory-zone-statistics");
-       xo_emit("{T:/%-20s} {T:/%6s} {T:/%6s} {T:/%8s} {T:/%8s} {T:/%8s} 
{T:/%8s} "
-           "{T:/%4s} {T:/%4s}\n", "ITEM", "SIZE",
-           "LIMIT", "USED", "FREE", "REQ", "FAIL", "SLEEP", "XDOMAIN");
+       xo_emit("{T:/%-19s} {T:/%7s} {T:/%7s} {T:/%8s} {T:/%8s} {T:/%8s} "
+           "{T:/%4s} {T:/%4s} {T:/%4s}\n", "ITEM", "SIZE",
+           "LIMIT", "USED", "FREE", "REQ", "FAIL", "SLEEP", "XDOM");
        xo_open_list("zone");
        for (mtp = memstat_mtl_first(mtlp); mtp != NULL;
            mtp = memstat_mtl_next(mtp)) {
-               strlcpy(name, memstat_get_name(mtp), MEMTYPE_MAXNAME);
-               strcat(name, ":");
+               len = strlen(memstat_get_name(mtp));
                xo_open_instance("zone");
-               xo_emit("{d:name/%-20s}{ke:name/%s} {:size/%6ju}, "
-                   "{:limit/%6ju},{:used/%8ju},"
+               xo_emit("{k:name/%s}:{d:size/%*ju}{e:size/%ju},"
+                   "{:limit/%7ju},{:used/%8ju},"
                    "{:free/%8ju},{:requests/%8ju},"
-                   "{:fail/%4ju},{:sleep/%4ju},{:xdomain/%4ju}\n", name,
-                   memstat_get_name(mtp),
+                   "{:fail/%4ju},{:sleep/%4ju},{:xdomain/%4ju}\n",
+                   memstat_get_name(mtp), MAX(1, 26 - len),
+                   (uintmax_t)memstat_get_size(mtp),
                    (uintmax_t)memstat_get_size(mtp),
                    (uintmax_t)memstat_get_countlimit(mtp),
                    (uintmax_t)memstat_get_count(mtp),

Reply via email to