Re: Bug in man page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Mar 09, 2014 at 12:11:43PM +0100, Jeroen van Dijke wrote:
> There seems to be a bug in the dash man page, at least in 0.5.7. It
> reads:

>             Precision:
>                     An optional period, `.', followed by an optional
> digit string giving a precision which specifies the number of digits
> to appear after the decimal point, for e and f formats, or the maximum
> number of *characters* to be printed from a string (b and s formats);
> if the digit string is missing, the precision is treated as zero;

> dash behaves cuts to the number of bytes

> $ length=10; printf "%.${length}s\n" "eeeeeeeeeeeeeeeeeeeeeeeee"
> eeeeeeeeee
> $ length=10; printf "%.${length}s\n" "ëëëëëëëëëëëëëëëëëëëëëëëëë”
> ëëëëë

> The  POSIX specification (2008) says:

> precision Gives the minimum number of digits to appear for the d, o,
> i, u, x, or X conversion specifiers (the field is padded with leading
> zeros), the number of digits to appear after the radix character for
> the e and f conversion specifiers, the maximum number of significant
> digits for the g conversion specifier; or the maximum number of
> *bytes* to be written from a string in the s conversion specifier. The
> precision shall take the form of a ( '.' ) followed by a decimal digit
> string; a null digit string is treated as zero.

> So it seems to me that “characters” should be changed to “bytes”.

Indeed, and the same applies to the field width. This behaviour may not
be the most useful, but it is standard and widely implemented.

Likewise, the sequences \num (in the format string) and \0num (in
arguments for %b) generate bytes, not characters.

On another note, the format string is said to be a "character string";
this may be a C'ism (meaning that it is not a wide character string).

Note that a "byte" in POSIX terminology is a "character" in C standard
terminology. I think the former is less ambiguous in general and should
be the preferred term in man pages where a unit of 8 bits is referred
to. A POSIX "character" may be more than one byte long.

-- 
Jilles Tjoelker
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux