snprintf() doesn't use format size specifiers
Norman Feske
norman.feske at ...1...
Tue Apr 21 10:08:39 CEST 2015
Hello Pirmin,
> If I try to format some data in a anligned string with
> Genode::snprintf(), the data is stored in the string, but my
> additional format specifier for the field width aren't respected.
>
> My string is:
>
> static const char* lineFormat = "%5d \"%25s\" \"%25s\" %10s %5d\r\n"
Genode's format-string functions are limited to the few use cases
present in the base framework. I.e., it is sufficient for simple tasks
like printing a number or concatenating strings but it is not meant as a
full-fledged POSIX compliant formatting utility. If you need a complete
format-string implementation, I recommend you to use the libc instead.
> If I do want to right align the numbers (%-5d) the function crashes my
> program.
This should not happen. Thank you for reporting. I just opened an issue
about it:
https://github.com/genodelabs/genode/issues/1485
> The comment on the functoin doesn't specify that format sizes arn't supported.
I keep a note to cover this information in the upcoming documentation.
For now, please let me refer you to the implementation. I think the code
is pretty self-explanatory. If not, please don't hesitate to ask.
https://github.com/genodelabs/genode/blob/master/repos/base/src/base/console/console.cc
Best regards
Norman
--
Dr.-Ing. Norman Feske
Genode Labs
http://www.genode-labs.com · http://genode.org
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
More information about the users
mailing list