[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] posixtm: don't reject a time with "60" as the number of seco
From: |
Eric Blake |
Subject: |
Re: [PATCH] posixtm: don't reject a time with "60" as the number of seconds |
Date: |
Wed, 16 Sep 2009 15:20:02 +0000 (UTC) |
User-agent: |
Loom/3.14 (http://gmane.org/) |
Jim Meyering <jim <at> meyering.net> writes:
> FYI, here's the new test, in case anyone feels like reviewing:
>
> +static struct posixtm_test T[] =
> + {
> + { "12131415.16", 13, " 1039788916 Fri Dec 13 14:15:16 2002" },
> + { "12131415.16", 13, " 1039788916 Fri Dec 13 14:15:16 2002" },
I like how you made the test independent of the year, later on.
> + { "000001010000.00", 13, "-62167132800 Sun Jan 1 00:00:00 0000" },
> + { "190112132045.52", 13, " -2147483648 Fri Dec 13 20:45:52 1901" },
> + { "190112132045.53", 13, " -2147483647 Fri Dec 13 20:45:53 1901" },
> + { "190112132046.52", 13, " -2147483588 Fri Dec 13 20:46:52 1901" },
> + { "190112132145.52", 13, " -2147480048 Fri Dec 13 21:45:52 1901" },
> + { "190112142045.52", 13, " -2147397248 Sat Dec 14 20:45:52 1901" },
> + { "190201132045.52", 13, " -2144805248 Mon Jan 13 20:45:52 1902" },
I would feel more comfortable if we split this into two arrays, one supported
by 32-bit signed time_t run on all hosts, and another for 39+-bit time_t run
only on supporting hosts. That way, even 32-bit time_t gets some test
exposure, for the values which are in range.
> + /* This test data also assumes that time_t is signed and is at least
> + 39 bits wide, so that it can represent all years from 0000 through
> + 9999. A host with 32-bit signed time_t can represent only time
> + stamps in the range 1901-12-13 20:45:52 through 2038-01-18
> + 03:14:07 UTC, assuming POSIX time_t with no leap seconds, so test
> + cases outside this range will not work on such a host. */
> + if ( ! TYPE_SIGNED (time_t))
> + {
> + fprintf (stderr, "%s: this test requires signed time_t\n");
> + return 77;
> + }
Is this true? It seems like unsigned 64-bit time_t will still pass this test.
> +
> + if (sizeof (time_t) * CHAR_BIT < 39)
> + {
> + fprintf (stderr, "%s: this test requires time_t at least 39 bits
wide\n");
> + return 77;
> + }
Given my above idea for splitting into two arrays, it would be nice if this
message occurred after testing the first array, and included wording such
as "skipping remainder of test".
--
Eric Blake
- [PATCH] posixtm: don't reject a time with "60" as the number of seconds, Jim Meyering, 2009/09/14
- Re: [PATCH] posixtm: don't reject a time with "60" as the number of seconds, Paolo Bonzini, 2009/09/14
- Re: [PATCH] posixtm: don't reject a time with "60" as the number of seconds, Jim Meyering, 2009/09/15
- Re: [PATCH] posixtm: don't reject a time with "60" as the number of seconds, Paolo Bonzini, 2009/09/16
- Re: [PATCH] posixtm: don't reject a time with "60" as the number of seconds, Jim Meyering, 2009/09/16
- Re: [PATCH] posixtm: don't reject a time with "60" as the number of seconds, Jim Meyering, 2009/09/19
- Re: [PATCH] posixtm: don't reject a time with "60" as the number of seconds, Eric Blake, 2009/09/19
- Re: [PATCH] posixtm: don't reject a time with "60" as the number of seconds, Jim Meyering, 2009/09/19