On Mon, Feb 04 2019 at 10:06 +0100, Uwe Kleine-König 
<u.kleine-koe...@pengutronix.de> wrote:
> On Mon, Feb 04, 2019 at 08:54:29AM +0100, Juergen Borleis wrote:
>> On Sunday 03 February 2019 22:48:06 Ulrich Ölmann wrote:
>> > Explicitely casting an "off_t" variable to "long long" and formatting it
>> > via "%lld" or "%llx" respectively makes 32- as well as 64-bit compilers
>> > happy (tested with gcc-8.2.1 and clang-7.0.1).
>>
>> Könnte hier der Cast (intmax_t) und der Prefix 'j' vielleicht besser sein?
>>
>> off_t blub;
>>
>>  printf("Blub is: %jd\n", (intmax_t)blub);
>
> Note: the j length modifier exists only since glibc 2.1. Don't know
> about non-Linux (or alternative Linux) libc implementations. (Do we care
> about those?). Just checked the OpenSolaris state, printf there knows
> about 'j', but notes:
>
>       If  the j  length modifier is used, 32-bit applications that
>       were compiled using c89 on releases prior to Solaris 10 will
>       experience undefined behavior

Unfortunately using "%j" is not an option as this code is shared with
barebox' state implementation and barebox only supports a subset of the
formats that glibc offers which does not include "%j", see [1].

Best regards
Ulrich

[1] https://github.com/saschahauer/barebox/blob/master/lib/vsprintf.c#L364
--
Pengutronix e.K.                           | Ulrich Ölmann               |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
OSS-Tools mailing list
OSS-Tools@pengutronix.de

Reply via email to