Mercurial > fife-parpg
comparison ext/libpng-1.2.29/Y2KINFO @ 0:4a0efb7baf70
* Datasets becomes the new trunk and retires after that :-)
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 29 Jun 2008 18:44:17 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4a0efb7baf70 |
---|---|
1 Y2K compliance in libpng: | |
2 ========================= | |
3 | |
4 May 8, 2008 | |
5 | |
6 Since the PNG Development group is an ad-hoc body, we can't make | |
7 an official declaration. | |
8 | |
9 This is your unofficial assurance that libpng from version 0.71 and | |
10 upward through 1.2.29 are Y2K compliant. It is my belief that earlier | |
11 versions were also Y2K compliant. | |
12 | |
13 Libpng only has three year fields. One is a 2-byte unsigned integer | |
14 that will hold years up to 65535. The other two hold the date in text | |
15 format, and will hold years up to 9999. | |
16 | |
17 The integer is | |
18 "png_uint_16 year" in png_time_struct. | |
19 | |
20 The strings are | |
21 "png_charp time_buffer" in png_struct and | |
22 "near_time_buffer", which is a local character string in png.c. | |
23 | |
24 There are seven time-related functions: | |
25 | |
26 png_convert_to_rfc_1123() in png.c | |
27 (formerly png_convert_to_rfc_1152() in error) | |
28 png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c | |
29 png_convert_from_time_t() in pngwrite.c | |
30 png_get_tIME() in pngget.c | |
31 png_handle_tIME() in pngrutil.c, called in pngread.c | |
32 png_set_tIME() in pngset.c | |
33 png_write_tIME() in pngwutil.c, called in pngwrite.c | |
34 | |
35 All appear to handle dates properly in a Y2K environment. The | |
36 png_convert_from_time_t() function calls gmtime() to convert from system | |
37 clock time, which returns (year - 1900), which we properly convert to | |
38 the full 4-digit year. There is a possibility that applications using | |
39 libpng are not passing 4-digit years into the png_convert_to_rfc_1123() | |
40 function, or that they are incorrectly passing only a 2-digit year | |
41 instead of "year - 1900" into the png_convert_from_struct_tm() function, | |
42 but this is not under our control. The libpng documentation has always | |
43 stated that it works with 4-digit years, and the APIs have been | |
44 documented as such. | |
45 | |
46 The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned | |
47 integer to hold the year, and can hold years as large as 65535. | |
48 | |
49 zlib, upon which libpng depends, is also Y2K compliant. It contains | |
50 no date-related code. | |
51 | |
52 | |
53 Glenn Randers-Pehrson | |
54 libpng maintainer | |
55 PNG Development Group |