From 2393535f0d7df55dae3b4fbf5dbcfa7f87192762 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Mon, 22 Oct 2012 14:47:58 -0700 Subject: [PATCH] Support zone.tab in bionic, and remove the file format version. Bug: 7012465 Change-Id: I6335c91ebadc609fae85bad94db972be7574b6e4 --- libc/tools/zoneinfo/ZoneCompactor.java | 30 +++++++++++++++---------- libc/tools/zoneinfo/generate | 3 ++- libc/tzcode/localtime.c | 9 +------- libc/zoneinfo/tzdata | Bin 522162 -> 541098 bytes 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/libc/tools/zoneinfo/ZoneCompactor.java b/libc/tools/zoneinfo/ZoneCompactor.java index 6ce24cfc8..8a1a62854 100644 --- a/libc/tools/zoneinfo/ZoneCompactor.java +++ b/libc/tools/zoneinfo/ZoneCompactor.java @@ -107,7 +107,7 @@ public class ZoneCompactor { return ret; } - public ZoneCompactor(String setupFile, String dataDirectory, String outputDirectory, String version) throws Exception { + public ZoneCompactor(String setupFile, String dataDirectory, String zoneTabFile, String outputDirectory, String version) throws Exception { // Read the setup file, and concatenate all the data. ByteArrayOutputStream allData = new ByteArrayOutputStream(); BufferedReader reader = new BufferedReader(new FileReader(setupFile)); @@ -138,6 +138,7 @@ public class ZoneCompactor { } } } + reader.close(); // Fill in fields for links. Iterator it = links.keySet().iterator(); @@ -156,18 +157,14 @@ public class ZoneCompactor { // Write the header. - // byte[12] tzdata_version -- 'tzdata2012f\0' - // int file_format_version -- probably won't need this, but just in case - // int index_offset -- likewise + // byte[12] tzdata_version -- 'tzdata2012f\0' + // int index_offset -- so we can slip in extra header fields in a backwards-compatible way // int data_offset // int zonetab_offset // tzdata_version f.write(toAscii(new byte[12], version)); - // file_format_version - f.writeInt(1); - // Write dummy values for the three offsets, and remember where we need to seek back to later // when we have the real values. int index_offset_offset = (int) f.getFilePointer(); @@ -201,8 +198,17 @@ public class ZoneCompactor { // Write the data. f.write(allData.toByteArray()); - // TODO: append the zonetab. - int zonetab_offset = 0; + // Copy the zone.tab. + reader = new BufferedReader(new FileReader(zoneTabFile)); + while ((s = reader.readLine()) != null) { + if (!s.startsWith("#")) { + f.writeBytes(s); + f.write('\n'); + } + } + reader.close(); + + int zonetab_offset = (int) f.getFilePointer(); // Go back and fix up the offsets in the header. f.seek(index_offset_offset); @@ -226,10 +232,10 @@ public class ZoneCompactor { } public static void main(String[] args) throws Exception { - if (args.length != 4) { - System.err.println("usage: java ZoneCompactor "); + if (args.length != 5) { + System.err.println("usage: java ZoneCompactor "); System.exit(0); } - new ZoneCompactor(args[0], args[1], args[2], args[3]); + new ZoneCompactor(args[0], args[1], args[2], args[3], args[4]); } } diff --git a/libc/tools/zoneinfo/generate b/libc/tools/zoneinfo/generate index e9ff59bf6..27d023fdb 100755 --- a/libc/tools/zoneinfo/generate +++ b/libc/tools/zoneinfo/generate @@ -89,7 +89,8 @@ def UpgradeTo(ftp, filename): '%s/libcore/util/ZoneInfo.java' % libcore_src_dir, '%s/libcore/io/BufferIterator.java' % libcore_src_dir]) subprocess.check_call(['java', 'ZoneCompactor', - 'setup', 'data', bionic_libc_zoneinfo_dir, new_version]) + 'setup', 'data', 'extracted/zone.tab', + bionic_libc_zoneinfo_dir, new_version]) # Run with no arguments from any directory, with no special setup required. diff --git a/libc/tzcode/localtime.c b/libc/tzcode/localtime.c index 31068f1eb..0ab9e0f44 100644 --- a/libc/tzcode/localtime.c +++ b/libc/tzcode/localtime.c @@ -2247,13 +2247,11 @@ static int __bionic_open_tzdata_path(const char* path, const char* olson_id, int } // byte[12] tzdata_version -- "tzdata2012f\0" - // int file_format_version -- 1 // int index_offset // int data_offset // int zonetab_offset struct bionic_tzdata_header { char tzdata_version[12]; - int32_t file_format_version; int32_t index_offset; int32_t data_offset; int32_t zonetab_offset; @@ -2269,14 +2267,9 @@ static int __bionic_open_tzdata_path(const char* path, const char* olson_id, int close(fd); return -1; } - if (ntohl(header.file_format_version) != 1) { - fprintf(stderr, "%s: bad file format version: %d\n", __FUNCTION__, header.file_format_version); - close(fd); - return -1; - } #if 0 - fprintf(stderr, "version: %s (%d)\n", header.tzdata_version, ntohl(header.file_format_version)); + fprintf(stderr, "version: %s\n", header.tzdata_version); fprintf(stderr, "index_offset = %d\n", ntohl(header.index_offset)); fprintf(stderr, "data_offset = %d\n", ntohl(header.data_offset)); fprintf(stderr, "zonetab_offset = %d\n", ntohl(header.zonetab_offset)); diff --git a/libc/zoneinfo/tzdata b/libc/zoneinfo/tzdata index f5fefe25baa4d8725665b486e10915cae58cc05c..a1c77d6dc4846c388fa55080b489d5c476126c12 100644 GIT binary patch delta 18743 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
3`J6Lz#fKB%m z1yCw;I+9DqIM$A1VV(*=cgEp*?>uux(GI#J{I5=3$-pOMNzEBrLsCuLF@>zjs6D9? znFBCqC=8rCD!BOSh&6Q(+JcRAiveBs{D59c# zH@A;#*h6n=+)#st<59655>id{PXv>~g|}i#yvOz4HnOj<&+-z=Si~a2h{yI zPyq6KjyBjN;{l-=uf(QKo!vXz_n=LS`XZlNchW|;qF-<-bkOg*B>II_e_+q%Ee8&t z)s#?%9cL2N_4iU|n0>K&p|{=Y<~3>wIA)SidGj&lpOnQXA31(xYzn9lwggeU&XEoN znpboU`H^|ATLEiAIY4}a5+Tj=^CvlX|Hkt-PpXtn-J!<&THtg{AW%Q=aAJqPmsd&0 zd8O%?GArE9SL$A6uzCmDP-riJU8zp@3eKLmZI5Z@B~D$V@MIz49@8d#EgB`SoiXsA z%7y95JG4|g1A&dt|K-_V{LLR3|Sq^3>W~H{*dc9-Oqpb>u2#{|HP(z z5%3Q(R*9{Q40O&+Z1jz3SZ z|MqCpPfqwqF&T6~dC>m|rH`f8NA;xMZ4L3s{>sc}q8nIhDJp@irPzU&l7I8-qGJ1t zW8~E_YMDx#pdh8q&8It&OyR_{qmn~@GAAlt$Q07fe<~9coIfv+XqvojooO0xNlR&) zUA!QWF0FJWPk5gNa!VN7p|`T<&f>_rAjlOZ%ep5^&-DzJN-C`drwLV`p1|kx-~HlD z1odTMJ$w^IGvFJ_7um|ItuC=I%Y%|~PzOWG>rTe!zx~~BZx01xg4lw?D3r1nyCifd_atX528Zeq+@Ez3^OOm%Mr>dE=rr@=E_jb_wsiq}EzaTe8x;j7Y({43rNrbtJUP`p3zeXjM3CPZj2aC1V|q0RPQfVzMGE9N`x}o+`)GxyIO(m)D@ogF$rl zdNNY78L5m!=CG6Ef3kblTT>D^P)Qy1|eKw+8Fi#fK5lOP{>U0Z*R z_4kaq@8N;M@ChIQO~NQhv4m6vW(O-}QoJ3qjf`_Bc*iksA((*3ny@RKmL%jTDqK=% zbSsszMD8GEU5FxJcM3C&{SrP_Z}|3cZf_jHqPltV*J$`74JokZ?-Wo$;)Y3GQmOHs zz(6u`0^cc*!5U`>?~Xu?K-IjHlsBuNv*ja0LMit2srvH5=iAbgNv delta 60 zcmZ40thnjDyi7?|N@7W(k%6I6Is*_e0