This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Ping - old patch from April - mingw support for I32/I64 MS printf formatters to c-format.c


On 3/18/08, Kai Tietz <Kai.Tietz@onevision.com> wrote:
> Hi Danny,
>
> "Danny Smith" <dansmister@gmail.com> wrote on 16.03.2008 06:32:03:
>
> > On Fri, Mar 14, 2008 at 11:55 PM, Kai Tietz <Kai.Tietz@onevision.com> w
> > >  Thank you for the log file. I correct the tested cases so far. The
> major
> > >  problem is that by your suggestion 'I64' length specifier isn't
> treated as
> > >  equivalent to the gnu 'll' length sepecifier. This is the reason for
> the
> > >  failure of a lot of warnings. I let the test-case ms_warnll-1.c as it
> is
> > >  for showing the issue. I64 and co are declared as STD_EXT, which is
> in my
> > >  opinion not correct. They should be set as STD_C890 IMHO.
> I mean STD_C890 is STD_C89. I removed from the testcase ms_warnll-1.c the
> -std settings to let the test pass. We should test I64.
>
> I attached the revised patch.
>
> > As I indicated earlier, handling of ms_strftime was  and still is
> incorrect.
> >
> > With your patch and this snippet:
> >
> > #include <time.h>
> > #include <stdio.h>
> > #include <sys/types.h>
> >
> > int main()
> > {
> >     char buf[128];
> >     time_t ltime;
> >     struct tm* today;
> >
> >     time (&ltime);
> >     today =  localtime(&ltime);
> >
> >     printf ("c, x, y, formats\n");
> >     strftime (buf, 128, "c: %c\n", today);
> >     printf (buf);
> >     strftime (buf, 128, "x: %x\n", today);
> >     printf (buf);
> >     strftime (buf, 128, "y: %y\n", today);
> >     printf (buf);
> >
> >
> >     printf ("Alternative #c, #x, #y, formats\n");
> >     strftime (buf, 128, "#c %#c\n", today);
> >     printf (buf);
> >     strftime (buf, 128, "#x %#x\n", today);
> >     printf (buf);
> >     strftime (buf, 128, "#y %#y\n", today);
> >     printf (buf);
> >
> >     return 0;
> > }
> >
> > compiled as
> >
> > gcc -Wall  -Wformat-y2k ms_stftrime_y2k.c
> >
> > I get:
> >
> > ms_stftrime_y2k.c: In function 'main':
> > ms_stftrime_y2k.c:24: warning: '#' flag used with '%c' ms_strftime
> format
> > ms_stftrime_y2k.c: warning: '#' flag used with '%x' ms_strftime format
> > ms_stftrime_y2k.c:28: warning: '#' flag used with '%y' ms_strftime
> format
> >
> > 1) The warnings are bogus.
> > 2) There are no  y2k warnings, but there should be, because this is
> > the output:
> >
> > c, x, y, formats
> > c: 03/16/08 16:05:38
> > x: 03/16/08
> > y: 08
> > Alternative #c, #x, #y, formats
> > #c Sunday, March 16, 2008 16:05:38
> > #x Sunday, March 16, 2008
> > #y 8
> >
> >
> > Note that '#' does not have glibc meaning.  Instead,  when prefixing c
> > and x flags, is like 'E'.
> I corrected this as general option with type of STD_EXT and add the y2k
> check to cxy format specifiers.

Attached is the gcc test log for formatters for this latest patch
(recompiled and retested in like 10 minutes :)

Attachment: gcc.log.bz2
Description: BZip2 compressed data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]