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