Max Reitz, le lun. 27 mai 2019 16:25:40 +0200, a ecrit: > wchar_t may resolve to be an unsigned long on 32-bit architectures. > Using the %x conversion specifier will then give a compiler warning: > > ui/curses.c: In function ‘get_ucs’: > ui/curses.c:492:49: error: format ‘%x’ expects argument of type ‘unsigned > int’, but argument 3 has type ‘wchar_t’ {aka ‘long int’} [-Werror=format=] > 492 | fprintf(stderr, "Could not convert 0x%04x " > | ~~~^ > | | > | unsigned int > | %04lx > 493 | "from wchar_t to a multibyte character: %s\n", > 494 | wch, strerror(errno)); > | ~~~ > | | > | wchar_t {aka long int} > ui/curses.c:504:49: error: format ‘%x’ expects argument of type ‘unsigned > int’, but argument 3 has type ‘wchar_t’ {aka ‘long int’} [-Werror=format=] > 504 | fprintf(stderr, "Could not convert 0x%04x " > | ~~~^ > | | > | unsigned int > | %04lx > 505 | "from a multibyte character to UCS-2 : %s\n", > 506 | wch, strerror(errno)); > | ~~~ > | | > | wchar_t {aka long int} > > Fix this by casting the wchar_t value to an unsigned long and using %lx > as the conversion specifier. > > Fixes: b7b664a4fe9a955338f2e11a0f7433b29c8cbad0 > Signed-off-by: Max Reitz <mre...@redhat.com>
Reviewed-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> > --- > ui/curses.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/ui/curses.c b/ui/curses.c > index 1f3fcabb00..e9319eb8ae 100644 > --- a/ui/curses.c > +++ b/ui/curses.c > @@ -489,9 +489,9 @@ static uint16_t get_ucs(wchar_t wch, iconv_t conv) > memset(&ps, 0, sizeof(ps)); > ret = wcrtomb(mbch, wch, &ps); > if (ret == -1) { > - fprintf(stderr, "Could not convert 0x%04x " > + fprintf(stderr, "Could not convert 0x%04lx " > "from wchar_t to a multibyte character: %s\n", > - wch, strerror(errno)); > + (unsigned long)wch, strerror(errno)); > return 0xFFFD; > } > > @@ -501,9 +501,9 @@ static uint16_t get_ucs(wchar_t wch, iconv_t conv) > such = sizeof(uch); > > if (iconv(conv, &pmbch, &smbch, &puch, &such) == (size_t) -1) { > - fprintf(stderr, "Could not convert 0x%04x " > + fprintf(stderr, "Could not convert 0x%04lx " > "from a multibyte character to UCS-2 : %s\n", > - wch, strerror(errno)); > + (unsigned long)wch, strerror(errno)); > return 0xFFFD; > } > > -- > 2.21.0 > > -- Samuel /* * [...] Note that 120 sec is defined in the protocol as the maximum * possible RTT. I guess we'll have to use something other than TCP * to talk to the University of Mars. * PAWS allows us longer timeouts and large windows, so once implemented * ftp to mars will work nicely. */ (from /usr/src/linux/net/inet/tcp.c, concerning RTT [retransmission timeout])