symbian-qemu-0.9.1-12/libpng-1.2.32/Y2KINFO
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1    Y2K compliance in libpng:
       
     2    =========================
       
     3 
       
     4       September 18, 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.32 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