Hi Ricardo, On Tue, Sep 19, 2023 at 10:10:41PM +0200, Ricardo Ribalda wrote: > Hi Sakari > > On Tue, 19 Sept 2023 at 22:07, Sakari Ailus <sakari.ailus@xxxxxx> wrote: > > > > Hi Ricardo, > > > > Thanks for the patch. > > > > On Tue, Sep 19, 2023 at 04:01:23PM +0200, Ricardo Ribalda wrote: > > > mipsel64el, ppc64el, ia64, ppc64, sparc64 and x32 have different lenghts > > > for long long ints, which result in some compilation errors. > > > > > > Lets add some castings to help the compiler deal with this. > > > > > > We cannot use the Format macro constants ffrom inttypes because they > > > seem to not be compatible with kernel (__u64 et al) types. > > > > > > Signed-off-by: Ricardo Ribalda <ricardo@xxxxxxxxxxx> > > > --- > > > yavta.c | 35 +++++++++++++++++++++-------------- > > > 1 file changed, 21 insertions(+), 14 deletions(-) > > > > > > diff --git a/yavta.c b/yavta.c > > > index d562863..bf54e4f 100644 > > > --- a/yavta.c > > > +++ b/yavta.c > > > @@ -1313,7 +1313,8 @@ static void video_query_menu(struct device *dev, > > > printf(" %u: %.32s%s\n", menu.index, menu.name, > > > menu.index == value ? " (*)" : ""); > > > else > > > - printf(" %u: %lld%s\n", menu.index, menu.value, > > > + printf(" %u: %lld%s\n", menu.index, > > > > Could you instead use PRId64 for this? You can avoid casting to another > > type this way. Same for the other cases. > > Already tried this: > > @@ -1313,7 +1313,7 @@ static void video_query_menu(struct device *dev, > printf(" %u: %.32s%s\n", menu.index, menu.name, > menu.index == value ? " (*)" : ""); > else > - printf(" %u: %lld%s\n", menu.index, menu.value, > + printf(" %u: %" PRId64 "%s\n", menu.index, menu.value, > menu.index == value ? " (*)" : ""); > }; > } > > but gcc was not happy: > > yavta.c: In function ‘video_query_menu’: > yavta.c:1316:11: warning: format ‘%ld’ expects argument of type ‘long > int’, but argument 3 has type ‘__s64’ {aka ‘long long int’} > [-Wformat=] > 1316 | printf(" %u: %" PRId64 "%s\n", menu.index, menu.value, > | ^~~~~~~~~ ~~~~~~~~~~ > | | > | __s64 {aka > long long int} > In file included from yavta.c:26: > /usr/include/inttypes.h:57:34: note: format string is defined here > 57 | # define PRId64 __PRI64_PREFIX "d" I guess I should have expected this... I'm not sure if it'd be prettier but another option is to use the PRI* macros and explicitly cast to a standard type. Using the standard types in the V4L2 header would have avoided this issue. I wonder if there's anything to be gained by using the kernel types. Cc Hans, too. > > So I took the shotgun and fixed it with castings :) :-) -- Regards, Sakari Ailus