diff options
Diffstat (limited to 'libc')
-rw-r--r-- | libc/tools/zoneinfo/ZoneCompactor.java | 30 | ||||
-rwxr-xr-x | libc/tools/zoneinfo/generate | 3 | ||||
-rw-r--r-- | libc/tzcode/localtime.c | 9 | ||||
-rw-r--r-- | 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 6ce24cf..8a1a628 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<String> 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 <setup file> <data directory> <output directory> <tzdata version>"); + if (args.length != 5) { + System.err.println("usage: java ZoneCompactor <setup file> <data directory> <zone.tab file> <output directory> <tzdata version>"); 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 e9ff59b..27d023f 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 f5718b9..fcaf48b 100644 --- a/libc/tzcode/localtime.c +++ b/libc/tzcode/localtime.c @@ -2200,13 +2200,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; @@ -2222,14 +2220,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 Binary files differindex f5fefe2..a1c77d6 100644 --- a/libc/zoneinfo/tzdata +++ b/libc/zoneinfo/tzdata |