mirror of
https://frontier.innolan.net/rainlance/amiga-tz.git
synced 2025-11-22 20:18:02 +00:00
Revert the change that added meta-information to version-3 format.
Further testing found that it was incompatible with Ubuntu 12.04 glibc so this feature requires redesign and more testing. * Makefile (ZFLAGS): Remove comment about name and version info. Make it an empty var instead. * tzfile.5, tzfile.h: Remove description of meta-information. * zic.8: Remove options -n and -o. * zic.c: Don't include <stddef.h>. (genoption, genoptions, genname, addgenoption, writevalue): Remove. (usage, main, writezone): Remove support for -n and -o.
This commit is contained in:
3
Makefile
3
Makefile
@ -241,8 +241,7 @@ LDFLAGS= $(LFLAGS)
|
||||
zic= ./zic
|
||||
ZIC= $(zic) $(ZFLAGS)
|
||||
|
||||
# Uncomment this to put name and version info into zic output files.
|
||||
#ZFLAGS= -n -o version='$(VERSION)'
|
||||
ZFLAGS=
|
||||
|
||||
# The name of a Posix-compliant `awk' on your system.
|
||||
AWK= awk
|
||||
|
||||
29
tzfile.5
29
tzfile.5
@ -134,43 +134,22 @@ For version-2-format time zone files,
|
||||
the above header and data are followed by a second header and data,
|
||||
identical in format except that
|
||||
eight bytes are used for each transition time or leap second time.
|
||||
After the second header and data,
|
||||
and just before the end of the file, comes a newline-enclosed,
|
||||
After the second header and data comes a newline-enclosed,
|
||||
POSIX-TZ-environment-variable-style string for use in handling instants
|
||||
after the last transition time stored in the file
|
||||
(with nothing between the newlines if there is no POSIX representation for
|
||||
such instants).
|
||||
.PP
|
||||
Version-3-format time zone files have the following additions:
|
||||
.IP
|
||||
The POSIX-TZ-style string may use two minor extensions to the
|
||||
POSIX TZ format, as described in
|
||||
For version-3-format time zone files, the POSIX-TZ-style string may
|
||||
use two minor extensions to the POSIX TZ format, as described in
|
||||
.IR newtzset (3).
|
||||
First, the hours part of its transition times may be signed and range from
|
||||
\(mi167 through 167 instead of the POSIX-required unsigned values
|
||||
from 0 through 24. Second, DST is in effect all year if it starts
|
||||
January 1 at 00:00 and ends December 31 at 24:00 plus the difference
|
||||
between daylight saving and standard time.
|
||||
.IP
|
||||
The newline-enclosed POSIX-TZ-style string is preceded by a section
|
||||
containing auxiliary meta-information that is not needed to process
|
||||
time stamps. This section consists of another copy of the
|
||||
newline-enclosed POSIX-TZ-style string (this is for the benefit of
|
||||
version-2-only clients), followed by a four-byte integer size value,
|
||||
followed by zero or more NUL-terminated byte strings, followed by an
|
||||
additional NUL. The size value is the total number of bytes in all
|
||||
the byte strings, including the trailing NULs at the end of the
|
||||
strings, but not including the additional NUL. Each byte string
|
||||
consists of a name-value pair separated by "=". Names consist of
|
||||
ASCII letters, digits and underscores, and start with a letter;
|
||||
duplicate names are not allowed. Two common names are "name", the
|
||||
Zone name for the data, and "version", the data's version number.
|
||||
Values can contain any bytes except NUL.
|
||||
.PP
|
||||
Future additions to the format may insert more data just before the
|
||||
newline-enclosed POSIX-TZ-style string at the end of the file, so
|
||||
clients should not assume that this string immediately follows
|
||||
the auxiliary meta-information.
|
||||
Future changes to the format may append more data.
|
||||
.SH SEE ALSO
|
||||
newctime(3), newtzset(3)
|
||||
.\" This file is in the public domain, so clarified as of
|
||||
|
||||
6
tzfile.h
6
tzfile.h
@ -89,12 +89,6 @@ struct tzhead {
|
||||
** Second, its DST start time may be January 1 at 00:00 and its stop
|
||||
** time December 31 at 24:00 plus the difference between DST and
|
||||
** standard time, indicating DST all year.
|
||||
** Third, the newline-enclosed TZ string is preceded by a new section
|
||||
** consisting of another copy of the string, followed by a four-byte
|
||||
** integer size value, followed by zero or more NUL-terminated
|
||||
** name=value byte strings, followed by an additional NUL. The size
|
||||
** value gives the total size of the name=value byte strings,
|
||||
** including their terminating NUL bytes, but excluding the additional NUL.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
14
zic.8
14
zic.8
@ -15,11 +15,6 @@ zic \- time zone compiler
|
||||
.B \-l
|
||||
.I localtime
|
||||
] [
|
||||
.B \-n
|
||||
] [
|
||||
.B \-o
|
||||
.IB name = value
|
||||
] [
|
||||
.B \-p
|
||||
.I posixrules
|
||||
] [
|
||||
@ -67,15 +62,6 @@ will act as if the input contained a link line of the form
|
||||
.ti +.5i
|
||||
Link \fItimezone\fP localtime
|
||||
.TP
|
||||
.B "\-n"
|
||||
Store each zone's name into its generated file, as meta-information
|
||||
with the name "name" and value the zone's name.
|
||||
.TP
|
||||
.BI "\-o " name = value
|
||||
Store the given name-value pair into the generated file, as
|
||||
meta-information. This option can be repeated, once for each distinct
|
||||
name.
|
||||
.TP
|
||||
.BI "\-p " timezone
|
||||
Use the given time zone's rules when handling POSIX-format
|
||||
time zone environment variables.
|
||||
|
||||
59
zic.c
59
zic.c
@ -9,7 +9,6 @@
|
||||
#include "tzfile.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define ZIC_VERSION '3'
|
||||
|
||||
@ -141,9 +140,6 @@ static int yearistype(int year, const char * type);
|
||||
static int charcnt;
|
||||
static int errors;
|
||||
static const char * filename;
|
||||
static const char ** genoption;
|
||||
static int genoptions;
|
||||
static int genname;
|
||||
static int leapcnt;
|
||||
static int leapseen;
|
||||
static zic_t leapminyear;
|
||||
@ -436,8 +432,7 @@ static _Noreturn void
|
||||
usage(FILE *stream, int status)
|
||||
{
|
||||
(void) fprintf(stream, _("%s: usage is %s \
|
||||
[ --version ] [ --help ] [ -v ] [ -l localtime ]\\\n\
|
||||
\t[ -n ] [ -o name=value ]... [ -p posixrules ] \\\n\
|
||||
[ --version ] [ --help ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\
|
||||
\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n\
|
||||
\n\
|
||||
Report bugs to %s.\n"),
|
||||
@ -451,29 +446,6 @@ static const char * directory;
|
||||
static const char * leapsec;
|
||||
static const char * yitcommand;
|
||||
|
||||
static int
|
||||
addgenoption(char const *option)
|
||||
{
|
||||
register char const *o = option;
|
||||
register ptrdiff_t namelen;
|
||||
register int i;
|
||||
if (! (isascii (*o) && isalpha(*o)))
|
||||
return 0;
|
||||
while (*++o != '=')
|
||||
if (! (isascii (*o) && (isalnum(*o) || *o == '_')))
|
||||
return 0;
|
||||
namelen = o - option;
|
||||
if (namelen == sizeof "name" - 1
|
||||
&& memcmp(option, "name", namelen) == 0)
|
||||
return 0;
|
||||
for (i = 0; i < genoptions; i++)
|
||||
if (strncmp(genoption[i], option, namelen + 1) == 0)
|
||||
return 0;
|
||||
genoption = erealloc(genoption, (genoptions + 1) * sizeof *genoption);
|
||||
genoption[genoptions++] = option;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
@ -504,7 +476,7 @@ main(int argc, char **argv)
|
||||
} else if (strcmp(argv[i], "--help") == 0) {
|
||||
usage(stdout, EXIT_SUCCESS);
|
||||
}
|
||||
while ((c = getopt(argc, argv, "d:l:p:L:no:vsy:")) != EOF && c != -1)
|
||||
while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1)
|
||||
switch (c) {
|
||||
default:
|
||||
usage(stderr, EXIT_FAILURE);
|
||||
@ -528,17 +500,6 @@ _("%s: More than one -l option specified\n"),
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
case 'n':
|
||||
genname = TRUE;
|
||||
break;
|
||||
case 'o':
|
||||
if (!addgenoption(optarg)) {
|
||||
fprintf(stderr,
|
||||
_("%s: %s: invalid -o option\n"),
|
||||
progname, optarg);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
if (psxrules == NULL)
|
||||
psxrules = optarg;
|
||||
@ -1432,7 +1393,6 @@ writezone(const char *const name, const char *const string)
|
||||
register int leapcnt32, leapi32;
|
||||
register int timecnt32, timei32;
|
||||
register int pass;
|
||||
register int_fast32_t genlen;
|
||||
static char * fullname;
|
||||
static const struct tzhead tzh0;
|
||||
static struct tzhead tzh;
|
||||
@ -1748,21 +1708,6 @@ writezone(const char *const name, const char *const string)
|
||||
(void) putc(ttisgmts[i], fp);
|
||||
}
|
||||
(void) fprintf(fp, "\n%s\n", string);
|
||||
|
||||
genlen = 0;
|
||||
if (genname)
|
||||
genlen += sizeof "name=" + strlen (name);
|
||||
for (i = 0; i < genoptions; i++)
|
||||
genlen += strlen (genoption[i]) + 1;
|
||||
puttzcode(genlen, fp);
|
||||
|
||||
if (genname)
|
||||
fprintf(fp, "name=%s%c", name, 0);
|
||||
for (i = 0; i < genoptions; i++) {
|
||||
register char const *v = genoption[i];
|
||||
fprintf(fp, "%s%c", v, 0);
|
||||
}
|
||||
fprintf(fp, "%c\n%s\n", 0, string);
|
||||
if (ferror(fp) || fclose(fp)) {
|
||||
(void) fprintf(stderr, _("%s: Error writing %s\n"),
|
||||
progname, fullname);
|
||||
|
||||
Reference in New Issue
Block a user