Re: amiga-fdisk: ftbfs with GCC-14
Hi Adrian,
On Thu, Aug 15, 2024 at 11:44 PM John Paul Adrian Glaubitz
<glaubitz@physik.fu-berlin.de> wrote:
> On Thu, 2024-08-15 at 22:56 +0200, Christian T. Steigies wrote:
> > gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/home/cts/salsa/amiga-fdisk=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wall -pedantic -DUSE_READLINE=yes -I./include -Wdate-time -D_FORTIFY_SOURCE=2 -c -o fdisk.o fdisk.c
> > fdisk.c: In function ‘atonum’:
> > fdisk.c:85:33: warning: format ‘%x’ expects argument of type ‘unsigned int *’, but argument 3 has type ‘int *’ [-Wformat=]
> > 85 | sscanf(s + 2, "%x", &n);
> > | ~^ ~~
> > | | |
> > | | int *
> > | unsigned int *
> > | %x
> > fdisk.c:87:33: warning: format ‘%o’ expects argument of type ‘unsigned int *’, but argument 3 has type ‘int *’ [-Wformat=]
> > 87 | sscanf(s + 1, "%o", &n);
> > | ~^ ~~
> > | | |
> > | | int *
> > | unsigned int *
> > | %o
> >
> > I tried defining n in fdisk.c as unsigned int but this caused even more
> > warnings in other places. Do I have to cast the arguments in sscanf to
> > unsigned int? It wants "unsigned int *", is it as simple as this or is
> > there a better solution?
>
> In this case, I would just recommend to use the proper format specifiers, see:
"%x" and "%o" always operate on unsigned values. There are no
format specifiers for signed hexadecimal and octal values, unlike for
decimal values ("%u" vs. "%d").
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Reply to: