a question regarding proper printf(3) formating and alignment

Dan Nelson dnelson at allantgroup.com
Wed Nov 17 19:55:23 UTC 2010


In the last episode (Nov 17), Alexander Best said:
> hi there,
> 
> i've looked at a lot of utilities in the bsd src tree and most of them
> seem to be doing something like this:
> 
> Device          1M-blocks     Used    Avail Capacity
> /dev/label/swapfs     10239        0    10239     0%
> /dev/label/swap      8191        0     8191     0%
> Total               18431        0    18431     0%
> 
> as you can see the header simply gets written with a number of tabs in
> between the keywords, but then the actual output aligns differently.
> 
> i'd like to learn of ways formatting the header so that it aligns
> properly, whether the device name is 10 chars long or 1000.  is there an
> example for this somewhere in the src tree?

/bin/ls does this for the user, group, and size columns.  Note that this
only works if you batch up your output (or take two passes over your input
data).  I seem to remember /usr/bin/find doing this dynamically by expanding
columns as it saw values that were larger than the previous max, but
apparently not (I just tested it).

-- 
	Dan Nelson
	dnelson at allantgroup.com


More information about the freebsd-questions mailing list