mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-29 03:45:02 +01:00
Compare commits
136
Commits
stable/12
...
releng/12.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7dac93b921 | ||
|
|
69c6703ee2 | ||
|
|
717ed84218 | ||
|
|
409819ae99 | ||
|
|
a780210457 | ||
|
|
b2107e60f6 | ||
|
|
a4c0d14bbc | ||
|
|
ae6d654f4f | ||
|
|
d35c456500 | ||
|
|
054503caa9 | ||
|
|
1e71fa9e41 | ||
|
|
432bc9ea6c | ||
|
|
9c9d0d9051 | ||
|
|
a165b4591e | ||
|
|
f1b8efb1b4 | ||
|
|
10fd3f883a | ||
|
|
9fe0b0c23b | ||
|
|
6be068e857 | ||
|
|
1bb617ba2b | ||
|
|
b13a682793 | ||
|
|
a8c4f99a67 | ||
|
|
12803d8a99 | ||
|
|
895e024546 | ||
|
|
9faa0bc4fa | ||
|
|
9dc80086cd | ||
|
|
14ba78b3f8 | ||
|
|
b6dad073f5 | ||
|
|
0fe77ad613 | ||
|
|
01819b5829 | ||
|
|
2430d82b40 | ||
|
|
18b6113dfa | ||
|
|
ee56c5900a | ||
|
|
6e927d10c5 | ||
|
|
a946f99873 | ||
|
|
f5ddeabc08 | ||
|
|
92c9af7267 | ||
|
|
bc74f783f9 | ||
|
|
bb4435255d | ||
|
|
bf30c74e5a | ||
|
|
71c7f71de5 | ||
|
|
81526c74d9 | ||
|
|
fb01adcfa7 | ||
|
|
d50b66a6c3 | ||
|
|
e7b28b5bb3 | ||
|
|
f1d1353d2d | ||
|
|
421c07013f | ||
|
|
49f3ea024b | ||
|
|
af61348d61 | ||
|
|
142f0d36d9 | ||
|
|
f8e0874a2d | ||
|
|
602f1da042 | ||
|
|
efc9549ba0 | ||
|
|
df378912eb | ||
|
|
0f1ee15236 | ||
|
|
4dd124c317 | ||
|
|
b306be13a9 | ||
|
|
32ed3ad05e | ||
|
|
0b9b9a15c2 | ||
|
|
4e71c6a2e1 | ||
|
|
fdf069c168 | ||
|
|
6bddcd7682 | ||
|
|
545f860883 | ||
|
|
e682b62c96 | ||
|
|
1392140954 | ||
|
|
e8ede3fad6 | ||
|
|
58dcfdf3fb | ||
|
|
2120d07af0 | ||
|
|
fc825298b8 | ||
|
|
85b4a00679 | ||
|
|
229d311aa4 | ||
|
|
7b3386dba2 | ||
|
|
0b4300a472 | ||
|
|
d20c61bbc2 | ||
|
|
30710f108d | ||
|
|
1d21fe9cea | ||
|
|
5a4b7c77cb | ||
|
|
a022ca0c82 | ||
|
|
5a0826ac57 | ||
|
|
8e83334bb6 | ||
|
|
e498e31c02 | ||
|
|
836443bb75 | ||
|
|
b7b180cd7c | ||
|
|
f89b6bcc3d | ||
|
|
f4d391bd54 | ||
|
|
ac4df2c877 | ||
|
|
17a1e8854f | ||
|
|
9a7010f2e4 | ||
|
|
6a550fd843 | ||
|
|
84b6afb536 | ||
|
|
8604f4ae91 | ||
|
|
fd618e2e21 | ||
|
|
b89f0f0a3a | ||
|
|
65dd5ed99b | ||
|
|
f614d5fcd6 | ||
|
|
f0804798da | ||
|
|
006fd7bf6e | ||
|
|
5c0363ec1a | ||
|
|
88afe3774d | ||
|
|
c18eb742b0 | ||
|
|
df309babcf | ||
|
|
7d38c4af17 | ||
|
|
7fc1f569ab | ||
|
|
2367fca656 | ||
|
|
e5d077535c | ||
|
|
718a6114c4 | ||
|
|
23ad3c58fe | ||
|
|
7006fb18e6 | ||
|
|
97f844cd60 | ||
|
|
370e97a407 | ||
|
|
8f19517f32 | ||
|
|
fe6dbcf757 | ||
|
|
a8c2d3888a | ||
|
|
54acd65f6f | ||
|
|
2967f72f70 | ||
|
|
fc5084447e | ||
|
|
44033ea604 | ||
|
|
747627b4d6 | ||
|
|
0686b950e6 | ||
|
|
4055c6150e | ||
|
|
a76dd71a2d | ||
|
|
b96e6772df | ||
|
|
9dc5a79fdc | ||
|
|
0a15fd63ec | ||
|
|
99d69579e8 | ||
|
|
c32f121ec4 | ||
|
|
e71aeea666 | ||
|
|
93b423cdbd | ||
|
|
6e4a57b50f | ||
|
|
4e5ba9e475 | ||
|
|
9de96f982d | ||
|
|
411040f202 | ||
|
|
feb814df6b | ||
|
|
752c173687 | ||
|
|
c55ffe5438 | ||
|
|
f76742c892 | ||
|
|
83d5345ea8 |
No files matched your search
+1
-1
@@ -1,7 +1,7 @@
|
||||
# $FreeBSD$
|
||||
|
||||
freebsd_instance:
|
||||
image: freebsd-12-1-release-amd64
|
||||
image: freebsd-12-2-release-amd64
|
||||
cpu: 8
|
||||
memory: 24G
|
||||
|
||||
|
||||
@@ -89,9 +89,11 @@ share/mk/*.test.mk freebsd-testing,ngie (same list as share/mk too) Pre-commit r
|
||||
stand/forth dteske Pre-commit review requested.
|
||||
stand/lua kevans Pre-commit review requested
|
||||
sys/compat/linuxkpi hselasky If in doubt, ask.
|
||||
sys/contrib/dev/ice erj Pre-commit phabricator review requested.
|
||||
sys/dev/e1000 erj Pre-commit phabricator review requested.
|
||||
sys/dev/ixgbe erj Pre-commit phabricator review requested.
|
||||
sys/dev/ixl erj Pre-commit phabricator review requested.
|
||||
sys/dev/ice erj Pre-commit phabricator review requested.
|
||||
sys/dev/sound/usb hselasky If in doubt, ask.
|
||||
sys/dev/usb hselasky If in doubt, ask.
|
||||
sys/dev/xen royger Pre-commit review recommended.
|
||||
|
||||
+16
-1
@@ -849,7 +849,9 @@ INSTALL_DDIR= ${_INSTALL_DDIR:S://:/:g:C:/$::}
|
||||
METALOG?= ${DESTDIR}/${DISTDIR}/METALOG
|
||||
METALOG:= ${METALOG:C,//+,/,g}
|
||||
IMAKE+= -DNO_ROOT METALOG=${METALOG}
|
||||
INSTALLFLAGS+= -U -M ${METALOG} -D ${INSTALL_DDIR}
|
||||
METALOG_INSTALLFLAGS= -U -M ${METALOG} -D ${INSTALL_DDIR}
|
||||
INSTALLFLAGS+= ${METALOG_INSTALLFLAGS}
|
||||
CERTCTLFLAGS= ${METALOG_INSTALLFLAGS}
|
||||
MTREEFLAGS+= -W
|
||||
.endif
|
||||
.if defined(BUILD_PKGS)
|
||||
@@ -859,6 +861,11 @@ INSTALLFLAGS+= -h sha256
|
||||
IMAKE_INSTALL= INSTALL="install ${INSTALLFLAGS}"
|
||||
IMAKE_MTREE= MTREE_CMD="mtree ${MTREEFLAGS}"
|
||||
.endif
|
||||
.if make(distributeworld)
|
||||
CERTCTLDESTDIR= ${DESTDIR}/${DISTDIR}/base
|
||||
.else
|
||||
CERTCTLDESTDIR= ${DESTDIR}
|
||||
.endif
|
||||
|
||||
DESTDIR_MTREEFLAGS= -deU
|
||||
# When creating worldtmp we don't need to set the directories as owned by root
|
||||
@@ -1419,6 +1426,14 @@ distributeworld installworld stageworld: _installcheck_world .PHONY
|
||||
${DESTDIR}/${DISTDIR}/${dist}.debug.meta
|
||||
.endfor
|
||||
.endif
|
||||
.endif # make(distributeworld)
|
||||
.if !make(packageworld) && ${MK_CAROOT} != "no"
|
||||
@if which openssl>/dev/null; then \
|
||||
DESTDIR=${CERTCTLDESTDIR} \
|
||||
sh ${SRCTOP}/usr.sbin/certctl/certctl.sh ${CERTCTLFLAGS} rehash \
|
||||
else \
|
||||
echo "No openssl on the host, not rehashing certificates target -- /etc/ssl may not be populated."; \
|
||||
fi
|
||||
.endif
|
||||
|
||||
packageworld: .PHONY
|
||||
|
||||
@@ -16,6 +16,200 @@ from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to
|
||||
the tip of head, and then rebuild without this option. The bootstrap process
|
||||
from older version of current across the gcc/clang cutover is a bit fragile.
|
||||
|
||||
20220322: p15 FreeBSD-EN-22:14.tzdata
|
||||
|
||||
Timezone database information update. [EN-22:14.tzdata]
|
||||
|
||||
20220315: p14 FreeBSD-SA-22:02.wifi
|
||||
FreeBSD-SA-22:03.openssl
|
||||
|
||||
Multiple WiFi issues [FreeBSD-SA-22:02.wifi]
|
||||
|
||||
OpenSSL certificate parsing infinite loop [FreeBSD-SA-22:03.openssl]
|
||||
|
||||
20220201: p13 FreeBSD-EN-22:08.i386
|
||||
|
||||
Fix regression in i386 TLB invalidation logic. [FreeBSD-EN-22:08.i386]
|
||||
|
||||
20220111: p12 FreeBSD-EN-22:02.xsave
|
||||
FreeBSD-EN-22:03.hyperv
|
||||
FreeBSD-EN-22:04.pcid
|
||||
FreeBSD-SA-22:01.vt
|
||||
|
||||
Correct size of the amd64 SSE area in the xsave layout [FreeBSD-EN-22:02.xsave]
|
||||
|
||||
Prepopulate Hyper-V PCI device bars [FreeBSD-EN-22:03.hyperv]
|
||||
|
||||
Fix amd64 pmap PCID mode invalidations [FreeBSD-EN-22:04.pcid]
|
||||
|
||||
Fix vt console buffer overflow [FreeBSD-SA-22:01.vt]
|
||||
|
||||
20211103: p11 FreeBSD-EN-21:27.caroot
|
||||
FreeBSD-EN-21:28.vmci
|
||||
FreeBSD-EN-21:29.tzdata
|
||||
|
||||
Root certificate bundle update. [EN-21:27.caroot]
|
||||
|
||||
Fix kernel panic in vmci driver initialization. [EN-21:28.vmci]
|
||||
|
||||
Timezone database information update. [EN-21:29.tzdata]
|
||||
|
||||
20210824: p10 FreeBSD-EN-21:24.libcrypto
|
||||
FreeBSD-EN-21:25.bhyve
|
||||
FreeBSD-SA-21:13.bhyve
|
||||
FreeBSD-SA-21:14.ggatec
|
||||
FreeBSD-SA-21:15.libfetch
|
||||
FreeBSD-SA-21:16.openssl
|
||||
FreeBSD-SA-21:17.openssl
|
||||
|
||||
Fix OpenSSL 1.1.1e API functions not being exported. [EN-21:24.libcrypto]
|
||||
|
||||
Fix NVMe iovec construction for large IOs. [EN-21:25.bhyve]
|
||||
|
||||
Fix missing error handling in bhyve(8) device models. [SA-21:13.bhyve]
|
||||
|
||||
Fix remote code execution in ggatec(8). [SA-21:14.ggatec]
|
||||
|
||||
Fix libfetch out of bounds read. [SA-21:15.libfetch]
|
||||
|
||||
Fix multiple OpenSSL vulnerabilities. [SA-21:16.openssl]
|
||||
|
||||
Fix multiple vulnerabilities in OpenSSL. [SA-21:17.openssl]
|
||||
|
||||
20210629: p9 FreeBSD-EN-21:19.libcasper
|
||||
FreeBSD-EN-21:22.linux_futex
|
||||
|
||||
libcasper assertion failures [EN-21:19.libcasper]
|
||||
|
||||
Linux compatibility layer futex(2) system call vulnerability [EN-21:22.linux_futex]
|
||||
|
||||
20210601: p8 FreeBSD-EN-21:17.libradius
|
||||
|
||||
Incorrect validation in rad_get_attr(3) [FreeBSD-EN-21:17.libradius]
|
||||
|
||||
20210526: p7 FreeBSD-EN-21:11.aesni
|
||||
FreeBSD-EN-21:14.pms
|
||||
FreeBSD-SA-21:11.smap
|
||||
FreeBSD-SA-21:12.libradius
|
||||
|
||||
Race condition in aesni(4) encrypt-then-auth operations [FreeBSD-EN-21:11.aesni]
|
||||
|
||||
pms(4) data corruption [FreeBSD-EN-21:14.pms]
|
||||
|
||||
SMAP bypass [FreeBSD-SA-21:11.smap]
|
||||
|
||||
Missing message validation in libradius(3) [FreeBSD-SA-21:12.libradius]
|
||||
|
||||
20210406: p6 FreeBSD-EN-21:09.pf
|
||||
FreeBSD-EN-21:10.lldb
|
||||
FreeBSD-SA-21:08.vm
|
||||
FreeBSD-SA-21:09.accept_filter
|
||||
FreeBSD-SA-21:10.jail_mount
|
||||
|
||||
net.pf.request_maxcount not settable from loader.conf(5) [EN-21:09.pf]
|
||||
|
||||
lldb abort on print command [EN-21:10.lldb]
|
||||
|
||||
Memory disclosure by stale virtual memory mapping [SA-21:08.vm]
|
||||
|
||||
Double free in accept_filter(9) socket configuration interface [SA-21:09.accept_filter]
|
||||
|
||||
Jail escape possible by mounting over jail root [SA-21:10.jail_mount]
|
||||
|
||||
20210325: p5 FreeBSD-SA-21:07.openssl
|
||||
|
||||
Fix multiple OpenSSL issues [SA-21:07.openssl]
|
||||
|
||||
20210223: p4 FreeBSD-SA-21:03.pam_login_access
|
||||
FreeBSD-SA-21:04.jail_remove
|
||||
FreeBSD-SA-21:05.jail_chdir
|
||||
FreeBSD-SA-21:06.xen
|
||||
FreeBSD-EN-21:06.microcode
|
||||
FreeBSD-EN-21:07.caroot
|
||||
FreeBSD-EN-21:08.freebsd-update
|
||||
|
||||
login.access fails to apply rules [SA-21:03.pam_login_access]
|
||||
|
||||
jail_remove(2) fails to kill all jailed processes [SA-21:04.jail_remove]
|
||||
|
||||
jail_attach(2) relies on the caller to change the cwd [SA-21:05.jail_chdir]
|
||||
|
||||
Xen grant mapping error handling issues [SA-21:06.xen]
|
||||
|
||||
Boot-time microcode loading causes a boot hang [EN-21:06.microcode]
|
||||
|
||||
Root certificate bundle update [EN-21:07.caroot]
|
||||
|
||||
freebsd-update passwd regeneration [EN-21:08.freebsd-update]
|
||||
|
||||
20210128: p3 FreeBSD-EN-21:01.tzdata
|
||||
FreeBSD-EN-21:03.vnet
|
||||
FreeBSD-EN-21:04.zfs
|
||||
FreeBSD-SA-21:01.fsdisclosure
|
||||
FreeBSD-SA-21:02.xenoom
|
||||
|
||||
Update timezone database information [EN-21:01.tzdata]
|
||||
|
||||
Panic when destroying VNET and epair simultaneously [EN-21:03.vnet]
|
||||
|
||||
zfs recv fails to propagate snapshot deletion [EN-21:04.zfs]
|
||||
|
||||
Uninitialized file system kernel stack leaks [SA-21:01.fsdisclosure]
|
||||
|
||||
Xen guest-triggered out of memory [SA-21:02.xenoom]
|
||||
|
||||
20201208: p2 FreeBSD-SA-20:33.openssl
|
||||
|
||||
Fix OpenSSL NULL pointer de-reference. [SA-20:33.openssl]
|
||||
|
||||
20201201: p1 FreeBSD-EN-20:19.audit
|
||||
FreeBSD-EN-20:20.tzdata
|
||||
FreeBSD-EN-20:21.ipfw
|
||||
FreeBSD-EN-20:22.callout
|
||||
FreeBSD-SA-20:31.icmp6
|
||||
FreeBSD-SA-20:32.rtsold
|
||||
|
||||
Fix execve/fexecve system call auditing. [EN-20:19.audit]
|
||||
|
||||
Update timezone database information. [EN-20:20.tzdata]
|
||||
|
||||
Fix uninitialized variable in ipfw. [EN-20:21.ipfw]
|
||||
|
||||
Fix race condition in callout CPU migration. [EN-20:22.callout]
|
||||
|
||||
Fix ICMPv6 use-after-free in error message handling. [SA-20:31.icmp6]
|
||||
|
||||
Fix multiple vulnerabilities in rtsold. [SA-20:32.rtsold]
|
||||
|
||||
20201027:
|
||||
12.2-RELEASE.
|
||||
|
||||
20200915: p1 FreeBSD-SA-20:27.ure
|
||||
FreeBSD-SA-20:28.bhyve_vmcs
|
||||
FreeBSD-SA-20:29.bhyve_svm
|
||||
FreeBSD-SA-20:30.ftpd
|
||||
|
||||
Fix ure device driver susceptible to packet-in-packet attack.
|
||||
[SA-20:27.ure]
|
||||
|
||||
Fix bhyve privilege escalation via VMCS access. [SA-20:28.bhyve_vmcs]
|
||||
|
||||
Fix bhyve SVM guest escape. [SA-20:29.bhyve_svm]
|
||||
|
||||
Fix ftpd privilege escalation via ftpchroot. [SA-20:30.ftpd]
|
||||
|
||||
20200912:
|
||||
The make.conf(5) MALLOC_PRODUCTION variable, used for disabling and
|
||||
enabling assertions and statistics gathering in malloc(3), has been
|
||||
migrated to a src.conf(5) WITH/WITHOUT_MALLOC_PRODUCTION option.
|
||||
|
||||
On stable branches, WITH_MALLOC_PRODUCTION is set by default, which
|
||||
means that malloc(3) has assertions and statistics gathering disabled,
|
||||
for improved performance.
|
||||
|
||||
For backwards compatibility, the make.conf(5) MALLOC_PRODUCTION is still
|
||||
honored, but it is now deprecated and undocumented.
|
||||
|
||||
20200909:
|
||||
The resume code now notifies devd with the 'kernel' system
|
||||
rather than the old 'kern' subsystem to be consistent with
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd October 16, 2019
|
||||
.Dd September 12, 2020
|
||||
.Dt ZFS 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -635,6 +635,16 @@ property can be either
|
||||
.Cm yes
|
||||
or
|
||||
.Cm no .
|
||||
.It Sy objsetid
|
||||
A unique identifier for this dataset within the pool. Unlike the dataset's
|
||||
.Sy guid
|
||||
, the
|
||||
.Sy objsetid
|
||||
of a dataset is not transferred to other pools when the snapshot is copied
|
||||
with a send/receive operation.
|
||||
The
|
||||
.Sy objsetid
|
||||
can be reused (for a new datatset) after the dataset is deleted.
|
||||
.It Sy origin
|
||||
For cloned file systems or volumes, the snapshot from which the clone was
|
||||
created. See also the
|
||||
|
||||
@@ -687,6 +687,15 @@ will decrease while
|
||||
increases.
|
||||
.It Sy guid
|
||||
A unique identifier for the pool.
|
||||
.It Sy load_guid
|
||||
A unique identifier for the pool.
|
||||
Unlike the
|
||||
.Sy guid
|
||||
property, this identifier is generated every time we load the pool (e.g. does
|
||||
not persist across imports/exports) and never changes while the pool is loaded
|
||||
(even if a
|
||||
.Sy reguid
|
||||
operation takes place).
|
||||
.It Sy health
|
||||
The current health of the pool. Health can be
|
||||
.Qq Sy ONLINE ,
|
||||
|
||||
@@ -613,8 +613,8 @@ typedef struct send_data {
|
||||
const char *fromsnap;
|
||||
const char *tosnap;
|
||||
boolean_t recursive;
|
||||
boolean_t verbose;
|
||||
boolean_t replicate;
|
||||
boolean_t verbose;
|
||||
|
||||
/*
|
||||
* The header nvlist is of the following format:
|
||||
@@ -848,36 +848,36 @@ send_iterate_fs(zfs_handle_t *zhp, void *arg)
|
||||
rv = -1;
|
||||
goto out;
|
||||
}
|
||||
VERIFY(0 == nvlist_add_uint64(nvfs, "origin",
|
||||
origin->zfs_dmustats.dds_guid));
|
||||
fnvlist_add_uint64(nvfs, "origin",
|
||||
origin->zfs_dmustats.dds_guid);
|
||||
}
|
||||
|
||||
/* iterate over props */
|
||||
VERIFY(0 == nvlist_alloc(&nv, NV_UNIQUE_NAME, 0));
|
||||
nv = fnvlist_alloc();
|
||||
send_iterate_prop(zhp, nv);
|
||||
VERIFY(0 == nvlist_add_nvlist(nvfs, "props", nv));
|
||||
nvlist_free(nv);
|
||||
fnvlist_add_nvlist(nvfs, "props", nv);
|
||||
fnvlist_free(nv);
|
||||
|
||||
/* iterate over snaps, and set sd->parent_fromsnap_guid */
|
||||
sd->parent_fromsnap_guid = 0;
|
||||
sd->parent_snaps = fnvlist_alloc();
|
||||
sd->snapprops = fnvlist_alloc();
|
||||
if (!sd->replicate && fromsnap_txg != 0)
|
||||
min_txg = fromsnap_txg;
|
||||
if (!sd->replicate && tosnap_txg != 0)
|
||||
max_txg = tosnap_txg;
|
||||
sd->parent_fromsnap_guid = 0;
|
||||
VERIFY(0 == nvlist_alloc(&sd->parent_snaps, NV_UNIQUE_NAME, 0));
|
||||
VERIFY(0 == nvlist_alloc(&sd->snapprops, NV_UNIQUE_NAME, 0));
|
||||
(void) zfs_iter_snapshots_sorted(zhp, send_iterate_snap, sd,
|
||||
min_txg, max_txg);
|
||||
VERIFY(0 == nvlist_add_nvlist(nvfs, "snaps", sd->parent_snaps));
|
||||
VERIFY(0 == nvlist_add_nvlist(nvfs, "snapprops", sd->snapprops));
|
||||
fnvlist_add_nvlist(nvfs, "snaps", sd->parent_snaps);
|
||||
fnvlist_add_nvlist(nvfs, "snapprops", sd->snapprops);
|
||||
fnvlist_free(sd->parent_snaps);
|
||||
fnvlist_free(sd->snapprops);
|
||||
|
||||
/* add this fs to nvlist */
|
||||
(void) snprintf(guidstring, sizeof (guidstring),
|
||||
"0x%llx", (longlong_t)guid);
|
||||
VERIFY(0 == nvlist_add_nvlist(sd->fss, guidstring, nvfs));
|
||||
nvlist_free(nvfs);
|
||||
fnvlist_add_nvlist(sd->fss, guidstring, nvfs);
|
||||
fnvlist_free(nvfs);
|
||||
|
||||
/* iterate over children */
|
||||
if (sd->recursive)
|
||||
@@ -894,13 +894,12 @@ out:
|
||||
|
||||
static int
|
||||
gather_nvlist(libzfs_handle_t *hdl, const char *fsname, const char *fromsnap,
|
||||
const char *tosnap, boolean_t recursive, boolean_t verbose,
|
||||
boolean_t replicate, nvlist_t **nvlp, avl_tree_t **avlp)
|
||||
const char *tosnap, boolean_t recursive, boolean_t replicate,
|
||||
boolean_t verbose, nvlist_t **nvlp, avl_tree_t **avlp)
|
||||
{
|
||||
zfs_handle_t *zhp;
|
||||
int error;
|
||||
uint64_t min_txg = 0, max_txg = 0;
|
||||
send_data_t sd = { 0 };
|
||||
int error;
|
||||
|
||||
zhp = zfs_open(hdl, fsname, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME);
|
||||
if (zhp == NULL)
|
||||
@@ -911,8 +910,8 @@ gather_nvlist(libzfs_handle_t *hdl, const char *fsname, const char *fromsnap,
|
||||
sd.fromsnap = fromsnap;
|
||||
sd.tosnap = tosnap;
|
||||
sd.recursive = recursive;
|
||||
sd.verbose = verbose;
|
||||
sd.replicate = replicate;
|
||||
sd.verbose = verbose;
|
||||
|
||||
if ((error = send_iterate_fs(zhp, &sd)) != 0) {
|
||||
nvlist_free(sd.fss);
|
||||
@@ -1349,10 +1348,10 @@ static int
|
||||
dump_filesystem(zfs_handle_t *zhp, void *arg)
|
||||
{
|
||||
int rv = 0;
|
||||
uint64_t min_txg = 0, max_txg = 0;
|
||||
send_dump_data_t *sdd = arg;
|
||||
boolean_t missingfrom = B_FALSE;
|
||||
zfs_cmd_t zc = { 0 };
|
||||
uint64_t min_txg = 0, max_txg = 0;
|
||||
|
||||
(void) snprintf(zc.zc_name, sizeof (zc.zc_name), "%s@%s",
|
||||
zhp->zfs_name, sdd->tosnap);
|
||||
@@ -1853,8 +1852,8 @@ zfs_send(zfs_handle_t *zhp, const char *fromsnap, const char *tosnap,
|
||||
}
|
||||
|
||||
err = gather_nvlist(zhp->zfs_hdl, zhp->zfs_name,
|
||||
fromsnap, tosnap, flags->replicate, flags->verbose,
|
||||
flags->replicate, &fss, &fsavl);
|
||||
fromsnap, tosnap, flags->replicate,
|
||||
flags->replicate, flags->verbose, &fss, &fsavl);
|
||||
if (err)
|
||||
goto err_out;
|
||||
VERIFY(0 == nvlist_add_nvlist(hdrnv, "fss", fss));
|
||||
@@ -2497,7 +2496,7 @@ again:
|
||||
VERIFY(0 == nvlist_alloc(&deleted, NV_UNIQUE_NAME, 0));
|
||||
|
||||
if ((error = gather_nvlist(hdl, tofs, fromsnap, NULL,
|
||||
recursive, B_FALSE, B_FALSE, &local_nv, &local_avl)) != 0)
|
||||
recursive, recursive, B_FALSE, &local_nv, &local_avl)) != 0)
|
||||
return (error);
|
||||
|
||||
/*
|
||||
@@ -3138,7 +3137,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
|
||||
char prop_errbuf[1024];
|
||||
const char *chopprefix;
|
||||
boolean_t newfs = B_FALSE;
|
||||
boolean_t stream_wantsnewfs;
|
||||
boolean_t stream_wantsnewfs, stream_resumingnewfs;
|
||||
uint64_t parent_snapguid = 0;
|
||||
prop_changelist_t *clp = NULL;
|
||||
nvlist_t *snapprops_nvlist = NULL;
|
||||
@@ -3302,6 +3301,8 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
|
||||
DMU_BACKUP_FEATURE_RESUMING;
|
||||
stream_wantsnewfs = (drrb->drr_fromguid == 0 ||
|
||||
(drrb->drr_flags & DRR_FLAG_CLONE) || originsnap) && !resuming;
|
||||
stream_resumingnewfs = (drrb->drr_fromguid == 0 ||
|
||||
(drrb->drr_flags & DRR_FLAG_CLONE) || originsnap) && resuming;
|
||||
|
||||
if (stream_wantsnewfs) {
|
||||
/*
|
||||
@@ -3433,7 +3434,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
|
||||
}
|
||||
|
||||
if (!flags->dryrun && zhp->zfs_type == ZFS_TYPE_FILESYSTEM &&
|
||||
(stream_wantsnewfs || resuming)) {
|
||||
(stream_wantsnewfs || stream_resumingnewfs)) {
|
||||
/* We can't do online recv in this case */
|
||||
clp = changelist_gather(zhp, ZFS_PROP_NAME, 0, 0);
|
||||
if (clp == NULL) {
|
||||
|
||||
@@ -14,7 +14,7 @@ index 1e12fd3a..c42a7e10 100644
|
||||
+ <option>--with-malloc-conf=abort_conf:false</option>.
|
||||
+ Additionally, <option>--enable-debug</option> is enabled in development
|
||||
+ versions of FreeBSD (controlled by the
|
||||
+ <constant>MALLOC_PRODUCTION</constant> make variable).</para>
|
||||
+ <constant>MK_MALLOC_PRODUCTION</constant> make variable).</para>
|
||||
+
|
||||
</refsect1>
|
||||
<refsynopsisdiv>
|
||||
|
||||
@@ -43,7 +43,7 @@ The following configuration options are enabled in libc\*(Aqs built\-in jemalloc
|
||||
\fB\-\-with\-malloc\-conf=abort_conf:false\fR\&. Additionally,
|
||||
\fB\-\-enable\-debug\fR
|
||||
is enabled in development versions of FreeBSD (controlled by the
|
||||
\fBMALLOC_PRODUCTION\fR
|
||||
\fBMK_MALLOC_PRODUCTION\fR
|
||||
make variable)\&.
|
||||
.SH "SYNOPSIS"
|
||||
.sp
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#undef JEMALLOC_OVERRIDE_VALLOC
|
||||
|
||||
#ifndef MALLOC_PRODUCTION
|
||||
#define MALLOC_PRODUCTION
|
||||
#define JEMALLOC_DEBUG
|
||||
#endif
|
||||
|
||||
#undef JEMALLOC_DSS
|
||||
|
||||
@@ -124,8 +124,8 @@ static __inline Lock *lock_for_pointer(void *ptr) {
|
||||
#define IS_LOCK_FREE_2 __c11_atomic_is_lock_free(2)
|
||||
#define IS_LOCK_FREE_4 __c11_atomic_is_lock_free(4)
|
||||
|
||||
/// 32 bit PowerPC doesn't support 8-byte lock_free atomics
|
||||
#if !defined(__powerpc64__) && defined(__powerpc__)
|
||||
/// 32 bit MIPS and PowerPC don't support 8-byte lock_free atomics
|
||||
#if defined(__mips__) || (!defined(__powerpc64__) && defined(__powerpc__))
|
||||
#define IS_LOCK_FREE_8 0
|
||||
#else
|
||||
#define IS_LOCK_FREE_8 __c11_atomic_is_lock_free(8)
|
||||
|
||||
@@ -2412,21 +2412,13 @@ lldb::addr_t Target::GetPersistentSymbol(ConstString name) {
|
||||
|
||||
llvm::Expected<lldb_private::Address> Target::GetEntryPointAddress() {
|
||||
Module *exe_module = GetExecutableModulePointer();
|
||||
llvm::Error error = llvm::Error::success();
|
||||
assert(!error); // Check the success value when assertions are enabled.
|
||||
|
||||
if (!exe_module || !exe_module->GetObjectFile()) {
|
||||
error = llvm::make_error<llvm::StringError>("No primary executable found",
|
||||
llvm::inconvertibleErrorCode());
|
||||
} else {
|
||||
// Try to find the entry point address in the primary executable.
|
||||
const bool has_primary_executable = exe_module && exe_module->GetObjectFile();
|
||||
if (has_primary_executable) {
|
||||
Address entry_addr = exe_module->GetObjectFile()->GetEntryPointAddress();
|
||||
if (entry_addr.IsValid())
|
||||
return entry_addr;
|
||||
|
||||
error = llvm::make_error<llvm::StringError>(
|
||||
"Could not find entry point address for executable module \"" +
|
||||
exe_module->GetFileSpec().GetFilename().GetStringRef() + "\"",
|
||||
llvm::inconvertibleErrorCode());
|
||||
}
|
||||
|
||||
const ModuleList &modules = GetImages();
|
||||
@@ -2437,14 +2429,21 @@ llvm::Expected<lldb_private::Address> Target::GetEntryPointAddress() {
|
||||
continue;
|
||||
|
||||
Address entry_addr = module_sp->GetObjectFile()->GetEntryPointAddress();
|
||||
if (entry_addr.IsValid()) {
|
||||
// Discard the error.
|
||||
llvm::consumeError(std::move(error));
|
||||
if (entry_addr.IsValid())
|
||||
return entry_addr;
|
||||
}
|
||||
}
|
||||
|
||||
return std::move(error);
|
||||
// We haven't found the entry point address. Return an appropriate error.
|
||||
if (!has_primary_executable)
|
||||
return llvm::make_error<llvm::StringError>(
|
||||
"No primary executable found and could not find entry point address in "
|
||||
"any executable module",
|
||||
llvm::inconvertibleErrorCode());
|
||||
|
||||
return llvm::make_error<llvm::StringError>(
|
||||
"Could not find entry point address for primary executable module \"" +
|
||||
exe_module->GetFileSpec().GetFilename().GetStringRef() + "\"",
|
||||
llvm::inconvertibleErrorCode());
|
||||
}
|
||||
|
||||
lldb::addr_t Target::GetCallableLoadAddress(lldb::addr_t load_addr,
|
||||
|
||||
+39
-34
@@ -1,50 +1,58 @@
|
||||
Contributing to the tz code and data
|
||||
# Contributing to the tz code and data
|
||||
|
||||
Please do not create issues or pull requests on GitHub, as the
|
||||
proper procedure for proposing and distributing patches is via
|
||||
email as described below.
|
||||
|
||||
The time zone database is by no means authoritative: governments
|
||||
change timekeeping rules erratically and sometimes with little
|
||||
warning, the data entries do not cover all of civil time before
|
||||
1970, and undoubtedly errors remain in the code and data. Feel
|
||||
free to fill gaps or fix mistakes, and please email improvements
|
||||
to [email protected] for use in the future. In your email, please give
|
||||
to <[email protected]> for use in the future. In your email, please give
|
||||
reliable sources that reviewers can check.
|
||||
|
||||
-----
|
||||
|
||||
Developers can contribute technical changes to the source code and
|
||||
data as follows.
|
||||
## Contributing technical changes
|
||||
|
||||
To email small changes, please run a POSIX shell command like
|
||||
'diff -u old/europe new/europe >myfix.patch', and attach
|
||||
myfix.patch to the email.
|
||||
'myfix.patch' to the email.
|
||||
|
||||
For more-elaborate or possibly-controversial changes,
|
||||
such as renaming, adding or removing zones, please read
|
||||
<https://www.iana.org/time-zones/repository/theory.html> or the file
|
||||
theory.html. It is also good to browse the mailing list archives
|
||||
"Theory and pragmatics of the tz code and data"
|
||||
<https://www.iana.org/time-zones/repository/theory.html>.
|
||||
It is also good to browse the mailing list archives
|
||||
<https://mm.icann.org/pipermail/tz/> for examples of patches that tend
|
||||
to work well. Additions to data should contain commentary citing
|
||||
reliable sources as justification. Citations should use https: URLs
|
||||
reliable sources as justification. Citations should use "https:" URLs
|
||||
if available.
|
||||
|
||||
Please submit changes against either the latest release in
|
||||
<https://www.iana.org/time-zones> or the master branch of the development
|
||||
repository. The latter is preferred. If you use Git the following
|
||||
workflow may be helpful:
|
||||
For changes that fix sensitive security-related bugs, please see the
|
||||
distribution's 'SECURITY' file.
|
||||
|
||||
Please submit changes against either the latest release
|
||||
<https://www.iana.org/time-zones> or the main branch of the development
|
||||
repository. The latter is preferred.
|
||||
|
||||
## Sample Git workflow for developing contributions
|
||||
|
||||
If you use Git the following workflow may be helpful:
|
||||
|
||||
* Copy the development repository.
|
||||
|
||||
git clone https://github.com/eggert/tz.git
|
||||
cd tz
|
||||
git clone https://github.com/eggert/tz.git
|
||||
cd tz
|
||||
|
||||
* Get current with the master branch.
|
||||
* Get current with the main branch.
|
||||
|
||||
git checkout master
|
||||
git pull
|
||||
git checkout main
|
||||
git pull
|
||||
|
||||
* Switch to a new branch for the changes. Choose a different
|
||||
branch name for each change set.
|
||||
|
||||
git checkout -b mybranch
|
||||
git checkout -b mybranch
|
||||
|
||||
* Sleuth by using 'git blame'. For example, when fixing data for
|
||||
Africa/Sao_Tome, if the command 'git blame africa' outputs a line
|
||||
@@ -57,36 +65,33 @@ workflow may be helpful:
|
||||
|
||||
* Debug the changes, e.g.:
|
||||
|
||||
make check
|
||||
make install
|
||||
./zdump -v America/Los_Angeles
|
||||
make check
|
||||
make install
|
||||
./zdump -v America/Los_Angeles
|
||||
|
||||
* For each separable change, commit it in the new branch, e.g.:
|
||||
|
||||
git add northamerica
|
||||
git commit
|
||||
git add northamerica
|
||||
git commit
|
||||
|
||||
See recent 'git log' output for the commit-message style.
|
||||
|
||||
* Create patch files 0001-*, 0002-*, ...
|
||||
* Create patch files 0001-..., 0002-..., ...
|
||||
|
||||
git format-patch master
|
||||
git format-patch main
|
||||
|
||||
* After reviewing the patch files, send the patches to [email protected]
|
||||
* After reviewing the patch files, send the patches to <[email protected]>
|
||||
for others to review.
|
||||
|
||||
git send-email master
|
||||
git send-email main
|
||||
|
||||
For an archived example of such an email, see
|
||||
"[PROPOSED] Fix off-by-1 error for Jamaica and T&C before 1913"
|
||||
<https://mm.icann.org/pipermail/tz/2018-February/026122.html>.
|
||||
|
||||
* Start anew by getting current with the master branch again
|
||||
* Start anew by getting current with the main branch again
|
||||
(the second step above).
|
||||
|
||||
Please do not create issues or pull requests on GitHub, as the
|
||||
proper procedure for proposing and distributing patches is via
|
||||
email as illustrated above.
|
||||
|
||||
-----
|
||||
|
||||
This file is in the public domain.
|
||||
+124
-113
@@ -22,13 +22,13 @@ BUGEMAIL= [email protected]
|
||||
# DATAFORM= main
|
||||
# To wait even longer for new features, use:
|
||||
# DATAFORM= rearguard
|
||||
# Rearguard users might also want "ZFLAGS = -b fat"; see below.
|
||||
DATAFORM= main
|
||||
|
||||
# Change the line below for your timezone (after finding the one you want in
|
||||
# one of the $(TDATA) source files, or adding it to a source file).
|
||||
# Alternatively, if you discover you've got the wrong timezone, you can just
|
||||
# zic -l rightzone
|
||||
# to correct things.
|
||||
# 'zic -l -' to remove it, or 'zic -l rightzone' to change it.
|
||||
# Use the command
|
||||
# make zonenames
|
||||
# to get a list of the values you can use for LOCALTIME.
|
||||
@@ -37,33 +37,30 @@ LOCALTIME= GMT
|
||||
|
||||
# The POSIXRULES macro controls interpretation of nonstandard and obsolete
|
||||
# POSIX-like TZ settings like TZ='EET-2EEST' that lack DST transition rules.
|
||||
# In the reference implementation, if you want something other than Eastern
|
||||
# United States time as a template for handling these settings, you can
|
||||
# change the line below (after finding the timezone you want in the
|
||||
# Such a setting uses the rules in a template file to determine
|
||||
# "spring forward" and "fall back" days and times; the environment
|
||||
# variable itself specifies UT offsets of standard and daylight saving time.
|
||||
#
|
||||
# If POSIXRULES is '-', no template is installed; this is the default.
|
||||
#
|
||||
# Any other value for POSIXRULES is obsolete and should not be relied on, as:
|
||||
# * It does not work correctly in popular implementations such as GNU/Linux.
|
||||
# * It does not work even in tzcode, except for historical timestamps
|
||||
# that precede the last explicit transition in the POSIXRULES file.
|
||||
# Hence it typically does not work for current and future timestamps.
|
||||
# In short, software should avoid ruleless settings like TZ='EET-2EEST'
|
||||
# and so should not depend on the value of POSIXRULES.
|
||||
#
|
||||
# If, despite the above, you want a template for handling these settings,
|
||||
# you can change the line below (after finding the timezone you want in the
|
||||
# one of the $(TDATA) source files, or adding it to a source file).
|
||||
# A setting like TZ='EET-2EEST' is supposed to use the rules in the
|
||||
# template file to determine "spring forward" and "fall back" days and
|
||||
# times; the environment variable itself specifies UT offsets of standard and
|
||||
# daylight saving time.
|
||||
# Alternatively, if you discover you've got the wrong timezone, you can just
|
||||
# zic -p rightzone
|
||||
# to correct things.
|
||||
# 'zic -p -' to remove it, or 'zic -p rightzone' to change it.
|
||||
# Use the command
|
||||
# make zonenames
|
||||
# to get a list of the values you can use for POSIXRULES.
|
||||
#
|
||||
# If POSIXRULES is empty, no template is installed; this is the intended
|
||||
# future default for POSIXRULES.
|
||||
#
|
||||
# Nonempty POSIXRULES is obsolete and should not be relied on, because:
|
||||
# * It does not work correctly in popular implementations such as GNU/Linux.
|
||||
# * It does not work in the tzdb implementation for timestamps after 2037.
|
||||
# * It is incompatible with 'zic -b slim' if POSIXRULES specifies transitions
|
||||
# at standard time or UT rather than at local time.
|
||||
# In short, software should avoid ruleless settings like TZ='EET-2EEST'
|
||||
# and so should not depend on the value of POSIXRULES.
|
||||
|
||||
POSIXRULES= America/New_York
|
||||
POSIXRULES= -
|
||||
|
||||
# Also see TZDEFRULESTRING below, which takes effect only
|
||||
# if the time zone files cannot be accessed.
|
||||
@@ -125,8 +122,8 @@ LIBDIR = $(TOPDIR)/$(USRDIR)/lib
|
||||
|
||||
# Types to try, as an alternative to time_t.
|
||||
TIME_T_ALTERNATIVES = $(TIME_T_ALTERNATIVES_HEAD) $(TIME_T_ALTERNATIVES_TAIL)
|
||||
TIME_T_ALTERNATIVES_HEAD = int64_t
|
||||
TIME_T_ALTERNATIVES_TAIL = int32_t uint32_t uint64_t
|
||||
TIME_T_ALTERNATIVES_HEAD = int_least64_t
|
||||
TIME_T_ALTERNATIVES_TAIL = int_least32_t uint_least32_t uint_least64_t
|
||||
|
||||
# What kind of TZif data files to generate. (TZif is the binary time
|
||||
# zone data format that zic generates; see Internet RFC 8536.)
|
||||
@@ -155,8 +152,10 @@ REDO= posix_right
|
||||
# The EXPIRES_LINE value matters only if REDO's value contains "right".
|
||||
# If you change EXPIRES_LINE, remove the leapseconds file before running "make".
|
||||
# zic's support for the Expires line was introduced in tzdb 2020a,
|
||||
# and EXPIRES_LINE defaults to 0 for now so that the leapseconds file
|
||||
# can be given to older zic implementations.
|
||||
# and was modified in tzdb 2021b to generate version 4 TZif files.
|
||||
# EXPIRES_LINE defaults to 0 for now so that the leapseconds file
|
||||
# can be given to pre-2020a zic implementations and so that TZif files
|
||||
# built by newer zic implementations can be read by pre-2021b libraries.
|
||||
EXPIRES_LINE= 0
|
||||
|
||||
# To install data in text form that has all the information of the TZif data,
|
||||
@@ -172,9 +171,6 @@ TZDATA_TEXT= leapseconds tzdata.zi
|
||||
|
||||
# For backward-compatibility links for old zone names, use
|
||||
# BACKWARD= backward
|
||||
# If you also want the link US/Pacific-New, even though it is confusing
|
||||
# and is planned to be removed from the database eventually, use
|
||||
# BACKWARD= backward pacificnew
|
||||
# To omit these links, use
|
||||
# BACKWARD=
|
||||
|
||||
@@ -192,10 +188,6 @@ PACKRATDATA=
|
||||
|
||||
UTF8_LOCALE= en_US.utf8
|
||||
|
||||
# Since "." may not be in PATH...
|
||||
|
||||
YEARISTYPE= ./yearistype
|
||||
|
||||
# Non-default libraries needed to link.
|
||||
LDLIBS=
|
||||
|
||||
@@ -220,6 +212,7 @@ LDLIBS=
|
||||
# -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function
|
||||
# -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz
|
||||
# localtime_rz can make zdump significantly faster, but is nonstandard.
|
||||
# -DHAVE_MALLOC_ERRNO=0 if malloc etc. do not set errno on failure.
|
||||
# -DHAVE_POSIX_DECLS=0 if your system's include files do not declare
|
||||
# functions like 'link' or variables like 'tzname' required by POSIX
|
||||
# -DHAVE_SNPRINTF=0 if your system lacks the snprintf function
|
||||
@@ -230,7 +223,6 @@ LDLIBS=
|
||||
# -DHAVE_STRTOLL=0 if your system lacks the strtoll function
|
||||
# -DHAVE_SYMLINK=0 if your system lacks the symlink function
|
||||
# -DHAVE_SYS_STAT_H=0 if your compiler lacks a <sys/stat.h>
|
||||
# -DHAVE_SYS_WAIT_H=0 if your compiler lacks a <sys/wait.h>
|
||||
# -DHAVE_TZSET=0 if your system lacks a tzset function
|
||||
# -DHAVE_UNISTD_H=0 if your compiler lacks a <unistd.h>
|
||||
# -Dlocale_t=XXX if your system uses XXX instead of locale_t
|
||||
@@ -253,13 +245,12 @@ LDLIBS=
|
||||
# other than simply getting garbage data
|
||||
# -DUSE_LTZ=0 to build zdump with the system time zone library
|
||||
# Also set TZDOBJS=zdump.o and CHECK_TIME_T_ALTERNATIVES= below.
|
||||
# -DZIC_BLOAT_DEFAULT=\"slim\" to default zic's -b option to "slim", and
|
||||
# similarly for "fat". Fat TZif files work around incompatibilities
|
||||
# -DZIC_BLOAT_DEFAULT=\"fat\" to default zic's -b option to "fat", and
|
||||
# similarly for "slim". Fat TZif files work around incompatibilities
|
||||
# and bugs in some TZif readers, notably readers that mishandle 64-bit
|
||||
# data in TZif files. Slim TZif files are more efficient and do not
|
||||
# work around these incompatibilities and bugs. If not given, the
|
||||
# current default is "fat" but this is intended to change as readers
|
||||
# requiring fat files often mishandle timestamps after 2037 anyway.
|
||||
# default is "slim".
|
||||
# -DZIC_MAX_ABBR_LEN_WO_WARN=3
|
||||
# (or some other number) to set the maximum time zone abbreviation length
|
||||
# that zic will accept without a warning (the default is 6)
|
||||
@@ -268,22 +259,26 @@ LDLIBS=
|
||||
GCC_INSTRUMENT = \
|
||||
-fsanitize=undefined -fsanitize-address-use-after-scope \
|
||||
-fsanitize-undefined-trap-on-error -fstack-protector
|
||||
# Omit -fanalyzer from GCC_DEBUG_FLAGS, as it makes GCC too slow.
|
||||
GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
|
||||
$(GCC_INSTRUMENT) \
|
||||
-Wall -Wextra \
|
||||
-Walloc-size-larger-than=100000 -Warray-bounds=2 \
|
||||
-Wbad-function-cast -Wcast-align=strict -Wdate-time \
|
||||
-Wdeclaration-after-statement -Wdouble-promotion \
|
||||
-Wduplicated-branches -Wduplicated-cond \
|
||||
-Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \
|
||||
-Winit-self -Wjump-misses-init -Wlogical-op \
|
||||
-Winit-self -Wlogical-op \
|
||||
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
|
||||
-Wnull-dereference \
|
||||
-Wold-style-definition -Woverlength-strings -Wpointer-arith \
|
||||
-Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=4 \
|
||||
-Wshadow -Wshift-overflow=2 -Wstrict-overflow \
|
||||
-Wstrict-prototypes -Wstringop-overflow=4 \
|
||||
-Wstringop-truncation -Wsuggest-attribute=cold \
|
||||
-Wsuggest-attribute=const -Wsuggest-attribute=format \
|
||||
-Wsuggest-attribute=malloc \
|
||||
-Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \
|
||||
-Wtrampolines -Wundef -Wuninitialized -Wunused \
|
||||
-Wtrampolines -Wundef -Wuninitialized -Wunused-macros \
|
||||
-Wvariadic-macros -Wvla -Wwrite-strings \
|
||||
-Wno-address -Wno-format-nonliteral -Wno-sign-compare \
|
||||
-Wno-type-limits -Wno-unused-parameter
|
||||
@@ -333,9 +328,8 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
|
||||
# add
|
||||
# -DSTD_INSPIRED
|
||||
# to the end of the "CFLAGS=" line. This arranges for the functions
|
||||
# "tzsetwall", "offtime", "timelocal", "timegm", "timeoff",
|
||||
# "offtime", "timelocal", "timegm", "timeoff",
|
||||
# "posix2time", and "time2posix" to be added to the time conversion library.
|
||||
# "tzsetwall" is deprecated and is intended to be removed soon; see NEWS.
|
||||
# "offtime" is like "gmtime" except that it accepts a second (long) argument
|
||||
# that gives an offset to add to the time_t when converting it.
|
||||
# "timelocal" is equivalent to "mktime".
|
||||
@@ -395,7 +389,7 @@ ZIC= $(zic) $(ZFLAGS)
|
||||
|
||||
# To shrink the size of installed TZif files,
|
||||
# append "-r @N" to omit data before N-seconds-after-the-Epoch.
|
||||
# You can also append "-b slim" if that is not already the default;
|
||||
# To grow the files and work around older application bugs, append "-b fat";
|
||||
# see ZIC_BLOAT_DEFAULT above.
|
||||
# See the zic man page for more about -b and -r.
|
||||
ZFLAGS=
|
||||
@@ -405,9 +399,10 @@ ZFLAGS=
|
||||
ZIC_INSTALL= $(ZIC) -d '$(DESTDIR)$(TZDIR)' $(LEAPSECONDS)
|
||||
|
||||
# The name of a Posix-compliant 'awk' on your system.
|
||||
# Older 'mawk' versions, such as the 'mawk' in Ubuntu 16.04, might dump core;
|
||||
# on Ubuntu you can work around this with
|
||||
# AWK= gawk
|
||||
# mawk 1.3.3 and Solaris 10 /usr/bin/awk do not work.
|
||||
# Also, it is better (though not essential) if 'awk' supports UTF-8,
|
||||
# and unfortunately mawk and busybox awk do not support UTF-8.
|
||||
# Try AWK=gawk or AWK=nawk if your awk has the abovementioned problems.
|
||||
AWK= awk
|
||||
|
||||
# The full path name of a Posix-compliant shell, preferably one that supports
|
||||
@@ -424,26 +419,6 @@ CURL= curl
|
||||
# Name of GNU Privacy Guard <https://gnupg.org/>, used to sign distributions.
|
||||
GPG= gpg
|
||||
|
||||
# The path where SGML DTDs are kept and the catalog file(s) to use when
|
||||
# validating HTML 4.01. The default should work on both Debian and Red Hat.
|
||||
SGML_TOPDIR= /usr
|
||||
SGML_DTDDIR= $(SGML_TOPDIR)/share/xml/w3c-sgml-lib/schema/dtd
|
||||
SGML_SEARCH_PATH= $(SGML_DTDDIR)/REC-html401-19991224
|
||||
SGML_CATALOG_FILES= \
|
||||
$(SGML_TOPDIR)/share/doc/w3-recs/html/www.w3.org/TR/1999/REC-html401-19991224/HTML4.cat:$(SGML_TOPDIR)/share/sgml/html/4.01/HTML4.cat
|
||||
|
||||
# The name, arguments and environment of a program to validate HTML 4.01.
|
||||
# See <http://openjade.sourceforge.net/doc/> for a validator, and
|
||||
# <https://validator.w3.org/source/> for a validation library.
|
||||
# Set VALIDATE=':' if you do not have such a program.
|
||||
VALIDATE = nsgmls
|
||||
VALIDATE_FLAGS = -s -B -wall -wno-unused-param
|
||||
VALIDATE_ENV = \
|
||||
SGML_CATALOG_FILES='$(SGML_CATALOG_FILES)' \
|
||||
SGML_SEARCH_PATH='$(SGML_SEARCH_PATH)' \
|
||||
SP_CHARSET_FIXED=YES \
|
||||
SP_ENCODING=UTF-8
|
||||
|
||||
# This expensive test requires USE_LTZ.
|
||||
# To suppress it, define this macro to be empty.
|
||||
CHECK_TIME_T_ALTERNATIVES = check_time_t_alternatives
|
||||
@@ -492,7 +467,9 @@ OK_LINE= '^'$(OK_CHAR)'*$$'
|
||||
|
||||
# Flags to give 'tar' when making a distribution.
|
||||
# Try to use flags appropriate for GNU tar.
|
||||
GNUTARFLAGS= --numeric-owner --owner=0 --group=0 --mode=go+u,go-w --sort=name
|
||||
GNUTARFLAGS= --format=pax --pax-option='delete=atime,delete=ctime' \
|
||||
--numeric-owner --owner=0 --group=0 \
|
||||
--mode=go+u,go-w --sort=name
|
||||
TARFLAGS= `if tar $(GNUTARFLAGS) --version >/dev/null 2>&1; \
|
||||
then echo $(GNUTARFLAGS); \
|
||||
else :; \
|
||||
@@ -530,7 +507,7 @@ MANTXTS= newctime.3.txt newstrftime.3.txt newtzset.3.txt \
|
||||
tzfile.5.txt tzselect.8.txt zic.8.txt zdump.8.txt \
|
||||
date.1.txt
|
||||
COMMON= calendars CONTRIBUTING LICENSE Makefile \
|
||||
NEWS README theory.html version
|
||||
NEWS README SECURITY theory.html version
|
||||
WEB_PAGES= tz-art.html tz-how-to.html tz-link.html
|
||||
CHECK_WEB_PAGES=check_theory.html check_tz-art.html \
|
||||
check_tz-how-to.html check_tz-link.html
|
||||
@@ -538,8 +515,8 @@ DOCS= $(MANS) date.1 $(MANTXTS) $(WEB_PAGES)
|
||||
PRIMARY_YDATA= africa antarctica asia australasia \
|
||||
europe northamerica southamerica
|
||||
YDATA= $(PRIMARY_YDATA) etcetera
|
||||
NDATA= systemv factory
|
||||
TDATA_TO_CHECK= $(YDATA) $(NDATA) backward pacificnew
|
||||
NDATA= factory
|
||||
TDATA_TO_CHECK= $(YDATA) $(NDATA) backward
|
||||
TDATA= $(YDATA) $(NDATA) $(BACKWARD)
|
||||
ZONETABLES= zone1970.tab zone.tab
|
||||
TABDATA= iso3166.tab $(TZDATA_TEXT) $(ZONETABLES)
|
||||
@@ -547,7 +524,7 @@ LEAP_DEPS= leapseconds.awk leap-seconds.list
|
||||
TZDATA_ZI_DEPS= ziguard.awk zishrink.awk version $(TDATA) $(PACKRATDATA)
|
||||
DSTDATA_ZI_DEPS= ziguard.awk $(TDATA) $(PACKRATDATA)
|
||||
DATA= $(TDATA_TO_CHECK) backzone iso3166.tab leap-seconds.list \
|
||||
leapseconds yearistype.sh $(ZONETABLES)
|
||||
leapseconds $(ZONETABLES)
|
||||
AWK_SCRIPTS= checklinks.awk checktab.awk leapseconds.awk \
|
||||
ziguard.awk zishrink.awk
|
||||
MISC= $(AWK_SCRIPTS) zoneinfo2tdf.pl
|
||||
@@ -555,7 +532,7 @@ TZS_YEAR= 2050
|
||||
TZS_CUTOFF_FLAG= -c $(TZS_YEAR)
|
||||
TZS= to$(TZS_YEAR).tzs
|
||||
TZS_NEW= to$(TZS_YEAR)new.tzs
|
||||
TZS_DEPS= $(PRIMARY_YDATA) asctime.c localtime.c \
|
||||
TZS_DEPS= $(YDATA) asctime.c localtime.c \
|
||||
private.h tzfile.h zdump.c zic.c
|
||||
# EIGHT_YARDS is just a yard short of the whole ENCHILADA.
|
||||
EIGHT_YARDS = $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) tzdata.zi
|
||||
@@ -565,7 +542,7 @@ ENCHILADA = $(EIGHT_YARDS) $(TZS)
|
||||
# This list is not the same as the output of 'git ls-files', since
|
||||
# .gitignore is not distributed.
|
||||
VERSION_DEPS= \
|
||||
calendars CONTRIBUTING LICENSE Makefile NEWS README \
|
||||
calendars CONTRIBUTING LICENSE Makefile NEWS README SECURITY \
|
||||
africa antarctica asctime.c asia australasia \
|
||||
backward backzone \
|
||||
checklinks.awk checktab.awk \
|
||||
@@ -573,12 +550,10 @@ VERSION_DEPS= \
|
||||
etcetera europe factory iso3166.tab \
|
||||
leap-seconds.list leapseconds.awk localtime.c \
|
||||
newctime.3 newstrftime.3 newtzset.3 northamerica \
|
||||
pacificnew private.h \
|
||||
southamerica strftime.c systemv theory.html \
|
||||
private.h southamerica strftime.c theory.html \
|
||||
time2posix.3 tz-art.html tz-how-to.html tz-link.html \
|
||||
tzfile.5 tzfile.h tzselect.8 tzselect.ksh \
|
||||
workman.sh yearistype.sh \
|
||||
zdump.8 zdump.c zic.8 zic.c \
|
||||
workman.sh zdump.8 zdump.c zic.8 zic.c \
|
||||
ziguard.awk zishrink.awk \
|
||||
zone.tab zone1970.tab zoneinfo2tdf.pl
|
||||
|
||||
@@ -587,7 +562,7 @@ VERSION_DEPS= \
|
||||
|
||||
SHELL= /bin/sh
|
||||
|
||||
all: tzselect yearistype zic zdump libtz.a $(TABDATA) \
|
||||
all: tzselect zic zdump libtz.a $(TABDATA) \
|
||||
vanguard.zi main.zi rearguard.zi
|
||||
|
||||
ALL: all date $(ENCHILADA)
|
||||
@@ -617,11 +592,19 @@ INSTALL: ALL install date.1
|
||||
cp date '$(DESTDIR)$(BINDIR)/.'
|
||||
cp -f date.1 '$(DESTDIR)$(MANDIR)/man1/.'
|
||||
|
||||
# Calculate version number from git, if available.
|
||||
# Otherwise, use $(VERSION) unless it is "unknown" and there is already
|
||||
# a 'version' file, in which case reuse the existing 'version' contents
|
||||
# and append "-dirty" if the contents do not already end in "-dirty".
|
||||
version: $(VERSION_DEPS)
|
||||
{ (type git) >/dev/null 2>&1 && \
|
||||
V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \
|
||||
--abbrev=7 --dirty` || \
|
||||
V='$(VERSION)'; } && \
|
||||
if test '$(VERSION)' = unknown && V=`cat $@`; then \
|
||||
case $$V in *-dirty);; *) V=$$V-dirty;; esac; \
|
||||
else \
|
||||
V='$(VERSION)'; \
|
||||
fi; } && \
|
||||
printf '%s\n' "$$V" >$@.out
|
||||
mv $@.out $@
|
||||
|
||||
@@ -657,10 +640,6 @@ zdump: $(TZDOBJS)
|
||||
zic: $(TZCOBJS)
|
||||
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZCOBJS) $(LDLIBS)
|
||||
|
||||
yearistype: yearistype.sh
|
||||
cp yearistype.sh yearistype
|
||||
chmod +x yearistype
|
||||
|
||||
leapseconds: $(LEAP_DEPS)
|
||||
$(AWK) -v EXPIRES_LINE=$(EXPIRES_LINE) \
|
||||
-f leapseconds.awk leap-seconds.list >$@.out
|
||||
@@ -675,10 +654,9 @@ INSTALLARGS = \
|
||||
PACKRATDATA='$(PACKRATDATA)' \
|
||||
TZDEFAULT='$(TZDEFAULT)' \
|
||||
TZDIR='$(TZDIR)' \
|
||||
YEARISTYPE='$(YEARISTYPE)' \
|
||||
ZIC='$(ZIC)'
|
||||
|
||||
INSTALL_DATA_DEPS = zic leapseconds yearistype tzdata.zi
|
||||
INSTALL_DATA_DEPS = zic leapseconds tzdata.zi
|
||||
|
||||
# 'make install_data' installs one set of TZif files.
|
||||
install_data: $(INSTALL_DATA_DEPS)
|
||||
@@ -767,7 +745,7 @@ date: $(DATEOBJS)
|
||||
tzselect: tzselect.ksh version
|
||||
VERSION=`cat version` && sed \
|
||||
-e 's|#!/bin/bash|#!$(KSHELL)|g' \
|
||||
-e 's|AWK=[^}]*|AWK=$(AWK)|g' \
|
||||
-e 's|AWK=[^}]*|AWK='\''$(AWK)'\''|g' \
|
||||
-e 's|\(PKGVERSION\)=.*|\1='\''($(PACKAGE)) '\''|' \
|
||||
-e 's|\(REPORT_BUGS_TO\)=.*|\1=$(BUGEMAIL)|' \
|
||||
-e 's|TZDIR=[^}]*|TZDIR=$(TZDIR)|' \
|
||||
@@ -788,12 +766,12 @@ check_character_set: $(ENCHILADA)
|
||||
sharp='#' && \
|
||||
! grep -Env $(SAFE_LINE) $(MANS) date.1 $(MANTXTS) \
|
||||
$(MISC) $(SOURCES) $(WEB_PAGES) \
|
||||
CONTRIBUTING LICENSE README \
|
||||
CONTRIBUTING LICENSE README SECURITY \
|
||||
version tzdata.zi && \
|
||||
! grep -Env $(SAFE_LINE)'|^UNUSUAL_OK_'$(OK_CHAR)'*$$' \
|
||||
Makefile && \
|
||||
! grep -Env $(SAFE_SHARP_LINE) $(TDATA_TO_CHECK) backzone \
|
||||
leapseconds yearistype.sh zone.tab && \
|
||||
leapseconds zone.tab && \
|
||||
! grep -Env $(OK_LINE) $(ENCHILADA); \
|
||||
}
|
||||
touch $@
|
||||
@@ -827,9 +805,10 @@ check_links: checklinks.awk $(TDATA_TO_CHECK) tzdata.zi
|
||||
$(AWK) -f checklinks.awk tzdata.zi
|
||||
touch $@
|
||||
|
||||
check_tables: checktab.awk $(PRIMARY_YDATA) $(ZONETABLES)
|
||||
check_tables: checktab.awk $(YDATA) backward $(ZONETABLES)
|
||||
for tab in $(ZONETABLES); do \
|
||||
$(AWK) -f checktab.awk -v zone_table=$$tab $(PRIMARY_YDATA) \
|
||||
test "$$tab" = zone.tab && links='$(BACKWARD)' || links=''; \
|
||||
$(AWK) -f checktab.awk -v zone_table=$$tab $(YDATA) $$links \
|
||||
|| exit; \
|
||||
done
|
||||
touch $@
|
||||
@@ -845,15 +824,13 @@ check_tzs: $(TZS) $(TZS_NEW)
|
||||
check_web: $(CHECK_WEB_PAGES)
|
||||
check_theory.html: theory.html
|
||||
check_tz-art.html: tz-art.html
|
||||
check_tz-how-to.html: tz-how-to.html
|
||||
check_tz-link.html: tz-link.html
|
||||
check_theory.html check_tz-art.html check_tz-link.html:
|
||||
check_theory.html check_tz-art.html check_tz-how-to.html check_tz-link.html:
|
||||
$(CURL) -sS --url https://validator.w3.org/nu/ -F out=gnu \
|
||||
-F file=@$$(expr $@ : 'check_\(.*\)') -o $@.out && \
|
||||
test ! -s $@.out || { cat $@.out; exit 1; }
|
||||
mv $@.out $@
|
||||
check_tz-how-to.html: tz-how-to.html
|
||||
$(VALIDATE_ENV) $(VALIDATE) $(VALIDATE_FLAGS) tz-how-to.html
|
||||
touch $@
|
||||
|
||||
# Check that zishrink.awk does not alter the data, and that ziguard.awk
|
||||
# preserves main-format data.
|
||||
@@ -883,7 +860,7 @@ clean_misc:
|
||||
rm -fr check_*.dir
|
||||
rm -f *.o *.out $(TIME_T_ALTERNATIVES) \
|
||||
check_* core typecheck_* \
|
||||
date tzselect version.h zdump zic yearistype libtz.a
|
||||
date tzselect version.h zdump zic libtz.a
|
||||
clean: clean_misc
|
||||
rm -fr *.dir tzdb-*/
|
||||
rm -f *.zi $(TZS_NEW)
|
||||
@@ -913,11 +890,34 @@ $(MANTXTS): workman.sh
|
||||
LC_ALL=C sh workman.sh `expr $@ : '\(.*\)\.txt$$'` >$@.out
|
||||
mv $@.out $@
|
||||
|
||||
# Set file timestamps deterministically if possible,
|
||||
# so that tarballs containing the timestamps are reproducible.
|
||||
#
|
||||
# '$(SET_TIMESTAMP_N) N DEST A B C ...' sets the timestamp of the
|
||||
# file DEST to the maximum of the timestamps of the files A B C ...,
|
||||
# plus N if GNU ls and touch are available.
|
||||
SET_TIMESTAMP_N = sh -c '\
|
||||
n=$$0 dest=$$1; shift; \
|
||||
touch -cmr `ls -t "$$@" | sed 1q` "$$dest" && \
|
||||
if test $$n != 0 && \
|
||||
lsout=`ls -n --time-style="+%s" "$$dest" 2>/dev/null`; then \
|
||||
set x $$lsout && \
|
||||
touch -cmd @`expr $$7 + $$n` "$$dest"; \
|
||||
else :; fi'
|
||||
# If DEST depends on A B C ... in this Makefile, callers should use
|
||||
# $(SET_TIMESTAMP_DEP) DEST A B C ..., for the benefit of any
|
||||
# downstream 'make' that considers equal timestamps to be out of date.
|
||||
# POSIX allows this 'make' behavior, and HP-UX 'make' does it.
|
||||
# If all that matters is that the timestamp be reproducible
|
||||
# and plausible, use $(SET_TIMESTAMP).
|
||||
SET_TIMESTAMP = $(SET_TIMESTAMP_N) 0
|
||||
SET_TIMESTAMP_DEP = $(SET_TIMESTAMP_N) 1
|
||||
|
||||
# Set the timestamps to those of the git repository, if available,
|
||||
# and if the files have not changed since then.
|
||||
# This uses GNU 'touch' syntax 'touch -d@N FILE',
|
||||
# where N is the number of seconds since 1970.
|
||||
# If git or GNU 'touch' is absent, don't bother to sync with git timestamps.
|
||||
# This uses GNU 'ls --time-style=+%s', which outputs the seconds count,
|
||||
# and GNU 'touch -d@N FILE', where N is the number of seconds since 1970.
|
||||
# If git or GNU is absent, don't bother to sync with git timestamps.
|
||||
# Also, set the timestamp of each prebuilt file like 'leapseconds'
|
||||
# to be the maximum of the files it depends on.
|
||||
set-timestamps.out: $(EIGHT_YARDS)
|
||||
@@ -935,16 +935,16 @@ set-timestamps.out: $(EIGHT_YARDS)
|
||||
fi || exit; \
|
||||
done; \
|
||||
fi
|
||||
touch -cmr `ls -t $(LEAP_DEPS) | sed 1q` leapseconds
|
||||
$(SET_TIMESTAMP_DEP) leapseconds $(LEAP_DEPS)
|
||||
for file in `ls $(MANTXTS) | sed 's/\.txt$$//'`; do \
|
||||
touch -cmr `ls -t $$file workman.sh | sed 1q` $$file.txt || \
|
||||
$(SET_TIMESTAMP_DEP) $$file.txt $$file workman.sh || \
|
||||
exit; \
|
||||
done
|
||||
touch -cmr `ls -t $(TZDATA_ZI_DEPS) | sed 1q` tzdata.zi
|
||||
touch -cmr `ls -t $(VERSION_DEPS) | sed 1q` version
|
||||
$(SET_TIMESTAMP_DEP) version $(VERSION_DEPS)
|
||||
$(SET_TIMESTAMP_DEP) tzdata.zi $(TZDATA_ZI_DEPS)
|
||||
touch $@
|
||||
set-tzs-timestamp.out: $(TZS)
|
||||
touch -cmr `ls -t $(TZS_DEPS) | sed 1q` $(TZS)
|
||||
$(SET_TIMESTAMP_DEP) $(TZS) $(TZS_DEPS)
|
||||
touch $@
|
||||
|
||||
# The zics below ensure that each data file can stand on its own.
|
||||
@@ -955,10 +955,19 @@ check_public: $(VERSION_DEPS)
|
||||
mkdir public.dir
|
||||
ln $(VERSION_DEPS) public.dir
|
||||
cd public.dir && $(MAKE) CFLAGS='$(GCC_DEBUG_FLAGS)' ALL
|
||||
for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi; do \
|
||||
for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi \
|
||||
public.dir/vanguard.zi public.dir/main.zi \
|
||||
public.dir/rearguard.zi; \
|
||||
do \
|
||||
public.dir/zic -v -d public.dir/zoneinfo $$i 2>&1 || exit; \
|
||||
done
|
||||
public.dir/zic -v -d public.dir/zoneinfo-all $(TDATA_TO_CHECK)
|
||||
:
|
||||
: Also check 'backzone' syntax.
|
||||
rm public.dir/main.zi
|
||||
cd public.dir && $(MAKE) PACKRATDATA=backzone main.zi
|
||||
public.dir/zic -d public.dir/zoneinfo main.zi
|
||||
:
|
||||
rm -fr public.dir
|
||||
touch $@
|
||||
|
||||
@@ -971,7 +980,7 @@ $(TIME_T_ALTERNATIVES): $(VERSION_DEPS)
|
||||
mkdir $@.dir
|
||||
ln $(VERSION_DEPS) $@.dir
|
||||
case $@ in \
|
||||
int32_t) range=-2147483648,2147483648;; \
|
||||
int*32_t) range=-2147483648,2147483648;; \
|
||||
u*) range=0,4294967296;; \
|
||||
*) range=-4294967296,4294967296;; \
|
||||
esac && \
|
||||
@@ -1022,7 +1031,7 @@ tarballs rearguard_tarballs traditional_tarballs \
|
||||
signatures rearguard_signatures traditional_signatures: \
|
||||
version set-timestamps.out rearguard.zi
|
||||
VERSION=`cat version` && \
|
||||
$(MAKE) VERSION="$$VERSION" $@_version
|
||||
$(MAKE) AWK='$(AWK)' VERSION="$$VERSION" $@_version
|
||||
|
||||
# These *_version rules are intended for use if VERSION is set by some
|
||||
# other means. Ordinarily these rules are used only by the above
|
||||
@@ -1059,14 +1068,18 @@ tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out
|
||||
for f in $(TDATA) $(PACKRATDATA); do \
|
||||
rearf=tzdata$(VERSION)-rearguard.dir/$$f; \
|
||||
$(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \
|
||||
touch -cmr `ls -t ziguard.awk $$f` $$rearf || exit; \
|
||||
$(SET_TIMESTAMP_DEP) $$rearf ziguard.awk $$f || exit; \
|
||||
done
|
||||
sed '1s/$$/-rearguard/' \
|
||||
<version >tzdata$(VERSION)-rearguard.dir/version
|
||||
: The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
|
||||
TZ=UTC0 touch -mt 202010122253.00 \
|
||||
tzdata$(VERSION)-rearguard.dir/pacificnew
|
||||
touch -cmr version tzdata$(VERSION)-rearguard.dir/version
|
||||
LC_ALL=C && export LC_ALL && \
|
||||
(cd tzdata$(VERSION)-rearguard.dir && \
|
||||
tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) | \
|
||||
tar $(TARFLAGS) -cf - \
|
||||
$(COMMON) $(DATA) $(MISC) pacificnew | \
|
||||
gzip $(GZIPFLAGS)) >$@.out
|
||||
mv $@.out $@
|
||||
|
||||
@@ -1074,7 +1087,7 @@ tzdb-$(VERSION).tar.lz: set-timestamps.out set-tzs-timestamp.out
|
||||
rm -fr tzdb-$(VERSION)
|
||||
mkdir tzdb-$(VERSION)
|
||||
ln $(ENCHILADA) tzdb-$(VERSION)
|
||||
touch -cmr `ls -t tzdb-$(VERSION)/* | sed 1q` tzdb-$(VERSION)
|
||||
$(SET_TIMESTAMP) tzdb-$(VERSION) tzdb-$(VERSION)/*
|
||||
LC_ALL=C && export LC_ALL && \
|
||||
tar $(TARFLAGS) -cf - tzdb-$(VERSION) | lzip -9 >$@.out
|
||||
mv $@.out $@
|
||||
@@ -1116,8 +1129,6 @@ strftime.o: private.h tzfile.h
|
||||
zdump.o: version.h
|
||||
zic.o: private.h tzfile.h version.h
|
||||
|
||||
.KEEP_STATE:
|
||||
|
||||
.PHONY: ALL INSTALL all
|
||||
.PHONY: check check_time_t_alternatives
|
||||
.PHONY: check_web check_zishrink
|
||||
|
||||
+521
-4
@@ -1,5 +1,522 @@
|
||||
News for the tz database
|
||||
|
||||
Release 2022a - 2022-03-15 23:02:01 -0700
|
||||
|
||||
Briefly:
|
||||
Palestine will spring forward on 2022-03-27, not -03-26.
|
||||
zdump -v now outputs better failure indications.
|
||||
Bug fixes for code that reads corrupted TZif data.
|
||||
|
||||
Changes to future timestamps
|
||||
|
||||
Palestine will spring forward on 2022-03-27, not 2022-03-26.
|
||||
(Thanks to Heba Hamad.) Predict future transitions for first
|
||||
Sunday >= March 25. Additionally, predict fallbacks to be the first
|
||||
Friday on or after October 23, not October's last Friday, to be more
|
||||
consistent with recent practice. The first differing fallback
|
||||
prediction is on 2025-10-24, not 2025-10-31.
|
||||
|
||||
Changes to past timestamps
|
||||
|
||||
From 1992 through spring 1996, Ukraine's DST transitions were at
|
||||
02:00 standard time, not at 01:00 UTC. (Thanks to Alois Treindl.)
|
||||
|
||||
Chile's Santiago Mean Time and its LMT precursor have been adjusted
|
||||
eastward by 1 second to align with past and present law.
|
||||
|
||||
Changes to commentary
|
||||
|
||||
Add several references for Chile's 1946/1947 transitions, some of
|
||||
which only affected portions of the country.
|
||||
|
||||
Changes to code
|
||||
|
||||
Fix bug when mktime gets confused by truncated TZif files with
|
||||
unspecified local time. (Problem reported by Almaz Mingaleev.)
|
||||
|
||||
Fix bug when 32-bit time_t code reads malformed 64-bit TZif data.
|
||||
(Problem reported by Christos Zoulas.)
|
||||
|
||||
When reading a version 2 or later TZif file, the TZif reader now
|
||||
validates the version 1 header and data block only enough to skip
|
||||
over them, as recommended by RFC 8536 section 4. Also, the TZif
|
||||
reader no longer mistakenly attempts to parse a version 1 TZIf
|
||||
file header as a TZ string.
|
||||
|
||||
zdump -v now outputs "(localtime failed)" and "(gmtime failed)"
|
||||
when local time and UT cannot be determined for a timestamp.
|
||||
|
||||
Changes to build procedure
|
||||
|
||||
Distribution tarballs now use standard POSIX.1-1988 ustar format
|
||||
instead of GNU format. Although the formats are almost identical
|
||||
for these tarballs, ustar headers' magic fields contain "ustar"
|
||||
instead of "ustar ", and their version fields contain "00" instead
|
||||
of " ". The two formats are planned to diverge more significantly
|
||||
for tzdb releases after 2242-03-16 12:56:31 UTC, when the ustar
|
||||
format becomes obsolete and the tarballs switch to pax format, an
|
||||
extension of ustar. For details about these formats, please see
|
||||
"pax - portable archive interchange", IEEE Std 1003.1-2017,
|
||||
<https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13>.
|
||||
|
||||
|
||||
Release 2021e - 2021-10-21 18:41:00 -0700
|
||||
|
||||
Changes to future timestamps
|
||||
|
||||
Palestine will fall back 10-29 (not 10-30) at 01:00.
|
||||
(Thanks to P Chan and Heba Hemad.)
|
||||
|
||||
|
||||
Release 2021d - 2021-10-15 13:48:18 -0700
|
||||
|
||||
Briefly:
|
||||
Fiji suspends DST for the 2021/2022 season.
|
||||
'zic -r' marks unspecified timestamps with "-00".
|
||||
|
||||
Changes to future timestamps
|
||||
|
||||
Fiji will suspend observance of DST for the 2021/2022 season.
|
||||
Assume for now that it will return next year. (Thanks to Jashneel
|
||||
Kumar and P Chan.)
|
||||
|
||||
Changes to code
|
||||
|
||||
'zic -r' now uses "-00" time zone abbreviations for intervals
|
||||
with UT offsets that are unspecified due to -r truncation.
|
||||
This implements a change in draft Internet RFC 8536bis.
|
||||
|
||||
|
||||
Release 2021c - 2021-10-01 14:21:49 -0700
|
||||
|
||||
Briefly:
|
||||
Revert most 2021b changes to 'backward'.
|
||||
Fix 'zic -b fat' bug in pre-1970 32-bit data.
|
||||
Fix two Link line typos.
|
||||
Distribute SECURITY file.
|
||||
|
||||
This release is intended as a bugfix release, to fix compatibility
|
||||
problems and typos reported since 2021b was released.
|
||||
|
||||
Changes to Link directives
|
||||
|
||||
Revert almost all of 2021b's changes to the 'backward' file,
|
||||
by moving Link directives back to where they were in 2021a.
|
||||
Although 'zic' doesn't care which source file contains a Link
|
||||
directive, some downstream uses ran into trouble with the move.
|
||||
(Problem reported by Stephen Colebourne for Joda-Time.)
|
||||
|
||||
Fix typo that linked Atlantic/Jan_Mayen to the wrong location
|
||||
(problem reported by Chris Walton).
|
||||
|
||||
Fix 'backzone' typo that linked America/Virgin to the wrong
|
||||
location (problem reported by Michael Deckers).
|
||||
|
||||
Changes to code
|
||||
|
||||
Fix a bug in 'zic -b fat' that caused old timestamps to be
|
||||
mishandled in 32-bit-only readers (problem reported by Daniel
|
||||
Fischer).
|
||||
|
||||
Changes to documentation
|
||||
|
||||
Distribute the SECURITY file (problem reported by Andreas Radke).
|
||||
|
||||
|
||||
Release 2021b - 2021-09-24 16:23:00 -0700
|
||||
|
||||
Briefly:
|
||||
Jordan now starts DST on February's last Thursday.
|
||||
Samoa no longer observes DST.
|
||||
Merge more location-based Zones whose timestamps agree since 1970.
|
||||
Move some backward-compatibility links to 'backward'.
|
||||
Rename Pacific/Enderbury to Pacific/Kanton.
|
||||
Correct many pre-1993 transitions in Malawi, Portugal, etc.
|
||||
zic now creates each output file or link atomically.
|
||||
zic -L no longer omits the POSIX TZ string in its output.
|
||||
zic fixes for truncation and leap second table expiration.
|
||||
zic now follows POSIX for TZ strings using all-year DST.
|
||||
Fix some localtime crashes and bugs in obscure cases.
|
||||
zdump -v now outputs more-useful boundary cases.
|
||||
tzfile.5 better matches a draft successor to RFC 8536.
|
||||
A new file SECURITY.
|
||||
|
||||
This release is prompted by recent announcements by Jordan and Samoa.
|
||||
It incorporates many other changes that had accumulated since 2021a.
|
||||
However, it omits most proposed changes that merged all Zones
|
||||
agreeing since 1970, as concerns were raised about doing too many of
|
||||
these changes at once. It does keeps some of these changes in the
|
||||
interest of making tzdb more equitable one step at a time; see
|
||||
"Merge more location-based Zones" below.
|
||||
|
||||
Changes to future timestamps
|
||||
|
||||
Jordan now starts DST on February's last Thursday.
|
||||
(Thanks to Steffen Thorsen.)
|
||||
|
||||
Samoa no longer observes DST. (Thanks to Geoffrey D. Bennett.)
|
||||
|
||||
Changes to zone name
|
||||
|
||||
Rename Pacific/Enderbury to Pacific/Kanton. When we added
|
||||
Enderbury in 1993, we did not know that it is uninhabited and that
|
||||
Kanton (population two dozen) is the only inhabited location in
|
||||
that timezone. The old name is now a backward-compatility link.
|
||||
|
||||
Changes to past timestamps
|
||||
|
||||
Correct many pre-1993 transitions, fixing entries originally
|
||||
derived from Shanks, Whitman, and Mundell. The fixes include:
|
||||
- Barbados: standard time was introduced in 1911, not 1932; and
|
||||
DST was observed in 1942-1944
|
||||
- Cook Islands: In 1899 they switched from east to west of GMT,
|
||||
celebrating Christmas for two days. They (and Niue) switched
|
||||
to standard time in 1952, not 1901.
|
||||
- Guyana: corrected LMT for Georgetown; the introduction of
|
||||
standard time in 1911, not 1915; and corrections to 1975 and
|
||||
1992 transitions
|
||||
- Kanton: uninhabited before 1937-08-31
|
||||
- Niue: only observed -11:20 from 1952 through 1964, then went to
|
||||
-11 instead of -11:30
|
||||
- Portugal: DST was observed in 1950
|
||||
- Tonga: corrected LMT; the introduction of standard time in 1945,
|
||||
not 1901; and corrections to the transition from +12:20 to +13
|
||||
in 1961, not 1941
|
||||
Additional fixes to entries in the 'backzone' file include:
|
||||
- Enderbury: inhabited only 1860/1885 and 1938-03-06/1942-02-09
|
||||
- The Gambia: 1933 and 1942 transitions
|
||||
- Malawi: several 1911 through 1925 transitions
|
||||
- Sierra Leone: several 1913 through 1941 transitions, and DST
|
||||
was NOT observed in 1957 through 1962
|
||||
(Thanks to P Chan, Michael Deckers, Alexander Krivenyshev and
|
||||
Alois Treindl.)
|
||||
|
||||
Merge more location-based Zones whose timestamps agree since 1970,
|
||||
as pre-1970 timestamps are out of scope. This is part of a
|
||||
process that has been ongoing since 2013. This does not affect
|
||||
post-1970 timestamps, and timezone historians who build with 'make
|
||||
PACKRATDATA=backzone' should see no changes to pre-1970 timestamps.
|
||||
When merging, keep the most-populous location's data, and move
|
||||
data for other locations to 'backzone' with a backward
|
||||
link in 'backward'. For example, move America/Creston data to
|
||||
'backzone' with a link in 'backward' from America/Phoenix because
|
||||
the two timezones' timestamps agree since 1970; this change
|
||||
affects some pre-1968 timestamps in America/Creston because
|
||||
Creston and Phoenix disagreed before 1968. The affected Zones
|
||||
are Africa/Accra, America/Atikokan, America/Blanc-Sablon,
|
||||
America/Creston, America/Curacao, America/Nassau,
|
||||
America/Port_of_Spain, Antarctica/DumontDUrville, and
|
||||
Antarctica/Syowa.
|
||||
|
||||
Changes to maintenance procedure
|
||||
|
||||
The new file SECURITY covers how to report security-related bugs.
|
||||
|
||||
Several backward-compatibility links have been moved to the
|
||||
'backward' file. These links, which range from Africa/Addis_Ababa
|
||||
to Pacific/Saipan, are only for compatibility with now-obsolete
|
||||
guidelines suggesting an entry for every ISO 3166 code.
|
||||
The intercontinental convenience links Asia/Istanbul and
|
||||
Europe/Nicosia have also been moved to 'backward'.
|
||||
|
||||
Changes to code
|
||||
|
||||
zic now creates each output file or link atomically,
|
||||
possibly by creating a temporary file and then renaming it.
|
||||
This avoids races where a TZ setting would temporarily stop
|
||||
working while zic was installing a replacement file or link.
|
||||
|
||||
zic -L no longer omits the POSIX TZ string in its output.
|
||||
Starting with 2020a, zic -L truncated its output according to the
|
||||
"Expires" directive or "#expires" comment in the leapseconds file.
|
||||
The resulting TZif files omitted daylight saving transitions after
|
||||
the leap second table expired, which led to far less-accurate
|
||||
predictions of times after the expiry. Although future timestamps
|
||||
cannot be converted accurately in the presence of leap seconds, it
|
||||
is more accurate to convert near-future timestamps with a few
|
||||
seconds error than with an hour error, so zic -L no longer
|
||||
truncates output in this way.
|
||||
|
||||
Instead, when zic -L is given the "Expires" directive, it now
|
||||
outputs the expiration by appending a no-change entry to the leap
|
||||
second table. Although this should work well with most TZif
|
||||
readers, it does not conform to Internet RFC 8536 and some pickier
|
||||
clients (including tzdb 2017c through 2021a) reject it, so
|
||||
"Expires" directives are currently disabled by default. To enable
|
||||
them, set the EXPIRES_LINE Makefile variable. If a TZif file uses
|
||||
this new feature it is marked with a new TZif version number 4,
|
||||
a format intended to be documented in a successor to RFC 8536.
|
||||
|
||||
zic -L LEAPFILE -r @LO no longer generates an invalid TZif file
|
||||
that omits leap second information for the range LO..B when LO
|
||||
falls between two leap seconds A and B. Instead, it generates a
|
||||
TZif version 4 file that represents the previously-missing
|
||||
information.
|
||||
|
||||
The TZif reader now allows the leap second table to begin with a
|
||||
correction other than -1 or +1, and to contain adjacent
|
||||
transitions with equal corrections. This supports TZif version 4.
|
||||
|
||||
The TZif reader now lets leap seconds occur less than 28 days
|
||||
apart. This supports possible future TZif extensions.
|
||||
|
||||
Fix bug that caused 'localtime' etc. to crash when TZ was
|
||||
set to a all-year DST string like "EST5EDT4,0/0,J365/25" that does
|
||||
not conform to POSIX but does conform to Internet RFC 8536.
|
||||
|
||||
Fix another bug that caused 'localtime' etc. to crash when TZ was
|
||||
set to a POSIX-conforming but unusual TZ string like
|
||||
"EST5EDT4,0/0,J365/0", where almost all the year is DST.
|
||||
|
||||
Fix yet another bug that caused 'localtime' etc. to mishandle slim
|
||||
TZif files containing leap seconds after the last explicit
|
||||
transition in the table, or when handling far-future timestamps
|
||||
in slim TZif files lacking leap seconds.
|
||||
|
||||
Fix localtime misbehavior involving positive leap seconds.
|
||||
This change affects only behavior for "right" system time,
|
||||
which contains leap seconds, and only if the UT offset is
|
||||
not a multiple of 60 seconds when a positive leap second occurs.
|
||||
(No such timezone exists in tzdb, luckily.) Without the fix,
|
||||
the timestamp was ambiguous during a positive leap second.
|
||||
With the fix, any seconds occurring after a positive leap second
|
||||
and within the same localtime minute are counted through 60, not
|
||||
through 59; their UT offset (tm_gmtoff) is the same as before.
|
||||
Here is how the fix affects timestamps in a timezone with UT
|
||||
offset +01:23:45 (5025 seconds) and with a positive leap second at
|
||||
1972-06-30 23:59:60 UTC (78796800):
|
||||
|
||||
time_t without the fix with the fix
|
||||
78796800 1972-07-01 01:23:45 1972-07-01 01:23:45 (leap second)
|
||||
78796801 1972-07-01 01:23:45 1972-07-01 01:23:46
|
||||
...
|
||||
78796815 1972-07-01 01:23:59 1972-07-01 01:23:60
|
||||
78796816 1972-07-01 01:24:00 1972-07-01 01:24:00
|
||||
|
||||
Fix an unlikely bug that caused 'localtime' etc. to misbehave if
|
||||
civil time changes a few seconds before time_t wraps around, when
|
||||
leap seconds are enabled.
|
||||
|
||||
Fix bug in zic -r; in some cases, the dummy time type after the
|
||||
last time transition disagreed with the TZ string, contrary to
|
||||
Internet RFC 8563 section 3.3.
|
||||
|
||||
Fix a bug with 'zic -r @X' when X is a negative leap second that
|
||||
has a nonnegative correction. Without the fix, the output file
|
||||
was truncated so that X appeared to be a positive leap second.
|
||||
Fix a similar, even-less-likely bug when truncating at a positive
|
||||
leap second that has a nonpositive correction.
|
||||
|
||||
zic -r now reports an error if given rolling leap seconds, as this
|
||||
usage has never generally worked and is evidently unused.
|
||||
|
||||
zic now generates a POSIX-conforming TZ string for TZif files
|
||||
where all-year DST is predicted for the indefinite future.
|
||||
For example, for all-year Eastern Daylight Time, zic now generates
|
||||
"XXX3EDT4,0/0,J365/23" where it previously generated
|
||||
"EST5EDT,0/0,J365/25" or "". (Thanks to Michael Deckers for
|
||||
noting the possibility of POSIX conformance.)
|
||||
|
||||
zic.c no longer requires sys/wait.h (thanks to spazmodius for
|
||||
noting it wasn't needed).
|
||||
|
||||
When reading slim TZif files, zdump no longer mishandles leap
|
||||
seconds on the rare platforms where time_t counts leap seconds,
|
||||
fixing a bug introduced in 2014g.
|
||||
|
||||
zdump -v now outputs timestamps at boundaries of what localtime
|
||||
and gmtime can represent, instead of the less-useful timestamps
|
||||
one day after the minimum and one day before the maximum.
|
||||
(Thanks to Arthur David Olson for prototype code, and to Manuela
|
||||
Friedrich for debugging help.)
|
||||
|
||||
zdump's -c and -t options are now consistently inclusive for the
|
||||
lower time bound and exclusive for the upper. Formerly they were
|
||||
inconsistent. (Confusion noted by Martin Burnicki.)
|
||||
|
||||
Changes to build procedure
|
||||
|
||||
You can now compile with -DHAVE_MALLOC_ERRNO=0 to port to
|
||||
non-POSIX hosts where malloc doesn't set errno.
|
||||
(Problem reported by Jan Engelhardt.)
|
||||
|
||||
Changes to documentation
|
||||
|
||||
tzfile.5 better matches a draft successor to RFC 8536
|
||||
<https://datatracker.ietf.org/doc/draft-murchison-rfc8536bis/01/>.
|
||||
|
||||
|
||||
Release 2021a - 2021-01-24 10:54:57 -0800
|
||||
|
||||
Changes to future timestamps
|
||||
|
||||
South Sudan changes from +03 to +02 on 2021-02-01 at 00:00.
|
||||
(Thanks to Steffen Thorsen.)
|
||||
|
||||
|
||||
Release 2020f - 2020-12-29 00:17:46 -0800
|
||||
|
||||
Change to build procedure
|
||||
|
||||
'make rearguard_tarballs' no longer generates a bad rearguard.zi,
|
||||
fixing a 2020e bug. (Problem reported by Deborah Goldsmith.)
|
||||
|
||||
|
||||
Release 2020e - 2020-12-22 15:14:34 -0800
|
||||
|
||||
Briefly:
|
||||
Volgograd switches to Moscow time on 2020-12-27 at 02:00.
|
||||
|
||||
Changes to future timestamps
|
||||
|
||||
Volgograd changes time zone from +04 to +03 on 2020-12-27 at 02:00.
|
||||
(Thanks to Alexander Krivenyshev and Stepan Golosunov.)
|
||||
|
||||
Changes to past timestamps
|
||||
|
||||
Correct many pre-1986 transitions, fixing entries originally
|
||||
derived from Shanks. The fixes include:
|
||||
- Australia: several 1917 through 1971 transitions
|
||||
- The Bahamas: several 1941 through 1945 transitions
|
||||
- Bermuda: several 1917 through 1956 transitions
|
||||
- Belize: several 1942 through 1968 transitions
|
||||
- Ghana: several 1915 through 1956 transitions
|
||||
- Israel and Palestine: several 1940 through 1985 transitions
|
||||
- Kenya and adjacent: several 1908 through 1960 transitions
|
||||
- Nigeria and adjacent: correcting LMT in Lagos, and several 1905
|
||||
through 1919 transitions
|
||||
- Seychelles: the introduction of standard time in 1907, not 1906
|
||||
- Vanuatu: DST in 1973-1974, and a corrected 1984 transition
|
||||
(Thanks to P Chan.)
|
||||
|
||||
Because of the Australia change, Australia/Currie (King Island) is
|
||||
no longer needed, as it is identical to Australia/Hobart for all
|
||||
timestamps since 1970 and was therefore created by mistake.
|
||||
Australia/Currie has been moved to the 'backward' file and its
|
||||
corrected data moved to the 'backzone' file.
|
||||
|
||||
Changes to past time zone abbreviations and DST flags
|
||||
|
||||
To better match legislation in Turks and Caicos, the 2015 shift to
|
||||
year-round observance of -04 is now modeled as AST throughout before
|
||||
returning to Eastern Time with US DST in 2018, rather than as
|
||||
maintaining EDT until 2015-11-01. (Thanks to P Chan.)
|
||||
|
||||
Changes to documentation
|
||||
|
||||
The zic man page now documents zic's coalescing of transitions
|
||||
when a zone falls back just before DST springs forward.
|
||||
|
||||
|
||||
Release 2020d - 2020-10-21 11:24:13 -0700
|
||||
|
||||
Briefly:
|
||||
Palestine ends DST earlier than predicted, on 2020-10-24.
|
||||
|
||||
Changes to past and future timestamps
|
||||
|
||||
Palestine ends DST on 2020-10-24 at 01:00, instead of 2020-10-31
|
||||
as previously predicted (thanks to Sharef Mustafa.) Its
|
||||
2019-10-26 fall-back was at 00:00, not 01:00 (thanks to Steffen
|
||||
Thorsen.) Its 2015-10-23 transition was at 01:00 not 00:00, and
|
||||
its spring 2020 transition was on March 28 at 00:00, not March 27
|
||||
(thanks to Pierre Cashon.) This affects Asia/Gaza and
|
||||
Asia/Hebron. Assume future spring and fall transitions will be on
|
||||
the Saturday preceding the last Sunday of March and October,
|
||||
respectively.
|
||||
|
||||
|
||||
Release 2020c - 2020-10-16 11:15:53 -0700
|
||||
|
||||
Briefly:
|
||||
Fiji starts DST later than usual, on 2020-12-20.
|
||||
|
||||
Changes to future timestamps
|
||||
|
||||
Fiji will start DST on 2020-12-20, instead of 2020-11-08 as
|
||||
previously predicted. DST will still end on 2021-01-17.
|
||||
(Thanks to Raymond Kumar and Alan Mintz.) Assume for now that
|
||||
the later-than-usual start date is a one-time departure from the
|
||||
recent pattern.
|
||||
|
||||
Changes to build procedure
|
||||
|
||||
Rearguard tarballs now contain an empty file pacificnew.
|
||||
Some older downstream software expects this file to exist.
|
||||
(Problem reported by Mike Cullinan.)
|
||||
|
||||
|
||||
Release 2020b - 2020-10-06 18:35:04 -0700
|
||||
|
||||
Briefly:
|
||||
Revised predictions for Morocco's changes starting in 2023.
|
||||
Canada's Yukon changes to -07 on 2020-11-01, not 2020-03-08.
|
||||
Macquarie Island has stayed in sync with Tasmania since 2011.
|
||||
Casey, Antarctica is at +08 in winter and +11 in summer.
|
||||
zic no longer supports -y, nor the TYPE field of Rules.
|
||||
|
||||
Changes to future timestamps
|
||||
|
||||
Morocco's spring-forward after Ramadan is now predicted to occur
|
||||
no sooner than two days after Ramadan, instead of one day.
|
||||
(Thanks to Milamber.) The first altered prediction is for 2023,
|
||||
now predicted to spring-forward on April 30 instead of April 23.
|
||||
|
||||
Changes to past and future timestamps
|
||||
|
||||
Casey Station, Antarctica has been using +08 in winter and +11 in
|
||||
summer since 2018. The most recent transition from +08 to +11 was
|
||||
2020-10-04 00:01. Also, Macquarie Island has been staying in
|
||||
sync with Tasmania since 2011. (Thanks to Steffen Thorsen.)
|
||||
|
||||
Changes to past and future time zone abbreviations and DST flags
|
||||
|
||||
Canada's Yukon, represented by America/Whitehorse and
|
||||
America/Dawson, changes its time zone rules from -08/-07 to
|
||||
permanent -07 on 2020-11-01, not on 2020-03-08 as 2020a had it.
|
||||
This change affects only the time zone abbreviation (MST vs PDT)
|
||||
and daylight saving flag for the period between the two dates.
|
||||
(Thanks to Andrew G. Smith.)
|
||||
|
||||
Changes to past timestamps
|
||||
|
||||
Correct several transitions for Hungary for 1918/1983.
|
||||
For example, the 1983-09-25 fall-back was at 01:00, not 03:00.
|
||||
(Thanks to Géza Nyáry.) Also, the 1890 transition to standard
|
||||
time was on 11-01, not 10-01 (thanks to Michael Deckers).
|
||||
|
||||
The 1891 French transition was on March 16, not March 15. The
|
||||
1911-03-11 French transition was at midnight, not a minute later.
|
||||
Monaco's transitions were on 1892-06-01 and 1911-03-29, not
|
||||
1891-03-15 and 1911-03-11. (Thanks to Michael Deckers.)
|
||||
|
||||
Changes to code
|
||||
|
||||
Support for zic's long-obsolete '-y YEARISTYPE' option has been
|
||||
removed and, with it, so has support for the TYPE field in Rule
|
||||
lines, which is now reserved for compatibility with earlier zic.
|
||||
These features were previously deprecated in release 2015f.
|
||||
(Thanks to Tim Parenti.)
|
||||
|
||||
zic now defaults to '-b slim' instead of to '-b fat'.
|
||||
|
||||
zic's new '-l -' and '-p -' options uninstall any existing
|
||||
localtime and posixrules files, respectively.
|
||||
|
||||
The undocumented and ineffective tzsetwall function has been
|
||||
removed.
|
||||
|
||||
Changes to build procedure
|
||||
|
||||
The Makefile now defaults POSIXRULES to '-', so the posixrules
|
||||
feature (obsolete as of 2019b) is no longer installed by default.
|
||||
|
||||
Changes to documentation and commentary
|
||||
|
||||
The long-obsolete files pacificnew, systemv, and yearistype.sh have
|
||||
been removed from the distribution. (Thanks to Tim Parenti.)
|
||||
|
||||
|
||||
Release 2020a - 2020-04-23 16:03:47 -0700
|
||||
|
||||
Briefly:
|
||||
@@ -116,13 +633,13 @@ Release 2019c - 2019-09-11 08:59:48 -0700
|
||||
probably wrong.)
|
||||
|
||||
Fix several errors in pre-1970 transitions in Perry County, IN.
|
||||
(Thanks to Alois Triendl for pointing out the 1967/9 errors.)
|
||||
(Thanks to Alois Treindl for pointing out the 1967/9 errors.)
|
||||
|
||||
Edmonton did not observe DST in 1967 or 1969. In 1946 Vancouver
|
||||
ended DST on 09-29 not 10-13, and Vienna ended DST on 10-07 not
|
||||
10-06. In 1945 Königsberg (now Kaliningrad) switched from +01/+02
|
||||
to +02/+03 on 04-10 not 01-01, and its +02/+03 is abbreviated
|
||||
EET/EEST, not CET/CEST. (Thanks to Alois Triendl.) In 1946
|
||||
EET/EEST, not CET/CEST. (Thanks to Alois Treindl.) In 1946
|
||||
Königsberg switched to +03 on 04-07 not 01-01.
|
||||
|
||||
In 1946 Louisville switched from CST to CDT on 04-28 at 00:01, not
|
||||
@@ -654,8 +1171,8 @@ Release 2018d - 2018-03-22 07:05:46 -0700
|
||||
Institute in Montevideo.
|
||||
(Thanks to Jeremie Bonjour, Tim Parenti, and Michael Deckers.)
|
||||
|
||||
Enderbury and Kiritimati skipped New Year's Eve 1994, not
|
||||
New Year's Day 1995. (Thanks to Kerry Shetline.)
|
||||
East Kiribati skipped New Year's Eve 1994, not New Year's Day 1995.
|
||||
(Thanks to Kerry Shetline.)
|
||||
|
||||
Fix the 1912-01-01 transition for Portugal and its colonies.
|
||||
This transition was at 00:00 according to the new UT offset, not
|
||||
|
||||
@@ -20,6 +20,8 @@ substituting your desired installation directory for "$HOME/tzdir":
|
||||
make TOPDIR=$HOME/tzdir install
|
||||
$HOME/tzdir/usr/bin/zdump -v America/Los_Angeles
|
||||
|
||||
See the file tz-how-to.html for examples of how to read the data files.
|
||||
|
||||
This database of historical local time information has several goals:
|
||||
|
||||
* Provide a compendium of data about the history of civil time that
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
Please report any sensitive security-related bugs via email to the
|
||||
tzdb designated coordinators, currently Paul Eggert
|
||||
<[email protected]> and Tim Parenti <[email protected]>.
|
||||
Put "tzdb security" at the start of your email's subject line.
|
||||
We prefer communications to be in English.
|
||||
|
||||
You should receive a response within a week. If not, please follow up
|
||||
via email to make sure we received your original message.
|
||||
|
||||
If we confirm the bug, we plan to notify affected third-party services
|
||||
or software that we know about, prepare an advisory, commit fixes to
|
||||
the main development branch as quickly as is practical, and finally
|
||||
publish the advisory on [email protected]. As with all tzdb contributions,
|
||||
we give credit to security contributors unless they wish to remain
|
||||
anonymous.
|
||||
+191
-91
@@ -30,9 +30,6 @@
|
||||
# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
|
||||
# https://www.jstor.org/stable/1774359
|
||||
#
|
||||
# A reliable and entertaining source about time zones is
|
||||
# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
|
||||
#
|
||||
# European-style abbreviations are commonly used along the Mediterranean.
|
||||
# For sub-Saharan Africa abbreviations were less standardized.
|
||||
# Previous editions of this database used WAT, CAT, SAT, and EAT
|
||||
@@ -64,7 +61,7 @@
|
||||
# Corrections are welcome.
|
||||
|
||||
# Algeria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Algeria 1916 only - Jun 14 23:00s 1:00 S
|
||||
Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
|
||||
Rule Algeria 1917 only - Mar 24 23:00s 1:00 S
|
||||
@@ -87,10 +84,9 @@ Rule Algeria 1978 only - Mar 24 1:00 1:00 S
|
||||
Rule Algeria 1978 only - Sep 22 3:00 0 -
|
||||
Rule Algeria 1980 only - Apr 25 0:00 1:00 S
|
||||
Rule Algeria 1980 only - Oct 31 2:00 0 -
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
# See Europe/Paris for PMT-related transitions.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01
|
||||
Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 16
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
0:00 Algeria WE%sT 1940 Feb 25 2:00
|
||||
1:00 Algeria CE%sT 1946 Oct 7
|
||||
@@ -154,8 +150,9 @@ Zone Africa/Ndjamena 1:00:12 - LMT 1912 # N'Djamena
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Abidjan -0:16:08 - LMT 1912
|
||||
0:00 - GMT
|
||||
Link Africa/Abidjan Africa/Accra # Ghana
|
||||
Link Africa/Abidjan Africa/Bamako # Mali
|
||||
Link Africa/Abidjan Africa/Banjul # Gambia
|
||||
Link Africa/Abidjan Africa/Banjul # The Gambia
|
||||
Link Africa/Abidjan Africa/Conakry # Guinea
|
||||
Link Africa/Abidjan Africa/Dakar # Senegal
|
||||
Link Africa/Abidjan Africa/Freetown # Sierra Leone
|
||||
@@ -176,7 +173,7 @@ Link Africa/Abidjan Atlantic/St_Helena # St Helena
|
||||
# Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
|
||||
# did not apply to Cairo, Alexandria, or Port Said.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Egypt 1940 only - Jul 15 0:00 1:00 S
|
||||
Rule Egypt 1940 only - Oct 1 0:00 0 -
|
||||
Rule Egypt 1941 only - Apr 15 0:00 1:00 S
|
||||
@@ -382,42 +379,8 @@ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
|
||||
# Gabon
|
||||
# See Africa/Lagos.
|
||||
|
||||
# Gambia
|
||||
# See Africa/Abidjan.
|
||||
|
||||
# The Gambia
|
||||
# Ghana
|
||||
|
||||
# From Paul Eggert (2018-01-30):
|
||||
# Whitman says DST was observed from 1931 to "the present";
|
||||
# Shanks & Pottenger say 1936 to 1942 with 20 minutes of DST,
|
||||
# with transitions on 09-01 and 12-31 at 00:00.
|
||||
# Page 33 of Parish GCB, Colonial Reports - Annual. No. 1066. Gold
|
||||
# Coast. Report for 1919. (March 1921), OCLC 784024077
|
||||
# http://libsysdigi.library.illinois.edu/ilharvest/africana/books2011-05/5530214/5530214_1919/5530214_1919_opt.pdf
|
||||
# lists the Determination of the Time Ordinance, 1919, No. 18,
|
||||
# "to advance the time observed locally by the space of twenty minutes
|
||||
# during the last four months of each year; the object in view being
|
||||
# to extend during those months the period of daylight-time available
|
||||
# for evening recreation after office hours."
|
||||
# Vanessa Ogle, The Global Transformation of Time, 1870-1950 (2015), p 33,
|
||||
# writes "In 1919, the Gold Coast (Ghana as of 1957) made Greenwich
|
||||
# time its legal time and simultaneously legalized a summer time of
|
||||
# UTC - 00:20 minutes from March to October."; a footnote lists
|
||||
# the ordinance as being dated 1919-11-24.
|
||||
# The Crown Colonist, Volume 12 (1942), p 176, says "the Government
|
||||
# intend advancing Gold Coast time half an hour ahead of G.M.T.
|
||||
# The actual date of the alteration has not yet been announced."
|
||||
# These sources are incomplete and contradictory. Possibly what is
|
||||
# now Ghana observed different DST regimes in different years. For
|
||||
# lack of better info, use Shanks except treat the minus sign as a
|
||||
# typo, and assume DST started in 1920 not 1936.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Ghana 1920 1942 - Sep 1 0:00 0:20 -
|
||||
Rule Ghana 1920 1942 - Dec 31 0:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Accra -0:00:52 - LMT 1918
|
||||
0:00 Ghana GMT/+0020
|
||||
|
||||
# Guinea
|
||||
# See Africa/Abidjan.
|
||||
|
||||
@@ -434,11 +397,54 @@ Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 1:00u
|
||||
0:00 - GMT
|
||||
|
||||
# Kenya
|
||||
|
||||
# From P Chan (2020-10-24):
|
||||
#
|
||||
# The standard time of GMT+2:30 was adopted in the East Africa Protectorate....
|
||||
# [The Official Gazette, 1908-05-01, p 274]
|
||||
# https://books.google.com/books?id=e-cAC-sjPSEC&pg=PA274
|
||||
#
|
||||
# At midnight on 30 June 1928 the clocks throughout Kenya was put forward
|
||||
# half an hour by the Alteration of Time Ordinance, 1928.
|
||||
# https://gazettes.africa/archive/ke/1928/ke-government-gazette-dated-1928-05-11-no-28.pdf
|
||||
# [Ordinance No. 11 of 1928, The Offical Gazette, 1928-06-26, p 813]
|
||||
# https://books.google.com/books?id=2S0S6os32ZUC&pg=PA813
|
||||
#
|
||||
# The 1928 ordinance was repealed by the Alteration of Time (repeal) Ordinance,
|
||||
# 1929 and the time was restored to GMT+2:30 at midnight on 4 January 1930.
|
||||
# [Ordinance No. 97 of 1929, The Official Gazette, 1929-12-31, p 2701]
|
||||
# https://books.google.com/books?id=_g18jIZQlwwC&pg=PA2701
|
||||
#
|
||||
# The Alteration of Time Ordinance, 1936 changed the time to GMT+2:45
|
||||
# and repealed the previous ordinance at midnight on 31 December 1936.
|
||||
# [The Official Gazette, 1936-07-21, p 705]
|
||||
# https://books.google.com/books?id=K7j41z0aC5wC&pg=PA705
|
||||
#
|
||||
# The Defence (Amendment of Laws No. 120) Regulations changed the time
|
||||
# to GMT+3 at midnight on 31 July 1942.
|
||||
# [Kenya Official Gazette Supplement No. 32, 1942-07-21, p 331]
|
||||
# https://books.google.com/books?hl=zh-TW&id=c_E-AQAAIAAJ&pg=PA331
|
||||
# The provision of the 1936 ordinance was not repealed and was later
|
||||
# incorporated in the Interpretation and General Clauses Ordinance in 1948.
|
||||
# Although it was overridden by the 1942 regulations.
|
||||
# [The Laws of Kenya in force on 1948-09-21, Title I, Chapter 1, 31]
|
||||
# https://dds.crl.edu/item/217517 (p.101)
|
||||
# In 1950 the Interpretation and General Clauses Ordinance was amended to adopt
|
||||
# GMT+3 permanently as the 1942 regulations were due to expire on 10 December.
|
||||
# https://books.google.com/books?id=jvR8mUDAwR0C&pg=PA787
|
||||
# [Ordinance No. 44 of 1950, Kenya Ordinances 1950, Vol. XXIX, p 294]
|
||||
# https://books.google.com/books?id=-_dQAQAAMAAJ&pg=PA294
|
||||
|
||||
# From Paul Eggert (2020-10-24):
|
||||
# The 1908-05-01 announcement does not give an effective date,
|
||||
# so just say "1908 May".
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul
|
||||
3:00 - EAT 1930
|
||||
2:30 - +0230 1940
|
||||
2:45 - +0245 1960
|
||||
Zone Africa/Nairobi 2:27:16 - LMT 1908 May
|
||||
2:30 - +0230 1928 Jun 30 24:00
|
||||
3:00 - EAT 1930 Jan 4 24:00
|
||||
2:30 - +0230 1936 Dec 31 24:00
|
||||
2:45 - +0245 1942 Jul 31 24:00
|
||||
3:00 - EAT
|
||||
Link Africa/Nairobi Africa/Addis_Ababa # Ethiopia
|
||||
Link Africa/Nairobi Africa/Asmara # Eritrea
|
||||
@@ -501,7 +507,7 @@ Zone Africa/Monrovia -0:43:08 - LMT 1882
|
||||
# From Paul Eggert (2013-10-25):
|
||||
# For now, assume they're reverting to the pre-2012 rules of permanent UT +02.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Libya 1951 only - Oct 14 2:00 1:00 S
|
||||
Rule Libya 1952 only - Jan 1 0:00 0 -
|
||||
Rule Libya 1953 only - Oct 9 2:00 1:00 S
|
||||
@@ -624,7 +630,7 @@ Zone Africa/Tripoli 0:52:44 - LMT 1920
|
||||
# "The trial ended on March 29, 2009, when the clocks moved back by one hour
|
||||
# at 2am (or 02:00) local time..."
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Mauritius 1982 only - Oct 10 0:00 1:00 -
|
||||
Rule Mauritius 1983 only - Mar 21 0:00 0 -
|
||||
Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
|
||||
@@ -639,7 +645,7 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# See Africa/Nairobi.
|
||||
|
||||
# Morocco
|
||||
# See the 'europe' file for Spanish Morocco (Africa/Ceuta).
|
||||
# See Africa/Ceuta for Spanish Morocco.
|
||||
|
||||
# From Alex Krivenyshev (2008-05-09):
|
||||
# Here is an article that Morocco plan to introduce Daylight Saving Time between
|
||||
@@ -875,17 +881,30 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# https://maroc-diplomatique.net/maroc-le-retour-a-lheure-gmt-est-prevu-dimanche-prochain/
|
||||
# http://aujourdhui.ma/actualite/gmt1-retour-a-lheure-normale-dimanche-prochain-1
|
||||
#
|
||||
# From Paul Eggert (2020-04-14):
|
||||
# From Milamber (2020-05-31)
|
||||
# In Morocco (where I live), the end of Ramadan (Arabic month) is followed by
|
||||
# the Eid al-Fitr, and concretely it's 1 or 2 day offs for the people (with
|
||||
# traditional visiting of family, big lunches/dinners, etc.). So for this
|
||||
# year the astronomical calculations don't include the following 2 days off in
|
||||
# the calc. These 2 days fall in a Sunday/Monday, so it's not acceptable by
|
||||
# people to have a time shift during these 2 days off. Perhaps you can modify
|
||||
# the (predicted) rules for next years: if the end of Ramadan is a (probable)
|
||||
# Friday or Saturday (and so the 2 days off are on a weekend), the next time
|
||||
# shift will be the next weekend.
|
||||
#
|
||||
# From Paul Eggert (2020-05-31):
|
||||
# For now, guess that in the future Morocco will fall back at 03:00
|
||||
# the last Sunday before Ramadan, and spring forward at 02:00 the
|
||||
# first Sunday after the day after Ramadan. To implement this,
|
||||
# transition dates for 2021 through 2087 were determined by running
|
||||
# the following program under GNU Emacs 26.3.
|
||||
# (let ((islamic-year 1442))
|
||||
# first Sunday after two days after Ramadan. To implement this,
|
||||
# transition dates and times for 2019 through 2087 were determined by
|
||||
# running the following program under GNU Emacs 26.3. (This algorithm
|
||||
# also produces the correct transition dates for 2016 through 2018,
|
||||
# though the times differ due to Morocco's time zone change in 2018.)
|
||||
# (let ((islamic-year 1440))
|
||||
# (require 'cal-islam)
|
||||
# (while (< islamic-year 1511)
|
||||
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
|
||||
# (b (1+ (calendar-islamic-to-absolute (list 10 1 islamic-year))))
|
||||
# (b (+ 2 (calendar-islamic-to-absolute (list 10 1 islamic-year))))
|
||||
# (sunday 0))
|
||||
# (while (/= sunday (mod (setq a (1- a)) 7)))
|
||||
# (while (/= sunday (mod b 7))
|
||||
@@ -899,8 +918,12 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
|
||||
# (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
|
||||
# (setq islamic-year (+ 1 islamic-year))))
|
||||
#
|
||||
# From Milamber (2021-03-31, 2022-03-10), confirming these predictions:
|
||||
# https://www.mmsp.gov.ma/fr/actualites.aspx?id=2076
|
||||
# https://www.ecoactu.ma/horaires-administration-ramadan-gmtheure-gmt-a-partir-de-dimanche-27-mars/
|
||||
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Morocco 1939 only - Sep 12 0:00 1:00 -
|
||||
Rule Morocco 1939 only - Nov 19 0:00 0 -
|
||||
Rule Morocco 1940 only - Feb 25 0:00 1:00 -
|
||||
@@ -951,7 +974,7 @@ Rule Morocco 2021 only - May 16 2:00 0 -
|
||||
Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
|
||||
Rule Morocco 2022 only - May 8 2:00 0 -
|
||||
Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
|
||||
Rule Morocco 2023 only - Apr 23 2:00 0 -
|
||||
Rule Morocco 2023 only - Apr 30 2:00 0 -
|
||||
Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
|
||||
Rule Morocco 2024 only - Apr 14 2:00 0 -
|
||||
Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
|
||||
@@ -967,7 +990,7 @@ Rule Morocco 2029 only - Feb 18 2:00 0 -
|
||||
Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
|
||||
Rule Morocco 2030 only - Feb 10 2:00 0 -
|
||||
Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
|
||||
Rule Morocco 2031 only - Jan 26 2:00 0 -
|
||||
Rule Morocco 2031 only - Feb 2 2:00 0 -
|
||||
Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
|
||||
Rule Morocco 2032 only - Jan 18 2:00 0 -
|
||||
Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
|
||||
@@ -983,7 +1006,7 @@ Rule Morocco 2036 only - Nov 23 2:00 0 -
|
||||
Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
|
||||
Rule Morocco 2037 only - Nov 15 2:00 0 -
|
||||
Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
|
||||
Rule Morocco 2038 only - Oct 31 2:00 0 -
|
||||
Rule Morocco 2038 only - Nov 7 2:00 0 -
|
||||
Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
|
||||
Rule Morocco 2039 only - Oct 23 2:00 0 -
|
||||
Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
|
||||
@@ -999,7 +1022,7 @@ Rule Morocco 2044 only - Aug 28 2:00 0 -
|
||||
Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
|
||||
Rule Morocco 2045 only - Aug 20 2:00 0 -
|
||||
Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
|
||||
Rule Morocco 2046 only - Aug 5 2:00 0 -
|
||||
Rule Morocco 2046 only - Aug 12 2:00 0 -
|
||||
Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
|
||||
Rule Morocco 2047 only - Jul 28 2:00 0 -
|
||||
Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
|
||||
@@ -1015,7 +1038,7 @@ Rule Morocco 2052 only - Jun 2 2:00 0 -
|
||||
Rule Morocco 2053 only - Apr 13 3:00 -1:00 -
|
||||
Rule Morocco 2053 only - May 25 2:00 0 -
|
||||
Rule Morocco 2054 only - Apr 5 3:00 -1:00 -
|
||||
Rule Morocco 2054 only - May 10 2:00 0 -
|
||||
Rule Morocco 2054 only - May 17 2:00 0 -
|
||||
Rule Morocco 2055 only - Mar 28 3:00 -1:00 -
|
||||
Rule Morocco 2055 only - May 2 2:00 0 -
|
||||
Rule Morocco 2056 only - Mar 12 3:00 -1:00 -
|
||||
@@ -1031,7 +1054,7 @@ Rule Morocco 2060 only - Mar 7 2:00 0 -
|
||||
Rule Morocco 2061 only - Jan 16 3:00 -1:00 -
|
||||
Rule Morocco 2061 only - Feb 27 2:00 0 -
|
||||
Rule Morocco 2062 only - Jan 8 3:00 -1:00 -
|
||||
Rule Morocco 2062 only - Feb 12 2:00 0 -
|
||||
Rule Morocco 2062 only - Feb 19 2:00 0 -
|
||||
Rule Morocco 2062 only - Dec 31 3:00 -1:00 -
|
||||
Rule Morocco 2063 only - Feb 4 2:00 0 -
|
||||
Rule Morocco 2063 only - Dec 16 3:00 -1:00 -
|
||||
@@ -1047,7 +1070,7 @@ Rule Morocco 2067 only - Dec 11 2:00 0 -
|
||||
Rule Morocco 2068 only - Oct 21 3:00 -1:00 -
|
||||
Rule Morocco 2068 only - Dec 2 2:00 0 -
|
||||
Rule Morocco 2069 only - Oct 13 3:00 -1:00 -
|
||||
Rule Morocco 2069 only - Nov 17 2:00 0 -
|
||||
Rule Morocco 2069 only - Nov 24 2:00 0 -
|
||||
Rule Morocco 2070 only - Oct 5 3:00 -1:00 -
|
||||
Rule Morocco 2070 only - Nov 9 2:00 0 -
|
||||
Rule Morocco 2071 only - Sep 20 3:00 -1:00 -
|
||||
@@ -1063,7 +1086,7 @@ Rule Morocco 2075 only - Sep 15 2:00 0 -
|
||||
Rule Morocco 2076 only - Jul 26 3:00 -1:00 -
|
||||
Rule Morocco 2076 only - Sep 6 2:00 0 -
|
||||
Rule Morocco 2077 only - Jul 18 3:00 -1:00 -
|
||||
Rule Morocco 2077 only - Aug 22 2:00 0 -
|
||||
Rule Morocco 2077 only - Aug 29 2:00 0 -
|
||||
Rule Morocco 2078 only - Jul 10 3:00 -1:00 -
|
||||
Rule Morocco 2078 only - Aug 14 2:00 0 -
|
||||
Rule Morocco 2079 only - Jun 25 3:00 -1:00 -
|
||||
@@ -1073,13 +1096,13 @@ Rule Morocco 2080 only - Jul 21 2:00 0 -
|
||||
Rule Morocco 2081 only - Jun 1 3:00 -1:00 -
|
||||
Rule Morocco 2081 only - Jul 13 2:00 0 -
|
||||
Rule Morocco 2082 only - May 24 3:00 -1:00 -
|
||||
Rule Morocco 2082 only - Jun 28 2:00 0 -
|
||||
Rule Morocco 2082 only - Jul 5 2:00 0 -
|
||||
Rule Morocco 2083 only - May 16 3:00 -1:00 -
|
||||
Rule Morocco 2083 only - Jun 20 2:00 0 -
|
||||
Rule Morocco 2084 only - Apr 30 3:00 -1:00 -
|
||||
Rule Morocco 2084 only - Jun 11 2:00 0 -
|
||||
Rule Morocco 2085 only - Apr 22 3:00 -1:00 -
|
||||
Rule Morocco 2085 only - May 27 2:00 0 -
|
||||
Rule Morocco 2085 only - Jun 3 2:00 0 -
|
||||
Rule Morocco 2086 only - Apr 14 3:00 -1:00 -
|
||||
Rule Morocco 2086 only - May 19 2:00 0 -
|
||||
Rule Morocco 2087 only - Mar 30 3:00 -1:00 -
|
||||
@@ -1180,7 +1203,7 @@ Link Africa/Maputo Africa/Lusaka # Zambia
|
||||
# Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible
|
||||
# with Namibia's neighbors.
|
||||
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Vanguard section, for zic and other parsers that support negative DST.
|
||||
Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
|
||||
Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
|
||||
@@ -1212,26 +1235,85 @@ Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
|
||||
# See Africa/Lagos.
|
||||
|
||||
# Nigeria
|
||||
|
||||
# From P Chan (2020-12-03):
|
||||
# GMT was adopted as the standard time of Lagos on 1905-07-01.
|
||||
# Lagos Weekly Record, 1905-06-24, p 3
|
||||
# http://ddsnext.crl.edu/titles/31558#?c=0&m=668&s=0&cv=2&r=0&xywh=1446%2C5221%2C1931%2C1235
|
||||
# says "It is officially notified that on and after the 1st of July 1905
|
||||
# Greenwich Mean Solar Time will be adopted thought the Colony and
|
||||
# Protectorate, and that it will be necessary to put all clocks 13 minutes and
|
||||
# 35 seconds back, recording local mean time."
|
||||
#
|
||||
# It seemed that Lagos returned to LMT on 1908-07-01.
|
||||
# [The Lagos Standard], 1908-07-01, p 5
|
||||
# http://ddsnext.crl.edu/titles/31556#?c=0&m=78&s=0&cv=4&r=0&xywh=-92%2C3590%2C3944%2C2523
|
||||
# says "Scarcely have the people become accustomed to this new time, when
|
||||
# another official notice has now appeared announcing that from and after the
|
||||
# 1st July next, return will be made to local mean time."
|
||||
#
|
||||
# From P Chan (2020-11-27):
|
||||
# On 1914-01-01, standard time of GMT+0:30 was adopted for the unified Nigeria.
|
||||
# Colonial Reports - Annual. No. 878. Nigeria. Report for 1914. (April 1916),
|
||||
# p 27
|
||||
# https://libsysdigi.library.illinois.edu/ilharvest/Africana/Books2011-05/3064634/3064634_1914/3064634_1914_opt.pdf#page=27
|
||||
# "On January 1st [1914], a universal standard time for Nigeria was adopted,
|
||||
# viz., half an hour fast on Greenwich mean time, corresponding to the meridian
|
||||
# 7 [degrees] 30' E. long."
|
||||
# Lloyd's Register of Shipping (1915) says "Hitherto the time observed in Lagos
|
||||
# was the local mean time. On 1st January, 1914, standard time for the whole of
|
||||
# Nigeria was introduced ... Lagos time has been advanced about 16 minutes
|
||||
# accordingly."
|
||||
#
|
||||
# In 1919, standard time was changed to GMT+1.
|
||||
# Interpretation Ordinance (Cap 2)
|
||||
# The Laws of Nigeria, Containing the Ordinances of Nigeria, in Force on the
|
||||
# 1st Day of January, 1923, Vol.I [p 16]
|
||||
# https://books.google.com/books?id=BOMrAQAAMAAJ&pg=PA16
|
||||
# "The expression 'Standard time' means standard time as used in Nigeria:
|
||||
# namely, 60 minutes in advance of Greenwich mean time. (As amended by 18 of
|
||||
# 1919, s. 2.)"
|
||||
# From Tim Parenti (2020-12-10):
|
||||
# The Lagos Weekly Record, 1919-09-20, p 3 details discussion on the first
|
||||
# reading of this Bill by the Legislative Council of the Colony of Nigeria on
|
||||
# Thursday 1919-08-28:
|
||||
# http://ddsnext.crl.edu/titles/31558?terms&item_id=303484#?m=1118&c=1&s=0&cv=2&r=0&xywh=1261%2C3408%2C2994%2C1915
|
||||
# "The proposal is that the Globe should be divided into twelve zones East and
|
||||
# West of Greenwich, of one hour each, Nigeria falling into the zone with a
|
||||
# standard of one hour fast on Greenwich Mean Time. Nigeria standard time is
|
||||
# now 30 minutes in advance of Greenwich Mean Time ... according to the new
|
||||
# proposal, standard time will be advanced another 30 minutes". It was further
|
||||
# proposed that the firing of the time guns likewise be adjusted by 30 minutes
|
||||
# to compensate.
|
||||
# From Tim Parenti (2020-12-10), per P Chan (2020-12-11):
|
||||
# The text of Ordinance 18 of 1919, published in Nigeria Gazette, Vol 6, No 52,
|
||||
# shows that the change was assented to the following day and took effect "on
|
||||
# the 1st day of September, 1919."
|
||||
# Nigeria Gazette and Supplements 1919 Jan-Dec, Reference: 73266B-40,
|
||||
# img 245-246
|
||||
# https://microform.digital/boa/collections/77/volumes/539/nigeria-lagos-1887-1919
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Lagos 0:13:36 - LMT 1919 Sep
|
||||
Zone Africa/Lagos 0:13:35 - LMT 1905 Jul 1
|
||||
0:00 - GMT 1908 Jul 1
|
||||
0:13:35 - LMT 1914 Jan 1
|
||||
0:30 - +0030 1919 Sep 1
|
||||
1:00 - WAT
|
||||
Link Africa/Lagos Africa/Bangui # Central African Republic
|
||||
Link Africa/Lagos Africa/Brazzaville # Rep. of the Congo
|
||||
Link Africa/Lagos Africa/Douala # Cameroon
|
||||
Link Africa/Lagos Africa/Kinshasa # Dem. Rep. of the Congo (west)
|
||||
Link Africa/Lagos Africa/Libreville # Gabon
|
||||
Link Africa/Lagos Africa/Luanda # Angola
|
||||
Link Africa/Lagos Africa/Malabo # Equatorial Guinea
|
||||
Link Africa/Lagos Africa/Niamey # Niger
|
||||
Link Africa/Lagos Africa/Porto-Novo # Benin
|
||||
Link Africa/Lagos Africa/Bangui # Central African Republic
|
||||
Link Africa/Lagos Africa/Brazzaville # Rep. of the Congo
|
||||
Link Africa/Lagos Africa/Douala # Cameroon
|
||||
Link Africa/Lagos Africa/Kinshasa # Dem. Rep. of the Congo (west)
|
||||
Link Africa/Lagos Africa/Libreville # Gabon
|
||||
Link Africa/Lagos Africa/Luanda # Angola
|
||||
Link Africa/Lagos Africa/Malabo # Equatorial Guinea
|
||||
Link Africa/Lagos Africa/Niamey # Niger
|
||||
Link Africa/Lagos Africa/Porto-Novo # Benin
|
||||
|
||||
# Réunion
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis
|
||||
4:00 - +04
|
||||
#
|
||||
# Crozet Islands also observes Réunion time; see the 'antarctica' file.
|
||||
#
|
||||
# Scattered Islands (Îles Éparses) administered from Réunion are as follows.
|
||||
# The following information about them is taken from
|
||||
# Îles Éparses (<http://www.outre-mer.gouv.fr/domtom/ile.htm>, 1997-07-22,
|
||||
@@ -1286,8 +1368,21 @@ Zone Africa/Sao_Tome 0:26:56 - LMT 1884
|
||||
# See Africa/Abidjan.
|
||||
|
||||
# Seychelles
|
||||
|
||||
# From P Chan (2020-11-27):
|
||||
# Standard Time was adopted on 1907-01-01.
|
||||
#
|
||||
# Standard Time Ordinance (Chapter 237)
|
||||
# The Laws of Seychelles in Force on the 31st December, 1971, Vol. 6, p 571
|
||||
# https://books.google.com/books?id=efE-AQAAIAAJ&pg=PA571
|
||||
#
|
||||
# From Tim Parenti (2020-12-05):
|
||||
# A footnote on https://books.google.com/books?id=DYdDAQAAMAAJ&pg=PA1689
|
||||
# confirms that Ordinance No. 9 of 1906 "was brought into force on the 1st
|
||||
# January, 1907."
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria
|
||||
Zone Indian/Mahe 3:41:48 - LMT 1907 Jan 1 # Victoria
|
||||
4:00 - +04
|
||||
# From Paul Eggert (2001-05-30):
|
||||
# Aldabra, Farquhar, and Desroches, originally dependencies of the
|
||||
@@ -1303,15 +1398,15 @@ Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria
|
||||
# See Africa/Nairobi.
|
||||
|
||||
# South Africa
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 -
|
||||
Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8
|
||||
1:30 - SAST 1903 Mar
|
||||
2:00 SA SAST
|
||||
Link Africa/Johannesburg Africa/Maseru # Lesotho
|
||||
Link Africa/Johannesburg Africa/Mbabane # Eswatini
|
||||
Link Africa/Johannesburg Africa/Maseru # Lesotho
|
||||
Link Africa/Johannesburg Africa/Mbabane # Eswatini
|
||||
#
|
||||
# Marion and Prince Edward Is
|
||||
# scientific station since 1947
|
||||
@@ -1336,7 +1431,7 @@ Link Africa/Johannesburg Africa/Mbabane # Eswatini
|
||||
# Abdalla of NTC, archived at:
|
||||
# https://mm.icann.org/pipermail/tz/2017-October/025333.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Sudan 1970 only - May 1 0:00 1:00 S
|
||||
Rule Sudan 1970 1985 - Oct 15 0:00 0 -
|
||||
Rule Sudan 1971 only - Apr 30 0:00 1:00 S
|
||||
@@ -1348,10 +1443,17 @@ Zone Africa/Khartoum 2:10:08 - LMT 1931
|
||||
2:00 - CAT
|
||||
|
||||
# South Sudan
|
||||
|
||||
# From Steffen Thorsen (2021-01-18):
|
||||
# "South Sudan will change its time zone by setting the clock back 1
|
||||
# hour on February 1, 2021...."
|
||||
# from https://eyeradio.org/south-sudan-adopts-new-time-zone-makuei/
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Juba 2:06:28 - LMT 1931
|
||||
2:00 Sudan CA%sT 2000 Jan 15 12:00
|
||||
3:00 - EAT
|
||||
3:00 - EAT 2021 Feb 1 00:00
|
||||
2:00 - CAT
|
||||
|
||||
# Tanzania
|
||||
# See Africa/Nairobi.
|
||||
@@ -1424,7 +1526,7 @@ Zone Africa/Juba 2:06:28 - LMT 1931
|
||||
# http://www.almadenahnews.com/newss/news.php?c=118&id=38036
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_tunis02.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
|
||||
Rule Tunisia 1939 only - Nov 18 23:00s 0 -
|
||||
Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S
|
||||
@@ -1451,9 +1553,7 @@ Rule Tunisia 2005 only - Sep 30 1:00s 0 -
|
||||
Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
|
||||
Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
|
||||
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
|
||||
# See Europe/Paris commentary for PMT-related transitions.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
|
||||
+24
-32
@@ -70,15 +70,30 @@
|
||||
# Australian Antarctica Division informed us that Casey changed time
|
||||
# zone to UTC+11 in "the morning of 22nd October 2016".
|
||||
|
||||
# From Steffen Thorsen (2020-10-02, as corrected):
|
||||
# Based on information we have received from the Australian Antarctic
|
||||
# Division, Casey station and Macquarie Island station will move to Tasmanian
|
||||
# daylight savings time on Sunday 4 October. This will take effect from 0001
|
||||
# hrs on Sunday 4 October 2020 and will mean Casey and Macquarie Island will
|
||||
# be on the same time zone as Hobart. Some past dates too for this 3 hour
|
||||
# time change back and forth between UTC+8 and UTC+11 for Casey:
|
||||
# - 2018 Oct 7 4:00 - 2019 Mar 17 3:00 - 2019 Oct 4 3:00 - 2020 Mar 8 3:00
|
||||
# and now - 2020 Oct 4 0:01
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/Casey 0 - -00 1969
|
||||
8:00 - +08 2009 Oct 18 2:00
|
||||
Zone Antarctica/Casey 0 - -00 1969
|
||||
8:00 - +08 2009 Oct 18 2:00
|
||||
11:00 - +11 2010 Mar 5 2:00
|
||||
8:00 - +08 2011 Oct 28 2:00
|
||||
8:00 - +08 2011 Oct 28 2:00
|
||||
11:00 - +11 2012 Feb 21 17:00u
|
||||
8:00 - +08 2016 Oct 22
|
||||
8:00 - +08 2016 Oct 22
|
||||
11:00 - +11 2018 Mar 11 4:00
|
||||
8:00 - +08
|
||||
8:00 - +08 2018 Oct 7 4:00
|
||||
11:00 - +11 2019 Mar 17 3:00
|
||||
8:00 - +08 2019 Oct 4 3:00
|
||||
11:00 - +11 2020 Mar 8 3:00
|
||||
8:00 - +08 2020 Oct 4 0:01
|
||||
11:00 - +11
|
||||
Zone Antarctica/Davis 0 - -00 1957 Jan 13
|
||||
7:00 - +07 1964 Nov
|
||||
0 - -00 1969 Feb
|
||||
@@ -133,7 +148,7 @@ Zone Antarctica/Mawson 0 - -00 1954 Feb 13
|
||||
#
|
||||
# Alfred Faure, Possession Island, Crozet Islands, -462551+0515152, since 1964;
|
||||
# sealing & whaling stations operated variously 1802/1911+;
|
||||
# see Indian/Reunion.
|
||||
# see Asia/Dubai.
|
||||
#
|
||||
# Martin-de-Viviès, Amsterdam Island, -374105+0773155, since 1950
|
||||
# Port-aux-Français, Kerguelen Islands, -492110+0701303, since 1951;
|
||||
@@ -147,17 +162,7 @@ Zone Indian/Kerguelen 0 - -00 1950 # Port-aux-Français
|
||||
5:00 - +05
|
||||
#
|
||||
# year-round base in the main continent
|
||||
# Dumont d'Urville, Île des Pétrels, -6640+14001, since 1956-11
|
||||
# <https://en.wikipedia.org/wiki/Dumont_d'Urville_Station> (2005-12-05)
|
||||
#
|
||||
# Another base at Port-Martin, 50km east, began operation in 1947.
|
||||
# It was destroyed by fire on 1952-01-14.
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/DumontDUrville 0 - -00 1947
|
||||
10:00 - +10 1952 Jan 14
|
||||
0 - -00 1956 Nov
|
||||
10:00 - +10
|
||||
# Dumont d'Urville - see Pacific/Port_Moresby.
|
||||
|
||||
# France & Italy - year-round base
|
||||
# Concordia, -750600+1232000, since 2005
|
||||
@@ -173,20 +178,7 @@ Zone Antarctica/DumontDUrville 0 - -00 1947
|
||||
# Zuchelli, Terra Nova Bay, -744140+1640647, since 1986
|
||||
|
||||
# Japan - year-round bases
|
||||
# Syowa (also known as Showa), -690022+0393524, since 1957
|
||||
#
|
||||
# From Hideyuki Suzuki (1999-02-06):
|
||||
# In all Japanese stations, +0300 is used as the standard time.
|
||||
#
|
||||
# Syowa station, which is the first antarctic station of Japan,
|
||||
# was established on 1957-01-29. Since Syowa station is still the main
|
||||
# station of Japan, it's appropriate for the principal location.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/Syowa 0 - -00 1957 Jan 29
|
||||
3:00 - +03
|
||||
# See:
|
||||
# NIPR Antarctic Research Activities (1999-08-17)
|
||||
# http://www.nipr.ac.jp/english/ara01.html
|
||||
# See Asia/Riyadh.
|
||||
|
||||
# S Korea - year-round base
|
||||
# Jang Bogo, Terra Nova Bay, -743700+1641205 since 2014
|
||||
@@ -224,7 +216,7 @@ Zone Antarctica/Syowa 0 - -00 1957 Jan 29
|
||||
# suggested by Bengt-Inge Larsson comment them out for now, and approximate
|
||||
# with only UTC and CEST. Uncomment them when 2014b is more prevalent.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
#Rule Troll 2005 max - Mar 1 1:00u 1:00 +01
|
||||
Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
|
||||
#Rule Troll 2005 max - Oct lastSun 1:00u 1:00 +01
|
||||
|
||||
+316
-115
@@ -34,9 +34,6 @@
|
||||
# Byalokoz EL. New Counting of Time in Russia since July 1, 1919.
|
||||
# (See the 'europe' file for a fuller citation.)
|
||||
#
|
||||
# A reliable and entertaining source about time zones is
|
||||
# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
|
||||
#
|
||||
# The following alphabetic abbreviations appear in these tables
|
||||
# (corrections are welcome):
|
||||
# std dst
|
||||
@@ -70,7 +67,7 @@
|
||||
###############################################################################
|
||||
|
||||
# These rules are stolen from the 'europe' file.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
|
||||
Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
|
||||
Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
|
||||
@@ -114,7 +111,7 @@ Zone Asia/Kabul 4:36:48 - LMT 1890
|
||||
# or
|
||||
# (brief)
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
|
||||
Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -140,7 +137,7 @@ Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2
|
||||
# http://vestnikkavkaza.net/news/Azerbaijani-Cabinet-of-Ministers-cancels-daylight-saving-time.html
|
||||
# http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
|
||||
Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -227,7 +224,7 @@ Zone Asia/Baku 3:19:24 - LMT 1924 May 2
|
||||
# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
|
||||
Rule Dhaka 2009 only - Dec 31 24:00 0 -
|
||||
|
||||
@@ -303,7 +300,7 @@ Zone Asia/Yangon 6:24:47 - LMT 1880 # or Rangoon
|
||||
# generally esteemed a success, it was announced early in 1920 that it would
|
||||
# not be repeated."
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Shang 1919 only - Apr 12 24:00 1:00 D
|
||||
Rule Shang 1919 only - Sep 30 24:00 0 S
|
||||
|
||||
@@ -399,7 +396,7 @@ Rule Shang 1919 only - Sep 30 24:00 0 S
|
||||
# the Yangtze river delta area during that period of time although the scope
|
||||
# of such use will need to be investigated to determine.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Shang 1940 only - Jun 1 0:00 1:00 D
|
||||
Rule Shang 1940 only - Oct 12 24:00 0 S
|
||||
Rule Shang 1941 only - Mar 15 0:00 1:00 D
|
||||
@@ -462,7 +459,7 @@ Rule Shang 1948 1949 - Sep 30 24:00 0 S #plan
|
||||
# to begin on 17 April.
|
||||
# http://data.people.com.cn/pic/101p/1988/04/1988041201.jpg
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule PRC 1986 only - May 4 2:00 1:00 D
|
||||
Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
|
||||
Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D
|
||||
@@ -846,7 +843,7 @@ Zone Asia/Urumqi 5:50:20 - LMT 1928
|
||||
# or dates for the 1942 and 1945 transitions.
|
||||
# The Japanese occupation of Hong Kong began 1941-12-25.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule HK 1946 only - Apr 21 0:00 1:00 S
|
||||
Rule HK 1946 only - Dec 1 3:30s 0 -
|
||||
Rule HK 1947 only - Apr 13 3:30s 1:00 S
|
||||
@@ -973,7 +970,7 @@ Zone Asia/Hong_Kong 7:36:42 - LMT 1904 Oct 30 0:36:42
|
||||
# until 1945-09-21 at 01:00, overriding Shanks & Pottenger.
|
||||
# Likewise, use Yu-Cheng Chuang's data for DST in Taiwan.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Taiwan 1946 only - May 15 0:00 1:00 D
|
||||
Rule Taiwan 1946 only - Oct 1 0:00 0 S
|
||||
Rule Taiwan 1947 only - Apr 15 0:00 1:00 D
|
||||
@@ -1099,7 +1096,7 @@ Zone Asia/Taipei 8:06:00 - LMT 1896 Jan 1
|
||||
# The 1904 decree says that Macau changed from the meridian of
|
||||
# Fortaleza do Monte, presumably the basis for the 7:34:10 for LMT.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Macau 1942 1943 - Apr 30 23:00 1:00 -
|
||||
Rule Macau 1942 only - Nov 17 23:00 0 -
|
||||
Rule Macau 1943 only - Sep 30 23:00 0 S
|
||||
@@ -1157,7 +1154,7 @@ Zone Asia/Macau 7:34:10 - LMT 1904 Oct 30
|
||||
# Cyprus to remain united in time. Cyprus Mail 2017-10-17.
|
||||
# https://cyprus-mail.com/2017/10/17/cyprus-remain-united-time/
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cyprus 1975 only - Apr 13 0:00 1:00 S
|
||||
Rule Cyprus 1975 only - Oct 12 0:00 0 -
|
||||
Rule Cyprus 1976 only - May 15 0:00 1:00 S
|
||||
@@ -1534,7 +1531,7 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov
|
||||
# be changed back to its previous state on the 24 hours of the
|
||||
# thirtieth day of Shahrivar.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Iran 1978 1980 - Mar 20 24:00 1:00 -
|
||||
Rule Iran 1978 only - Oct 20 24:00 0 -
|
||||
Rule Iran 1979 only - Sep 18 24:00 0 -
|
||||
@@ -1676,7 +1673,7 @@ Zone Asia/Tehran 3:25:44 - LMT 1916
|
||||
# We have published a short article in English about the change:
|
||||
# https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Iraq 1982 only - May 1 0:00 1:00 -
|
||||
Rule Iraq 1982 1984 - Oct 1 0:00 0 -
|
||||
Rule Iraq 1983 only - Mar 31 0:00 1:00 -
|
||||
@@ -1699,6 +1696,10 @@ Zone Asia/Baghdad 2:57:40 - LMT 1890
|
||||
|
||||
# Israel
|
||||
|
||||
# For more info about the motivation for DST in Israel, see:
|
||||
# Barak Y. Israel's Daylight Saving Time controversy. Israel Affairs.
|
||||
# 2020-08-11. https://doi.org/10.1080/13537121.2020.1806564
|
||||
|
||||
# From Ephraim Silverberg (2001-01-11):
|
||||
#
|
||||
# I coined "IST/IDT" circa 1988. Until then there were three
|
||||
@@ -1719,40 +1720,180 @@ Zone Asia/Baghdad 2:57:40 - LMT 1890
|
||||
# high on my favorite-country list (and not only because my wife's
|
||||
# family is from India).
|
||||
|
||||
# From Shanks & Pottenger:
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1940 only - Jun 1 0:00 1:00 D
|
||||
Rule Zion 1942 1944 - Nov 1 0:00 0 S
|
||||
Rule Zion 1943 only - Apr 1 2:00 1:00 D
|
||||
Rule Zion 1944 only - Apr 1 0:00 1:00 D
|
||||
Rule Zion 1945 only - Apr 16 0:00 1:00 D
|
||||
Rule Zion 1945 only - Nov 1 2:00 0 S
|
||||
Rule Zion 1946 only - Apr 16 2:00 1:00 D
|
||||
Rule Zion 1946 only - Nov 1 0:00 0 S
|
||||
Rule Zion 1948 only - May 23 0:00 2:00 DD
|
||||
Rule Zion 1948 only - Sep 1 0:00 1:00 D
|
||||
Rule Zion 1948 1949 - Nov 1 2:00 0 S
|
||||
Rule Zion 1949 only - May 1 0:00 1:00 D
|
||||
Rule Zion 1950 only - Apr 16 0:00 1:00 D
|
||||
Rule Zion 1950 only - Sep 15 3:00 0 S
|
||||
Rule Zion 1951 only - Apr 1 0:00 1:00 D
|
||||
Rule Zion 1951 only - Nov 11 3:00 0 S
|
||||
Rule Zion 1952 only - Apr 20 2:00 1:00 D
|
||||
Rule Zion 1952 only - Oct 19 3:00 0 S
|
||||
Rule Zion 1953 only - Apr 12 2:00 1:00 D
|
||||
Rule Zion 1953 only - Sep 13 3:00 0 S
|
||||
Rule Zion 1954 only - Jun 13 0:00 1:00 D
|
||||
Rule Zion 1954 only - Sep 12 0:00 0 S
|
||||
Rule Zion 1955 only - Jun 11 2:00 1:00 D
|
||||
Rule Zion 1955 only - Sep 11 0:00 0 S
|
||||
Rule Zion 1956 only - Jun 3 0:00 1:00 D
|
||||
Rule Zion 1956 only - Sep 30 3:00 0 S
|
||||
Rule Zion 1957 only - Apr 29 2:00 1:00 D
|
||||
Rule Zion 1957 only - Sep 22 0:00 0 S
|
||||
Rule Zion 1974 only - Jul 7 0:00 1:00 D
|
||||
Rule Zion 1974 only - Oct 13 0:00 0 S
|
||||
Rule Zion 1975 only - Apr 20 0:00 1:00 D
|
||||
Rule Zion 1975 only - Aug 31 0:00 0 S
|
||||
# From P Chan (2020-10-27), with corrections:
|
||||
#
|
||||
# 1940-1946 Supplement No. 2 to the Palestine Gazette
|
||||
# # issue page Order No. dated start end note
|
||||
# 1 1010 729 67 of 1940 1940-05-22 1940-05-31* 1940-09-30* revoked by #2
|
||||
# 2 1013 758 73 of 1940 1940-05-31 1940-05-31 1940-09-30
|
||||
# 3 1055 1574 196 of 1940 1940-11-06 1940-11-16 1940-12-31
|
||||
# 4 1066 1811 208 of 1940 1940-12-17 1940-12-31 1941-12-31
|
||||
# 5 1156 1967 116 of 1941 1941-12-16 1941-12-31 1942-12-31* amended by #6
|
||||
# 6 1228 1608 86 of 1942 1942-10-14 1941-12-31 1942-10-31
|
||||
# 7 1256 279 21 of 1943 1943-03-18 1943-03-31 1943-10-31
|
||||
# 8 1323 249 19 of 1944 1944-03-13 1944-03-31 1944-10-31
|
||||
# 9 1402 328 20 of 1945 1945-04-05 1945-04-15 1945-10-31
|
||||
#10 1487 596 14 of 1946 1946-04-04 1946-04-15 1946-10-31
|
||||
#
|
||||
# 1948 Iton Rishmi (Official Gazette of the Provisional Government)
|
||||
# # issue page dated start end
|
||||
#11 2 7 1948-05-20 1948-05-22 1948-10-31*
|
||||
# ^This moved timezone to +04, replaced by #12 from 1948-08-31 24:00 GMT.
|
||||
#12 17 (Annex B) 84 1948-08-22 1948-08-31 1948-10-31
|
||||
#
|
||||
# 1949-2000 Kovetz HaTakanot (Collection of Regulations)
|
||||
# # issue page dated start end note
|
||||
#13 6 133 1949-03-23 1949-04-30 1949-10-31
|
||||
#14 80 755 1950-03-17 1950-04-15 1950-09-14
|
||||
#15 164 782 1951-03-22 1951-03-31 1951-09-29* amended by #16
|
||||
#16 206 1940 1951-09-23 ---------- 1951-10-22* amended by #17
|
||||
#17 212 78 1951-10-19 ---------- 1951-11-10
|
||||
#18 254 652 1952-03-03 1952-04-19 1952-09-27* amended by #19
|
||||
#19 300 11 1952-09-15 ---------- 1952-10-18
|
||||
#20 348 817 1953-03-03 1953-04-11 1953-09-12
|
||||
#21 420 385 1954-02-17 1954-06-12 1954-09-11
|
||||
#22 497 548 1955-01-14 1955-06-11 1955-09-10
|
||||
#23 591 608 1956-03-12 1956-06-02 1956-09-29
|
||||
#24 680 957 1957-02-08 1957-04-27 1957-09-21
|
||||
#25 3192 1418 1974-06-28 1974-07-06 1974-10-12
|
||||
#26 3322 1389 1975-04-03 1975-04-19 1975-08-30
|
||||
#27 4146 2089 1980-07-15 1980-08-02 1980-09-13
|
||||
#28 4604 1081 1984-02-22 1984-05-05* 1984-08-25* revoked by #29
|
||||
#29 4619 1312 1984-04-06 1984-05-05 1984-08-25
|
||||
#30 4744 475 1984-12-23 1985-04-13 1985-09-14* amended by #31
|
||||
#31 4851 1848 1985-08-18 ---------- 1985-08-31
|
||||
#32 4932 899 1986-04-22 1986-05-17 1986-09-06
|
||||
#33 5013 580 1987-02-15 1987-04-18* 1987-08-22* revoked by #34
|
||||
#34 5021 744 1987-03-30 1987-04-14 1987-09-12
|
||||
#35 5096 659 1988-02-14 1988-04-09 1988-09-03
|
||||
#36 5167 514 1989-02-03 1989-04-29 1989-09-02
|
||||
#37 5248 375 1990-01-23 1990-03-24 1990-08-25
|
||||
#38 5335 612 1991-02-10 1991-03-09* 1991-08-31 amended by #39
|
||||
# 1992-03-28 1992-09-05
|
||||
#39 5339 709 1991-03-04 1991-03-23 ----------
|
||||
#40 5506 503 1993-02-18 1993-04-02 1993-09-05
|
||||
# 1994-04-01 1994-08-28
|
||||
# 1995-03-31 1995-09-03
|
||||
#41 5731 438 1996-01-01 1996-03-14 1996-09-15
|
||||
# 1997-03-13* 1997-09-18* overridden by 1997 Temp Prov
|
||||
# 1998-03-19* 1998-09-17* revoked by #42
|
||||
#42 5853 1243 1997-09-18 1998-03-19 1998-09-05
|
||||
#43 5937 77 1998-10-18 1999-04-02 1999-09-03
|
||||
# 2000-04-14* 2000-09-15* revoked by #44
|
||||
# 2001-04-13* 2001-09-14* revoked by #44
|
||||
#44 6024 39 2000-03-14 2000-04-14 2000-10-22* overridden by 2000 Temp Prov
|
||||
# 2001-04-06* 2001-10-10* overridden by 2000 Temp Prov
|
||||
# 2002-03-29* 2002-10-29* overridden by 2000 Temp Prov
|
||||
#
|
||||
# These are laws enacted by the Knesset since the Minister could only alter the
|
||||
# transition dates at least six months in advanced under the 1992 Law.
|
||||
# dated start end
|
||||
# 1997 Temporary Provisions 1997-03-06 1997-03-20 1997-09-13
|
||||
# 2000 Temporary Provisions 2000-07-28 ---------- 2000-10-06
|
||||
# 2001-04-09 2001-09-24
|
||||
# 2002-03-29 2002-10-07
|
||||
# 2003-03-28 2003-10-03
|
||||
# 2004-04-07 2004-09-22
|
||||
# Note:
|
||||
# Transition times in 1940-1957 (#1-#24) were midnight GMT,
|
||||
# in 1974-1998 (#25-#42 and the 1997 Temporary Provisions) were midnight,
|
||||
# in 1999-April 2000 (#43,#44) were 02:00,
|
||||
# in the 2000 Temporary Provisions were 01:00.
|
||||
#
|
||||
# -----------------------------------------------------------------------------
|
||||
# Links:
|
||||
# 1 https://findit.library.yale.edu/images_layout/view?parentoid=15537490&increment=687
|
||||
# 2 https://findit.library.yale.edu/images_layout/view?parentoid=15537490&increment=716
|
||||
# 3 https://findit.library.yale.edu/images_layout/view?parentoid=15537491&increment=721
|
||||
# 4 https://findit.library.yale.edu/images_layout/view?parentoid=15537491&increment=958
|
||||
# 5 https://findit.library.yale.edu/images_layout/view?parentoid=15537502&increment=558
|
||||
# 6 https://findit.library.yale.edu/images_layout/view?parentoid=15537511&increment=105
|
||||
# 7 https://findit.library.yale.edu/images_layout/view?parentoid=15537516&increment=278
|
||||
# 8 https://findit.library.yale.edu/images_layout/view?parentoid=15537522&increment=248
|
||||
# 9 https://findit.library.yale.edu/images_layout/view?parentoid=15537530&increment=329
|
||||
#10 https://findit.library.yale.edu/images_layout/view?parentoid=15537537&increment=601
|
||||
#11 https://www.nevo.co.il/law_word/law12/er-002.pdf#page=3
|
||||
#12 https://www.nevo.co.il/law_word/law12/er-017-t2.pdf#page=4
|
||||
#13 https://www.nevo.co.il/law_word/law06/tak-0006.pdf#page=3
|
||||
#14 https://www.nevo.co.il/law_word/law06/tak-0080.pdf#page=7
|
||||
#15 https://www.nevo.co.il/law_word/law06/tak-0164.pdf#page=10
|
||||
#16 https://www.nevo.co.il/law_word/law06/tak-0206.pdf#page=4
|
||||
#17 https://www.nevo.co.il/law_word/law06/tak-0212.pdf#page=2
|
||||
#18 https://www.nevo.co.il/law_word/law06/tak-0254.pdf#page=4
|
||||
#19 https://www.nevo.co.il/law_word/law06/tak-0300.pdf#page=5
|
||||
#20 https://www.nevo.co.il/law_word/law06/tak-0348.pdf#page=3
|
||||
#21 https://www.nevo.co.il/law_word/law06/tak-0420.pdf#page=5
|
||||
#22 https://www.nevo.co.il/law_word/law06/tak-0497.pdf#page=10
|
||||
#23 https://www.nevo.co.il/law_word/law06/tak-0591.pdf#page=6
|
||||
#24 https://www.nevo.co.il/law_word/law06/tak-0680.pdf#page=3
|
||||
#25 https://www.nevo.co.il/law_word/law06/tak-3192.pdf#page=2
|
||||
#26 https://www.nevo.co.il/law_word/law06/tak-3322.pdf#page=5
|
||||
#27 https://www.nevo.co.il/law_word/law06/tak-4146.pdf#page=2
|
||||
#28 https://www.nevo.co.il/law_word/law06/tak-4604.pdf#page=7
|
||||
#29 https://www.nevo.co.il/law_word/law06/tak-4619.pdf#page=2
|
||||
#30 https://www.nevo.co.il/law_word/law06/tak-4744.pdf#page=11
|
||||
#31 https://www.nevo.co.il/law_word/law06/tak-4851.pdf#page=2
|
||||
#32 https://www.nevo.co.il/law_word/law06/tak-4932.pdf#page=19
|
||||
#33 https://www.nevo.co.il/law_word/law06/tak-5013.pdf#page=8
|
||||
#34 https://www.nevo.co.il/law_word/law06/tak-5021.pdf#page=8
|
||||
#35 https://www.nevo.co.il/law_word/law06/tak-5096.pdf#page=3
|
||||
#36 https://www.nevo.co.il/law_word/law06/tak-5167.pdf#page=2
|
||||
#37 https://www.nevo.co.il/law_word/law06/tak-5248.pdf#page=7
|
||||
#38 https://www.nevo.co.il/law_word/law06/tak-5335.pdf#page=6
|
||||
#39 https://www.nevo.co.il/law_word/law06/tak-5339.pdf#page=7
|
||||
#40 https://www.nevo.co.il/law_word/law06/tak-5506.pdf#page=19
|
||||
#41 https://www.nevo.co.il/law_word/law06/tak-5731.pdf#page=2
|
||||
#42 https://www.nevo.co.il/law_word/law06/tak-5853.pdf#page=3
|
||||
#43 https://www.nevo.co.il/law_word/law06/tak-5937.pdf#page=9
|
||||
#44 https://www.nevo.co.il/law_word/law06/tak-6024.pdf#page=4
|
||||
#
|
||||
# Time Determination (Temporary Provisions) Law, 1997
|
||||
# https://www.nevo.co.il/law_html/law19/p201_003.htm
|
||||
#
|
||||
# Time Determination (Temporary Provisions) Law, 2000
|
||||
# https://www.nevo.co.il/law_html/law19/p201_004.htm
|
||||
#
|
||||
# Time Determination Law, 1992 and amendments
|
||||
# https://www.nevo.co.il/law_html/law01/p201_002.htm
|
||||
# https://main.knesset.gov.il/Activity/Legislation/Laws/Pages/LawPrimary.aspx?lawitemid=2001174
|
||||
|
||||
# From Paul Eggert (2020-10-27):
|
||||
# Several of the midnight transitions mentioned above are ambiguous;
|
||||
# are they 00:00, 00:00s, 24:00, or 24:00s? When resolving these ambiguities,
|
||||
# try to minimize changes from previous tzdb versions, for lack of better info.
|
||||
# Commentary from previous versions is included below, to help explain this.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1940 only - May 31 24:00u 1:00 D
|
||||
Rule Zion 1940 only - Sep 30 24:00u 0 S
|
||||
Rule Zion 1940 only - Nov 16 24:00u 1:00 D
|
||||
Rule Zion 1942 1946 - Oct 31 24:00u 0 S
|
||||
Rule Zion 1943 1944 - Mar 31 24:00u 1:00 D
|
||||
Rule Zion 1945 1946 - Apr 15 24:00u 1:00 D
|
||||
Rule Zion 1948 only - May 22 24:00u 2:00 DD
|
||||
Rule Zion 1948 only - Aug 31 24:00u 1:00 D
|
||||
Rule Zion 1948 1949 - Oct 31 24:00u 0 S
|
||||
Rule Zion 1949 only - Apr 30 24:00u 1:00 D
|
||||
Rule Zion 1950 only - Apr 15 24:00u 1:00 D
|
||||
Rule Zion 1950 only - Sep 14 24:00u 0 S
|
||||
Rule Zion 1951 only - Mar 31 24:00u 1:00 D
|
||||
Rule Zion 1951 only - Nov 10 24:00u 0 S
|
||||
Rule Zion 1952 only - Apr 19 24:00u 1:00 D
|
||||
Rule Zion 1952 only - Oct 18 24:00u 0 S
|
||||
Rule Zion 1953 only - Apr 11 24:00u 1:00 D
|
||||
Rule Zion 1953 only - Sep 12 24:00u 0 S
|
||||
Rule Zion 1954 only - Jun 12 24:00u 1:00 D
|
||||
Rule Zion 1954 only - Sep 11 24:00u 0 S
|
||||
Rule Zion 1955 only - Jun 11 24:00u 1:00 D
|
||||
Rule Zion 1955 only - Sep 10 24:00u 0 S
|
||||
Rule Zion 1956 only - Jun 2 24:00u 1:00 D
|
||||
Rule Zion 1956 only - Sep 29 24:00u 0 S
|
||||
Rule Zion 1957 only - Apr 27 24:00u 1:00 D
|
||||
Rule Zion 1957 only - Sep 21 24:00u 0 S
|
||||
Rule Zion 1974 only - Jul 6 24:00 1:00 D
|
||||
Rule Zion 1974 only - Oct 12 24:00 0 S
|
||||
Rule Zion 1975 only - Apr 19 24:00 1:00 D
|
||||
Rule Zion 1975 only - Aug 30 24:00 0 S
|
||||
|
||||
# From Alois Treindl (2019-03-06):
|
||||
# http://www.moin.gov.il/Documents/שעון%20קיץ/clock-50-years-7-2014.pdf
|
||||
@@ -1765,25 +1906,24 @@ Rule Zion 1975 only - Aug 31 0:00 0 S
|
||||
# From Paul Eggert (2019-03-06):
|
||||
# Also see this thread about the moin.gov.il URL:
|
||||
# https://mm.icann.org/pipermail/tz/2018-November/027194.html
|
||||
Rule Zion 1980 only - Aug 2 0:00 1:00 D
|
||||
Rule Zion 1980 only - Sep 13 1:00 0 S
|
||||
Rule Zion 1984 only - May 5 0:00 1:00 D
|
||||
Rule Zion 1984 only - Aug 25 1:00 0 S
|
||||
Rule Zion 1980 only - Aug 2 24:00s 1:00 D
|
||||
Rule Zion 1980 only - Sep 13 24:00s 0 S
|
||||
Rule Zion 1984 only - May 5 24:00s 1:00 D
|
||||
Rule Zion 1984 only - Aug 25 24:00s 0 S
|
||||
|
||||
# From Shanks & Pottenger:
|
||||
Rule Zion 1985 only - Apr 14 0:00 1:00 D
|
||||
Rule Zion 1985 only - Sep 15 0:00 0 S
|
||||
Rule Zion 1986 only - May 18 0:00 1:00 D
|
||||
Rule Zion 1986 only - Sep 7 0:00 0 S
|
||||
Rule Zion 1987 only - Apr 15 0:00 1:00 D
|
||||
Rule Zion 1987 only - Sep 13 0:00 0 S
|
||||
Rule Zion 1985 only - Apr 13 24:00 1:00 D
|
||||
Rule Zion 1985 only - Aug 31 24:00 0 S
|
||||
Rule Zion 1986 only - May 17 24:00 1:00 D
|
||||
Rule Zion 1986 only - Sep 6 24:00 0 S
|
||||
Rule Zion 1987 only - Apr 14 24:00 1:00 D
|
||||
Rule Zion 1987 only - Sep 12 24:00 0 S
|
||||
|
||||
# From Avigdor Finkelstein (2014-03-05):
|
||||
# I check the Parliament (Knesset) records and there it's stated that the
|
||||
# [1988] transition should take place on Saturday night, when the Sabbath
|
||||
# ends and changes to Sunday.
|
||||
Rule Zion 1988 only - Apr 10 0:00 1:00 D
|
||||
Rule Zion 1988 only - Sep 4 0:00 0 S
|
||||
Rule Zion 1988 only - Apr 9 24:00 1:00 D
|
||||
Rule Zion 1988 only - Sep 3 24:00 0 S
|
||||
|
||||
# From Ephraim Silverberg
|
||||
# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
|
||||
@@ -1812,15 +1952,15 @@ Rule Zion 1988 only - Sep 4 0:00 0 S
|
||||
# (except in 2002) is three nights before Yom Kippur [Day of Atonement]
|
||||
# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1989 only - Apr 30 0:00 1:00 D
|
||||
Rule Zion 1989 only - Sep 3 0:00 0 S
|
||||
Rule Zion 1990 only - Mar 25 0:00 1:00 D
|
||||
Rule Zion 1990 only - Aug 26 0:00 0 S
|
||||
Rule Zion 1991 only - Mar 24 0:00 1:00 D
|
||||
Rule Zion 1991 only - Sep 1 0:00 0 S
|
||||
Rule Zion 1992 only - Mar 29 0:00 1:00 D
|
||||
Rule Zion 1992 only - Sep 6 0:00 0 S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1989 only - Apr 29 24:00 1:00 D
|
||||
Rule Zion 1989 only - Sep 2 24:00 0 S
|
||||
Rule Zion 1990 only - Mar 24 24:00 1:00 D
|
||||
Rule Zion 1990 only - Aug 25 24:00 0 S
|
||||
Rule Zion 1991 only - Mar 23 24:00 1:00 D
|
||||
Rule Zion 1991 only - Aug 31 24:00 0 S
|
||||
Rule Zion 1992 only - Mar 28 24:00 1:00 D
|
||||
Rule Zion 1992 only - Sep 5 24:00 0 S
|
||||
Rule Zion 1993 only - Apr 2 0:00 1:00 D
|
||||
Rule Zion 1993 only - Sep 5 0:00 0 S
|
||||
|
||||
@@ -1828,7 +1968,7 @@ Rule Zion 1993 only - Sep 5 0:00 0 S
|
||||
# Ministry of Interior, Jerusalem, Israel. The spokeswoman can be reached by
|
||||
# calling the office directly at 972-2-6701447 or 972-2-6701448.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1994 only - Apr 1 0:00 1:00 D
|
||||
Rule Zion 1994 only - Aug 28 0:00 0 S
|
||||
Rule Zion 1995 only - Mar 31 0:00 1:00 D
|
||||
@@ -1848,11 +1988,11 @@ Rule Zion 1995 only - Sep 3 0:00 0 S
|
||||
#
|
||||
# where YYYY is the relevant year.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1996 only - Mar 15 0:00 1:00 D
|
||||
Rule Zion 1996 only - Sep 16 0:00 0 S
|
||||
Rule Zion 1997 only - Mar 21 0:00 1:00 D
|
||||
Rule Zion 1997 only - Sep 14 0:00 0 S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1996 only - Mar 14 24:00 1:00 D
|
||||
Rule Zion 1996 only - Sep 15 24:00 0 S
|
||||
Rule Zion 1997 only - Mar 20 24:00 1:00 D
|
||||
Rule Zion 1997 only - Sep 13 24:00 0 S
|
||||
Rule Zion 1998 only - Mar 20 0:00 1:00 D
|
||||
Rule Zion 1998 only - Sep 6 0:00 0 S
|
||||
Rule Zion 1999 only - Apr 2 2:00 1:00 D
|
||||
@@ -1871,7 +2011,7 @@ Rule Zion 1999 only - Sep 3 2:00 0 S
|
||||
#
|
||||
# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2000 only - Apr 14 2:00 1:00 D
|
||||
Rule Zion 2000 only - Oct 6 1:00 0 S
|
||||
Rule Zion 2001 only - Apr 9 1:00 1:00 D
|
||||
@@ -1893,7 +2033,7 @@ Rule Zion 2004 only - Sep 22 1:00 0 S
|
||||
#
|
||||
# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
|
||||
Rule Zion 2005 only - Oct 9 2:00 0 S
|
||||
Rule Zion 2006 only - Oct 1 2:00 0 S
|
||||
@@ -1904,16 +2044,17 @@ Rule Zion 2010 only - Sep 12 2:00 0 S
|
||||
Rule Zion 2011 only - Oct 2 2:00 0 S
|
||||
Rule Zion 2012 only - Sep 23 2:00 0 S
|
||||
|
||||
# From Ephraim Silverberg (2013-06-27):
|
||||
# On June 23, 2013, the Israeli government approved changes to the
|
||||
# Time Decree Law. The next day, the changes passed the First Reading
|
||||
# in the Knesset. The law is expected to pass the Second and Third
|
||||
# (final) Readings by the beginning of September 2013.
|
||||
#
|
||||
# As of 2013, DST starts at 02:00 on the Friday before the last Sunday
|
||||
# in March. DST ends at 02:00 on the last Sunday of October.
|
||||
# From Ephraim Silverberg (2020-10-26):
|
||||
# The current time law (2013) from the State of Israel can be viewed
|
||||
# (in Hebrew) at:
|
||||
# ftp://ftp.cs.huji.ac.il/pub/tz/israel/announcements/2013+law.pdf
|
||||
# It translates to:
|
||||
# Every year, in the period from the Friday before the last Sunday in
|
||||
# the month of March at 02:00 a.m. until the last Sunday of the month
|
||||
# of October at 02:00 a.m., Israel Time will be advanced an additional
|
||||
# hour such that it will be UTC+3.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
|
||||
Rule Zion 2013 max - Oct lastSun 2:00 0 S
|
||||
|
||||
@@ -2013,7 +2154,7 @@ Zone Asia/Jerusalem 2:20:54 - LMT 1880
|
||||
# do in any POSIX or C platform. The "25:00" assumes zic from 2007 or later,
|
||||
# which should be safe now.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
|
||||
Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
|
||||
Rule Japan 1949 only - Apr Sat>=1 24:00 1:00 D
|
||||
@@ -2090,7 +2231,15 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
|
||||
# From Paul Eggert (2013-12-11):
|
||||
# As Steffen suggested, consider the past 21-month experiment to be DST.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From Steffen Thorsen (2021-09-24):
|
||||
# The Jordanian Government announced yesterday that they will start DST
|
||||
# in February instead of March:
|
||||
# https://petra.gov.jo/Include/InnerPage.jsp?ID=37683&lang=en&name=en_news (English)
|
||||
# https://petra.gov.jo/Include/InnerPage.jsp?ID=189969&lang=ar&name=news (Arabic)
|
||||
# From the Arabic version, it seems to say it would be at midnight
|
||||
# (assume 24:00) on the last Thursday in February, starting from 2022.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Jordan 1973 only - Jun 6 0:00 1:00 S
|
||||
Rule Jordan 1973 1975 - Oct 1 0:00 0 -
|
||||
Rule Jordan 1974 1977 - May 1 0:00 1:00 S
|
||||
@@ -2120,8 +2269,9 @@ Rule Jordan 2004 only - Oct 15 0:00s 0 -
|
||||
Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
|
||||
Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
|
||||
Rule Jordan 2013 only - Dec 20 0:00 0 -
|
||||
Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S
|
||||
Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
|
||||
Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
|
||||
Rule Jordan 2022 max - Feb lastThu 24:00 1:00 S
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Amman 2:23:44 - LMT 1931
|
||||
2:00 Jordan EE%sT
|
||||
@@ -2416,7 +2566,7 @@ Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk
|
||||
# Our government cancels daylight saving time 6th of August 2005.
|
||||
# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 -
|
||||
Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
|
||||
Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
|
||||
@@ -2472,7 +2622,7 @@ Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2
|
||||
# follow and continued to use GMT+9:00 for interoperability.
|
||||
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule ROK 1948 only - Jun 1 0:00 1:00 D
|
||||
Rule ROK 1948 only - Sep 12 24:00 0 S
|
||||
Rule ROK 1949 only - Apr 3 0:00 1:00 D
|
||||
@@ -2560,7 +2710,7 @@ Zone Asia/Pyongyang 8:23:00 - LMT 1908 Apr 1
|
||||
|
||||
|
||||
# Lebanon
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Lebanon 1920 only - Mar 28 0:00 1:00 S
|
||||
Rule Lebanon 1920 only - Oct 25 0:00 0 -
|
||||
Rule Lebanon 1921 only - Apr 3 0:00 1:00 S
|
||||
@@ -2590,13 +2740,14 @@ Zone Asia/Beirut 2:22:00 - LMT 1880
|
||||
2:00 Lebanon EE%sT
|
||||
|
||||
# Malaysia
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 -
|
||||
Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
|
||||
#
|
||||
# peninsular Malaysia
|
||||
# taken from Mok Ly Yng (2003-10-30)
|
||||
# http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
|
||||
# https://web.archive.org/web/20190822231045/http://www.math.nus.edu.sg/~mathelmr/teaching/timezone.html
|
||||
# This agrees with Singapore since 1905-06-01.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1
|
||||
6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
|
||||
@@ -2735,7 +2886,7 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé
|
||||
# September daylight saving time ends. Source:
|
||||
# http://zasag.mn/news/view/8969
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Mongol 1983 1984 - Apr 1 0:00 1:00 -
|
||||
Rule Mongol 1983 only - Oct 1 0:00 0 -
|
||||
# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
|
||||
@@ -2923,7 +3074,7 @@ Zone Asia/Kathmandu 5:41:16 - LMT 1920
|
||||
# "People laud PM's announcement to end DST"
|
||||
# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
|
||||
Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
|
||||
Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
|
||||
@@ -3217,15 +3368,52 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
|
||||
|
||||
# From Sharef Mustafa (2019-10-18):
|
||||
# Palestine summer time will end on midnight Oct 26th 2019 ...
|
||||
# http://www.palestinecabinet.gov.ps/website/ar/ViewDetails?ID=43948
|
||||
#
|
||||
# From Steffen Thorsen (2020-10-20):
|
||||
# Some sources such as these say, and display on clocks, that DST ended at
|
||||
# midnight last year...
|
||||
# https://www.amad.ps/ar/post/320006
|
||||
#
|
||||
# From Tim Parenti (2020-10-20):
|
||||
# The report of the Palestinian Cabinet meeting of 2019-10-14 confirms
|
||||
# a decision on (translated): "The start of the winter time in Palestine, by
|
||||
# delaying the clock by sixty minutes, starting from midnight on Friday /
|
||||
# Saturday corresponding to 26/10/2019."
|
||||
# http://www.palestinecabinet.gov.ps/portal/meeting/details/43948
|
||||
|
||||
# From Sharef Mustafa (2020-10-20):
|
||||
# As per the palestinian cabinet announcement yesterday , the day light saving
|
||||
# shall [end] on Oct 24th 2020 at 01:00AM by delaying the clock by 60 minutes.
|
||||
# http://www.palestinecabinet.gov.ps/portal/Meeting/Details/51584
|
||||
|
||||
# From Pierre Cashon (2020-10-20):
|
||||
# The summer time this year started on March 28 at 00:00.
|
||||
# https://wafa.ps/ar_page.aspx?id=GveQNZa872839351758aGveQNZ
|
||||
# http://www.palestinecabinet.gov.ps/portal/meeting/details/50284
|
||||
# The winter time in 2015 started on October 23 at 01:00.
|
||||
# https://wafa.ps/ar_page.aspx?id=CgpCdYa670694628582aCgpCdY
|
||||
# http://www.palestinecabinet.gov.ps/portal/meeting/details/27583
|
||||
#
|
||||
# From Paul Eggert (2019-04-10):
|
||||
# For now, guess spring-ahead transitions are March's last Friday at 00:00.
|
||||
#
|
||||
# From Tim Parenti (2016-10-19):
|
||||
# Predict fall transitions on October's last Saturday at 01:00 from now on.
|
||||
# For now, guess spring-ahead transitions are at 00:00 on the Saturday
|
||||
# preceding March's last Sunday (i.e., Sat>=24).
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From P Chan (2021-10-18):
|
||||
# http://wafa.ps/Pages/Details/34701
|
||||
# Palestine winter time will start from midnight 2021-10-29 (Thursday-Friday).
|
||||
#
|
||||
# From Heba Hemad, Palestine Ministry of Telecom & IT (2021-10-20):
|
||||
# ... winter time will begin in Palestine from Friday 10-29, 01:00 AM
|
||||
# by 60 minutes backwards.
|
||||
#
|
||||
# From Tim Parenti (2021-10-25), per Paul Eggert (2021-10-24):
|
||||
# Guess future fall transitions at 01:00 on the Friday preceding October's
|
||||
# last Sunday (i.e., Fri>=23), as this is more consistent with recent practice.
|
||||
|
||||
# From Heba Hamad (2022-03-10):
|
||||
# summer time will begin in Palestine from Sunday 03-27-2022, 00:00 AM.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
|
||||
Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
|
||||
Rule EgyptAsia 1958 only - May 1 0:00 1:00 S
|
||||
@@ -3239,10 +3427,10 @@ Rule Palestine 2004 only - Oct 1 1:00 0 -
|
||||
Rule Palestine 2005 only - Oct 4 2:00 0 -
|
||||
Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
|
||||
Rule Palestine 2006 only - Sep 22 0:00 0 -
|
||||
Rule Palestine 2007 only - Sep Thu>=8 2:00 0 -
|
||||
Rule Palestine 2007 only - Sep 13 2:00 0 -
|
||||
Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
|
||||
Rule Palestine 2008 only - Sep 1 0:00 0 -
|
||||
Rule Palestine 2009 only - Sep Fri>=1 1:00 0 -
|
||||
Rule Palestine 2009 only - Sep 4 1:00 0 -
|
||||
Rule Palestine 2010 only - Mar 26 0:00 1:00 S
|
||||
Rule Palestine 2010 only - Aug 11 0:00 0 -
|
||||
Rule Palestine 2011 only - Apr 1 0:01 1:00 S
|
||||
@@ -3251,12 +3439,18 @@ Rule Palestine 2011 only - Aug 30 0:00 1:00 S
|
||||
Rule Palestine 2011 only - Sep 30 0:00 0 -
|
||||
Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
|
||||
Rule Palestine 2012 only - Sep 21 1:00 0 -
|
||||
Rule Palestine 2013 only - Sep Fri>=21 0:00 0 -
|
||||
Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 -
|
||||
Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S
|
||||
Rule Palestine 2013 only - Sep 27 0:00 0 -
|
||||
Rule Palestine 2014 only - Oct 24 0:00 0 -
|
||||
Rule Palestine 2015 only - Mar 28 0:00 1:00 S
|
||||
Rule Palestine 2015 only - Oct 23 1:00 0 -
|
||||
Rule Palestine 2016 2018 - Mar Sat>=24 1:00 1:00 S
|
||||
Rule Palestine 2016 max - Oct lastSat 1:00 0 -
|
||||
Rule Palestine 2019 max - Mar lastFri 0:00 1:00 S
|
||||
Rule Palestine 2016 2018 - Oct Sat>=24 1:00 0 -
|
||||
Rule Palestine 2019 only - Mar 29 0:00 1:00 S
|
||||
Rule Palestine 2019 only - Oct Sat>=24 0:00 0 -
|
||||
Rule Palestine 2020 2021 - Mar Sat>=24 0:00 1:00 S
|
||||
Rule Palestine 2020 only - Oct 24 1:00 0 -
|
||||
Rule Palestine 2021 max - Oct Fri>=23 1:00 0 -
|
||||
Rule Palestine 2022 max - Mar Sun>=25 0:00 1:00 S
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
|
||||
@@ -3325,7 +3519,13 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
|
||||
# influence of the sources. There is no current abbreviation for DST,
|
||||
# so use "PDT", the usual American style.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From P Chan (2021-05-10):
|
||||
# Here's a fairly comprehensive article in Japanese:
|
||||
# https://wiki.suikawiki.org/n/Philippine%20Time
|
||||
# From Paul Eggert (2021-05-10):
|
||||
# The info in the Japanese table has not been absorbed (yet) below.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Phil 1936 only - Nov 1 0:00 1:00 D
|
||||
Rule Phil 1937 only - Feb 1 0:00 0 S
|
||||
Rule Phil 1954 only - Apr 12 0:00 1:00 D
|
||||
@@ -3391,12 +3591,13 @@ Link Asia/Qatar Asia/Bahrain
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Riyadh 3:06:52 - LMT 1947 Mar 14
|
||||
3:00 - +03
|
||||
Link Asia/Riyadh Antarctica/Syowa
|
||||
Link Asia/Riyadh Asia/Aden # Yemen
|
||||
Link Asia/Riyadh Asia/Kuwait
|
||||
|
||||
# Singapore
|
||||
# taken from Mok Ly Yng (2003-10-30)
|
||||
# http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html
|
||||
# https://web.archive.org/web/20190822231045/http://www.math.nus.edu.sg/~mathelmr/teaching/timezone.html
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1
|
||||
6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
|
||||
@@ -3473,7 +3674,7 @@ Zone Asia/Colombo 5:19:24 - LMT 1880
|
||||
5:30 - +0530
|
||||
|
||||
# Syria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 S
|
||||
Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 -
|
||||
Rule Syria 1962 only - Apr 29 2:00 1:00 S
|
||||
|
||||
+236
-57
@@ -13,17 +13,14 @@
|
||||
|
||||
# Please see the notes below for the controversy about "EST" versus "AEST" etc.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Aus 1917 only - Jan 1 0:01 1:00 D
|
||||
Rule Aus 1917 only - Mar 25 2:00 0 S
|
||||
Rule Aus 1942 only - Jan 1 2:00 1:00 D
|
||||
Rule Aus 1942 only - Mar 29 2:00 0 S
|
||||
Rule Aus 1942 only - Sep 27 2:00 1:00 D
|
||||
Rule Aus 1943 1944 - Mar lastSun 2:00 0 S
|
||||
Rule Aus 1943 only - Oct 3 2:00 1:00 D
|
||||
# Go with Whitman and the Australian National Standards Commission, which
|
||||
# says W Australia didn't use DST in 1943/1944. Ignore Whitman's claim that
|
||||
# 1944/1945 was just like 1943/1944.
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Aus 1917 only - Jan 1 2:00s 1:00 D
|
||||
Rule Aus 1917 only - Mar lastSun 2:00s 0 S
|
||||
Rule Aus 1942 only - Jan 1 2:00s 1:00 D
|
||||
Rule Aus 1942 only - Mar lastSun 2:00s 0 S
|
||||
Rule Aus 1942 only - Sep 27 2:00s 1:00 D
|
||||
Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
|
||||
Rule Aus 1943 only - Oct 3 2:00s 1:00 D
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
# Northern Territory
|
||||
@@ -32,7 +29,7 @@ Zone Australia/Darwin 8:43:20 - LMT 1895 Feb
|
||||
9:30 Aus AC%sT
|
||||
# Western Australia
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AW 1974 only - Oct lastSun 2:00s 1:00 D
|
||||
Rule AW 1975 only - Mar Sun>=1 2:00s 0 S
|
||||
Rule AW 1983 only - Oct lastSun 2:00s 1:00 D
|
||||
@@ -70,7 +67,7 @@ Zone Australia/Eucla 8:35:28 - LMT 1895 Dec
|
||||
# applies to all of the Whitsundays.
|
||||
# http://www.australia.gov.au/about-australia/australian-story/austn-islands
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AQ 1971 only - Oct lastSun 2:00s 1:00 D
|
||||
Rule AQ 1972 only - Feb lastSun 2:00s 0 S
|
||||
Rule AQ 1989 1991 - Oct lastSun 2:00s 1:00 D
|
||||
@@ -86,7 +83,7 @@ Zone Australia/Lindeman 9:55:56 - LMT 1895
|
||||
10:00 Holiday AE%sT
|
||||
|
||||
# South Australia
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AS 1971 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AS 1986 only - Oct 19 2:00s 1:00 D
|
||||
Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
|
||||
@@ -114,9 +111,13 @@ Zone Australia/Adelaide 9:14:20 - LMT 1895 Feb
|
||||
# http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
|
||||
# says King Island didn't observe DST from WWII until late 1971.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AT 1916 only - Oct Sun>=1 2:00s 1:00 D
|
||||
Rule AT 1917 only - Mar lastSun 2:00s 0 S
|
||||
Rule AT 1917 1918 - Oct Sun>=22 2:00s 1:00 D
|
||||
Rule AT 1918 1919 - Mar Sun>=1 2:00s 0 S
|
||||
Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 D
|
||||
Rule AT 1968 only - Mar lastSun 2:00s 0 S
|
||||
Rule AT 1968 only - Mar Sun>=29 2:00s 0 S
|
||||
Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AT 1969 1971 - Mar Sun>=8 2:00s 0 S
|
||||
Rule AT 1972 only - Feb lastSun 2:00s 0 S
|
||||
@@ -136,18 +137,12 @@ Rule AT 2007 only - Mar lastSun 2:00s 0 S
|
||||
Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Australia/Hobart 9:49:16 - LMT 1895 Sep
|
||||
10:00 - AEST 1916 Oct 1 2:00
|
||||
10:00 1:00 AEDT 1917 Feb
|
||||
10:00 AT AE%sT 1919 Oct 24
|
||||
10:00 Aus AE%sT 1967
|
||||
10:00 AT AE%sT
|
||||
Zone Australia/Currie 9:35:28 - LMT 1895 Sep
|
||||
10:00 - AEST 1916 Oct 1 2:00
|
||||
10:00 1:00 AEDT 1917 Feb
|
||||
10:00 Aus AE%sT 1971 Jul
|
||||
10:00 AT AE%sT
|
||||
|
||||
# Victoria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AV 1971 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AV 1972 only - Feb lastSun 2:00s 0 S
|
||||
Rule AV 1973 1985 - Mar Sun>=1 2:00s 0 S
|
||||
@@ -168,7 +163,7 @@ Zone Australia/Melbourne 9:39:52 - LMT 1895 Feb
|
||||
10:00 AV AE%sT
|
||||
|
||||
# New South Wales
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AN 1971 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AN 1972 only - Feb 27 2:00s 0 S
|
||||
Rule AN 1973 1981 - Mar Sun>=1 2:00s 0 S
|
||||
@@ -197,7 +192,7 @@ Zone Australia/Broken_Hill 9:25:48 - LMT 1895 Feb
|
||||
9:30 AS AC%sT
|
||||
|
||||
# Lord Howe Island
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule LH 1981 1984 - Oct lastSun 2:00 1:00 -
|
||||
Rule LH 1982 1985 - Mar Sun>=1 2:00 0 -
|
||||
Rule LH 1985 only - Oct lastSun 2:00 0:30 -
|
||||
@@ -252,8 +247,9 @@ Zone Antarctica/Macquarie 0 - -00 1899 Nov
|
||||
10:00 Aus AE%sT 1919 Apr 1 0:00s
|
||||
0 - -00 1948 Mar 25
|
||||
10:00 Aus AE%sT 1967
|
||||
10:00 AT AE%sT 2010 Apr 4 3:00
|
||||
11:00 - +11
|
||||
10:00 AT AE%sT 2010
|
||||
10:00 1:00 AEDT 2011
|
||||
10:00 AT AE%sT
|
||||
|
||||
# Christmas
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -380,7 +376,33 @@ Zone Indian/Cocos 6:27:40 - LMT 1900
|
||||
# From Michael Deckers (2019-08-06):
|
||||
# https://www.laws.gov.fj/LawsAsMade/downloadfile/848
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From Raymond Kumar (2020-10-08):
|
||||
# [DST in Fiji] is from December 20th 2020, till 17th January 2021.
|
||||
# From Alan Mintz (2020-10-08):
|
||||
# https://www.laws.gov.fj/LawsAsMade/GetFile/1071
|
||||
# From Tim Parenti (2020-10-08):
|
||||
# https://www.fijivillage.com/news/Daylight-saving-from-Dec-20th-this-year-to-Jan-17th-2021-8rf4x5/
|
||||
# "Minister for Employment, Parveen Bala says they had never thought of
|
||||
# stopping daylight saving. He says it was just to decide on when it should
|
||||
# start and end. Bala says it is a short period..."
|
||||
#
|
||||
# From Tim Parenti (2021-10-11), per Jashneel Kumar (2021-10-11) and P Chan
|
||||
# (2021-10-12):
|
||||
# https://www.fiji.gov.fj/Media-Centre/Speeches/English/PM-BAINIMARAMA-S-COVID-19-ANNOUNCEMENT-10-10-21
|
||||
# https://www.fbcnews.com.fj/news/covid-19/curfew-moved-back-to-11pm/
|
||||
# In a 2021-10-10 speech concerning updated Covid-19 mitigation measures in
|
||||
# Fiji, prime minister Josaia Voreqe "Frank" Bainimarama announced the
|
||||
# suspension of DST for the 2021/2022 season: "Given that we are in the process
|
||||
# of readjusting in the midst of so many changes, we will also put Daylight
|
||||
# Savings Time on hold for this year. It will also make the reopening of
|
||||
# scheduled commercial air service much smoother if we don't have to be
|
||||
# concerned shifting arrival and departure times, which may look like a simple
|
||||
# thing but requires some significant logistical adjustments domestically and
|
||||
# internationally."
|
||||
# Assume for now that DST will resume with the recent pre-2020 rules for the
|
||||
# 2022/2023 season.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
|
||||
Rule Fiji 2009 only - Nov 29 2:00 1:00 -
|
||||
@@ -390,8 +412,11 @@ Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
|
||||
Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
|
||||
Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
|
||||
Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Fiji 2015 max - Jan Sun>=12 3:00 0 -
|
||||
Rule Fiji 2019 max - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
|
||||
Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2020 only - Dec 20 2:00 1:00 -
|
||||
Rule Fiji 2022 max - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2023 max - Jan Sun>=12 3:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
||||
12:00 Fiji +12/+13
|
||||
@@ -409,7 +434,7 @@ Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct # Papeete
|
||||
|
||||
# Guam
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# http://guamlegislature.com/Public_Laws_5th/PL05-025.pdf
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-59-7-Guam-Daylight-Savings-Time-May-6-1959.pdf
|
||||
Rule Guam 1959 only - Jun 27 2:00 1:00 D
|
||||
@@ -453,7 +478,7 @@ Link Pacific/Guam Pacific/Saipan # N Mariana Is
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki
|
||||
12:00 - +12
|
||||
Zone Pacific/Enderbury -11:24:20 - LMT 1901
|
||||
Zone Pacific/Kanton 0 - -00 1937 Aug 31
|
||||
-12:00 - -12 1979 Oct
|
||||
-11:00 - -11 1994 Dec 31
|
||||
13:00 - +13
|
||||
@@ -520,7 +545,7 @@ Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe
|
||||
12:00 - +12
|
||||
|
||||
# New Caledonia
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 -
|
||||
Rule NC 1978 1979 - Feb 27 0:00 0 -
|
||||
Rule NC 1996 only - Dec 1 2:00s 1:00 -
|
||||
@@ -535,7 +560,7 @@ Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13 # Nouméa
|
||||
|
||||
# New Zealand
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NZ 1927 only - Nov 6 2:00 1:00 S
|
||||
Rule NZ 1928 only - Mar 4 2:00 0 M
|
||||
Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S
|
||||
@@ -586,13 +611,46 @@ Link Pacific/Auckland Antarctica/McMurdo
|
||||
# was probably like Pacific/Auckland
|
||||
|
||||
# Cook Is
|
||||
# From Shanks & Pottenger:
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
#
|
||||
# From Alexander Krivenyshev (2021-03-24):
|
||||
# In 1899 the Cook Islands celebrated Christmas twice to correct the calendar.
|
||||
# According to the old books, missionaries were unaware of
|
||||
# the International Date line, when they came from Sydney.
|
||||
# Thus the Cook Islands were one day ahead....
|
||||
# http://nzetc.victoria.ac.nz/tm/scholarly/tei-KloDisc-t1-body-d18.html
|
||||
# ... Appendix to the Journals of the House of Representatives, 1900
|
||||
# https://atojs.natlib.govt.nz/cgi-bin/atojs?a=d&d=AJHR1900-I.2.1.2.3
|
||||
# (page 20)
|
||||
#
|
||||
# From Michael Deckers (2021-03-24):
|
||||
# ... in the Cook Island Act of 1915-10-11, online at
|
||||
# http://www.paclii.org/ck/legis/ck-nz_act/cia1915132/
|
||||
# "651. The hour of the day shall in each of the islands included in the
|
||||
# Cook Islands be determined in accordance with the meridian of that island."
|
||||
# so that local (mean?) time was still used in Rarotonga (and Niue) in 1915.
|
||||
# This was changed in the Cook Island Amendment Act of 1952-10-16 ...
|
||||
# http://www.paclii.org/ck/legis/ck-nz_act/ciaa1952212/
|
||||
# "651 (1) The hour of the day in each of the islands included in the Cook
|
||||
# Islands, other than Niue, shall be determined as if each island were
|
||||
# situated on the meridian one hundred and fifty-seven degrees thirty minutes
|
||||
# West of Greenwich. (2) The hour of the day in the Island of Niue shall be
|
||||
# determined as if that island were situated on the meridian one hundred and
|
||||
# seventy degrees West of Greenwich."
|
||||
# This act does not state when it takes effect, so one has to assume it
|
||||
# applies since 1952-10-16. But there is the possibility that the act just
|
||||
# legalized prior existing practice, as we had seen with the Guernsey law of
|
||||
# 1913-06-18 for the switch in 1909-04-19.
|
||||
#
|
||||
# From Paul Eggert (2021-03-24):
|
||||
# Transitions after 1952 are from Shanks & Pottenger.
|
||||
#
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cook 1978 only - Nov 12 0:00 0:30 -
|
||||
Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
|
||||
Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua
|
||||
Zone Pacific/Rarotonga 13:20:56 - LMT 1899 Dec 26 # Avarua
|
||||
-10:39:04 - LMT 1952 Oct 16
|
||||
-10:30 - -1030 1978 Nov 12
|
||||
-10:00 Cook -10/-0930
|
||||
|
||||
@@ -600,10 +658,18 @@ Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua
|
||||
|
||||
|
||||
# Niue
|
||||
# See Pacific/Raratonga comments for 1952 transition.
|
||||
#
|
||||
# From Tim Parenti (2021-09-13):
|
||||
# Consecutive contemporaneous editions of The Air Almanac listed -11:20 for
|
||||
# Niue as of Apr 1964 but -11 as of Aug 1964:
|
||||
# Apr 1964: https://books.google.com/books?id=_1So677Y5vUC&pg=SL1-PA23
|
||||
# Aug 1964: https://books.google.com/books?id=MbJloqd-zyUC&pg=SL1-PA23
|
||||
# Without greater specificity, guess 1964-07-01 for this transition.
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Niue -11:19:40 - LMT 1901 # Alofi
|
||||
-11:20 - -1120 1951
|
||||
-11:30 - -1130 1978 Oct 1
|
||||
Zone Pacific/Niue -11:19:40 - LMT 1952 Oct 16 # Alofi
|
||||
-11:20 - -1120 1964 Jul
|
||||
-11:00 - -11
|
||||
|
||||
# Norfolk
|
||||
@@ -627,6 +693,7 @@ Zone Pacific/Palau -15:02:04 - LMT 1844 Dec 31 # Koror
|
||||
Zone Pacific/Port_Moresby 9:48:40 - LMT 1880
|
||||
9:48:32 - PMMT 1895 # Port Moresby Mean Time
|
||||
10:00 - +10
|
||||
Link Pacific/Port_Moresby Antarctica/DumontDUrville
|
||||
#
|
||||
# From Paul Eggert (2014-10-13):
|
||||
# Base the Bougainville entry on the Arawa-Kieta region, which appears to have
|
||||
@@ -731,13 +798,17 @@ Link Pacific/Pago_Pago Pacific/Midway # in US minor outlying islands
|
||||
# From Paul Eggert (2014-07-08):
|
||||
# That web page currently lists transitions for 2012/3 and 2013/4.
|
||||
# Assume the pattern instituted in 2012 will continue indefinitely.
|
||||
#
|
||||
# From Geoffrey D. Bennett (2021-09-20):
|
||||
# https://www.mcil.gov.ws/storage/2021/09/MCIL-Scan_20210920_120553.pdf
|
||||
# DST has been cancelled for this year.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule WS 2010 only - Sep lastSun 0:00 1 -
|
||||
Rule WS 2011 only - Apr Sat>=1 4:00 0 -
|
||||
Rule WS 2011 only - Sep lastSat 3:00 1 -
|
||||
Rule WS 2012 max - Apr Sun>=1 4:00 0 -
|
||||
Rule WS 2012 max - Sep lastSun 3:00 1 -
|
||||
Rule WS 2012 2021 - Apr Sun>=1 4:00 0 -
|
||||
Rule WS 2012 2020 - Sep lastSun 3:00 1 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Apia 12:33:04 - LMT 1892 Jul 5
|
||||
-11:26:56 - LMT 1911
|
||||
@@ -776,7 +847,7 @@ Zone Pacific/Fakaofo -11:24:56 - LMT 1901
|
||||
13:00 - +13
|
||||
|
||||
# Tonga
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
|
||||
Rule Tonga 2000 only - Mar 19 2:00s 0 -
|
||||
Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
|
||||
@@ -784,8 +855,8 @@ Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
|
||||
Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Tongatapu 12:19:20 - LMT 1901
|
||||
12:20 - +1220 1941
|
||||
Zone Pacific/Tongatapu 12:19:12 - LMT 1945 Sep 10
|
||||
12:20 - +1220 1961
|
||||
13:00 - +13 1999
|
||||
13:00 Tonga +13/+14
|
||||
|
||||
@@ -857,13 +928,36 @@ Zone Pacific/Wake 11:06:28 - LMT 1901
|
||||
|
||||
|
||||
# Vanuatu
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Vanuatu 1983 only - Sep 25 0:00 1:00 -
|
||||
Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 -
|
||||
Rule Vanuatu 1984 only - Oct 23 0:00 1:00 -
|
||||
Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 -
|
||||
Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
|
||||
Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 -
|
||||
|
||||
# From P Chan (2020-11-27):
|
||||
# Joint Daylight Saving Regulation No 59 of 1973
|
||||
# New Hebrides Condominium Gazette No 336. December 1973
|
||||
# http://www.paclii.org/vu/other/VUNHGovGaz//1973/11.pdf#page=15
|
||||
#
|
||||
# Joint Daylight Saving (Repeal) Regulation No 10 of 1974
|
||||
# New Hebrides Condominium Gazette No 336. March 1974
|
||||
# http://www.paclii.org/vu/other/VUNHGovGaz//1974/3.pdf#page=11
|
||||
#
|
||||
# Summer Time Act No. 35 of 1982 [commenced 1983-09-01]
|
||||
# http://www.paclii.org/vu/other/VUGovGaz/1982/32.pdf#page=48
|
||||
#
|
||||
# Summer Time Act (Cap 157)
|
||||
# Laws of the Republic of Vanuatu Revised Edition 1988
|
||||
# http://www.paclii.org/cgi-bin/sinodisp/vu/legis/consol_act1988/sta147/sta147.html
|
||||
#
|
||||
# Summer Time (Amendment) Act No. 6 of 1991 [commenced 1991-11-11]
|
||||
# http://www.paclii.org/vu/legis/num_act/sta1991227/
|
||||
#
|
||||
# Summer Time (Repeal) Act No. 4 of 1993 [commenced 1993-05-03]
|
||||
# http://www.paclii.org/vu/other/VUGovGaz/1993/15.pdf#page=59
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Vanuatu 1973 only - Dec 22 12:00u 1:00 -
|
||||
Rule Vanuatu 1974 only - Mar 30 12:00u 0 -
|
||||
Rule Vanuatu 1983 1991 - Sep Sat>=22 24:00 1:00 -
|
||||
Rule Vanuatu 1984 1991 - Mar Sat>=22 24:00 0 -
|
||||
Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
|
||||
Rule Vanuatu 1992 only - Oct Sat>=22 24:00 1:00 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
|
||||
11:00 Vanuatu +11/+12
|
||||
@@ -942,6 +1036,25 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# Electronic Journal of Australian and New Zealand History (1997-03-03)
|
||||
# http://www.jcu.edu.au/aff/history/reviews/davison.htm
|
||||
|
||||
# From P Chan (2020-11-20):
|
||||
# Daylight Saving Act 1916 (No. 40 of 1916) [1916-12-21, commenced 1917-01-01]
|
||||
# http://classic.austlii.edu.au/au/legis/cth/num_act/dsa1916401916192/
|
||||
#
|
||||
# Daylight Saving Repeal Act 1917 (No. 35 of 1917) [1917-09-25]
|
||||
# http://classic.austlii.edu.au/au/legis/cth/num_act/dsra1917351917243/
|
||||
#
|
||||
# Statutory Rules 1941, No. 323 [1941-12-24]
|
||||
# https://www.legislation.gov.au/Details/C1941L00323
|
||||
#
|
||||
# Statutory Rules 1942, No. 392 [1942-09-10]
|
||||
# https://www.legislation.gov.au/Details/C1942L00392
|
||||
#
|
||||
# Statutory Rules 1943, No. 241 [1943-09-29]
|
||||
# https://www.legislation.gov.au/Details/C1943L00241
|
||||
#
|
||||
# All transition times should be 02:00 standard time.
|
||||
|
||||
|
||||
# From Paul Eggert (2005-12-08):
|
||||
# Implementation Dates of Daylight Saving Time within Australia
|
||||
# http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
|
||||
@@ -1334,6 +1447,27 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
|
||||
# Tasmania
|
||||
|
||||
# From P Chan (2020-11-20):
|
||||
# Tasmania observed DST in 1916-1919.
|
||||
#
|
||||
# Daylight Saving Act, 1916 (7 Geo V, No 2) [1916-09-22]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/tdsa19167gvn2267/
|
||||
#
|
||||
# Daylight Saving Amendment Act, 1917 (8 Geo V, No 5) [1917-10-01]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/tdsaa19178gvn5347/
|
||||
#
|
||||
# Daylight Saving Act Repeal Act, 1919 (10 Geo V, No 9) [1919-10-24]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/tdsara191910gvn9339/
|
||||
#
|
||||
# King Island is mentioned in the 1967 Act but not the 1968 Act.
|
||||
# Therefore it possibly observed DST from 1968/69.
|
||||
#
|
||||
# Daylight Saving Act 1967 (No. 33 of 1967) [1967-09-22]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/dsa196733o1967211/
|
||||
#
|
||||
# Daylight Saving Act 1968 (No. 42 of 1968) [1968-10-15]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/dsa196842o1968211/
|
||||
|
||||
# The rules for 1967 through 1991 were reported by George Shepherd
|
||||
# via Simon Woodhead via Robert Elz (1991-03-06):
|
||||
# # The state of TASMANIA.. [Courtesy Tasmanian Dept of Premier + Cabinet ]
|
||||
@@ -1664,6 +1798,23 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# One source for this is page 202 of: Bartky IR. One Time Fits All:
|
||||
# The Campaigns for Global Uniformity (2007).
|
||||
|
||||
# Kanton
|
||||
|
||||
# From Paul Eggert (2021-05-27):
|
||||
# Kiribati's +13 timezone is represented by Kanton, its only populated
|
||||
# island. (It was formerly spelled "Canton", but Gilbertese lacks "C".)
|
||||
# Kanton was settled on 1937-08-31 by two British radio operators
|
||||
# <https://history.state.gov/historicaldocuments/frus1937v02/d94>;
|
||||
# Americans came the next year and built an airfield, partly to
|
||||
# establish airline service and perhaps partly anticipating the
|
||||
# next war. Aside from the war, the airfield was used by commercial
|
||||
# airlines until long-range jets became standard; although currently
|
||||
# for emergency use only, China says it is considering rebuilding the
|
||||
# airfield for high-end niche tourism. Kanton has about two dozen
|
||||
# people, caretakers who rotate in from the rest of Kiribati in 2-5
|
||||
# year shifts, and who use some of the leftover structures
|
||||
# <http://pipa.neaq.org/2012/06/images-of-kanton-island.html>.
|
||||
|
||||
# Kwajalein
|
||||
|
||||
# From an AP article (1993-08-22):
|
||||
@@ -1947,6 +2098,17 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
|
||||
# Tonga
|
||||
|
||||
# From Paul Eggert (2021-03-04):
|
||||
# In 1943 "The standard time kept is 12 hrs. 19 min. 12 sec. fast
|
||||
# on Greenwich mean time." according to the Admiralty's Hydrographic
|
||||
# Dept., Pacific Islands Pilot, Vol. II, 7th ed., 1943, p 360.
|
||||
|
||||
# From Michael Deckers (2021-03-03):
|
||||
# [Ian R Bartky: "One Time Fits All: The Campaigns for Global Uniformity".
|
||||
# Stanford University Press. 2007. p. 255]:
|
||||
# On 10 September 1945 Tonga adopted a standard time 12 hours,
|
||||
# 20 minutes in advance of Greenwich.
|
||||
|
||||
# From Paul Eggert (1996-01-22):
|
||||
# Today's _Wall Street Journal_ (p 1) reports that "Tonga has been plotting
|
||||
# to sneak ahead of [New Zealanders] by introducing daylight-saving time."
|
||||
@@ -1975,9 +2137,26 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# The Crown Prince, presented an unanswerable argument: "Remember that
|
||||
# on the World Day of Prayer, you would be the first people on Earth
|
||||
# to say your prayers in the morning."
|
||||
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell.
|
||||
#
|
||||
# From Tim Parenti (2021-09-13), per Paul Eggert (2006-03-22) and Michael
|
||||
# Deckers (2021-03-03):
|
||||
# Mundell places the transition from +12:20 to +13 in 1941, while Shanks &
|
||||
# Pottenger say the transition was on 1968-10-01.
|
||||
#
|
||||
# The Air Almanac published contemporaneous tables of standard times,
|
||||
# which listed +12:20 as of Nov 1960 and +13 as of Mar 1961:
|
||||
# Nov 1960: https://books.google.com/books?id=bVgtWM6kPZUC&pg=SL1-PA19
|
||||
# Mar 1961: https://books.google.com/books?id=W2nItAul4g0C&pg=SL1-PA19
|
||||
# (Thanks to P Chan for pointing us toward these sources.)
|
||||
# This agrees with Bartky, who writes that "since 1961 [Tonga's] official time
|
||||
# has been thirteen hours in advance of Greenwich time" (p. 202) and further
|
||||
# writes in an endnote that this was because "the legislation was amended" on
|
||||
# 1960-10-19. (p. 255)
|
||||
#
|
||||
# Without greater specificity, presume that Bartky and the Air Almanac point to
|
||||
# a 1961-01-01 transition, as Tāufaʻāhau Tupou IV was still Crown Prince in
|
||||
# 1961 and this still jives with the gist of Mundell's telling, and go with
|
||||
# this over Shanks & Pottenger.
|
||||
|
||||
# From Eric Ulevik (1999-05-03):
|
||||
# Tonga's director of tourism, who is also secretary of the National Millennium
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
# This file provides links between current names for timezones
|
||||
# and their old names. Many names changed in late 1993.
|
||||
# This file provides links from old or merged timezone names to current ones.
|
||||
# Many names changed in late 1993. Several of these names are
|
||||
# also present in the file 'backzone', which has data important only
|
||||
# for pre-1970 timestamps and so is out of scope for tzdb proper.
|
||||
|
||||
# Link TARGET LINK-NAME
|
||||
Link Africa/Nairobi Africa/Asmera
|
||||
@@ -13,7 +15,7 @@ Link America/Argentina/Catamarca America/Argentina/ComodRivadavia
|
||||
Link America/Adak America/Atka
|
||||
Link America/Argentina/Buenos_Aires America/Buenos_Aires
|
||||
Link America/Argentina/Catamarca America/Catamarca
|
||||
Link America/Atikokan America/Coral_Harbour
|
||||
Link America/Panama America/Coral_Harbour
|
||||
Link America/Argentina/Cordoba America/Cordoba
|
||||
Link America/Tijuana America/Ensenada
|
||||
Link America/Indiana/Indianapolis America/Fort_Wayne
|
||||
@@ -28,7 +30,7 @@ Link America/Rio_Branco America/Porto_Acre
|
||||
Link America/Argentina/Cordoba America/Rosario
|
||||
Link America/Tijuana America/Santa_Isabel
|
||||
Link America/Denver America/Shiprock
|
||||
Link America/Port_of_Spain America/Virgin
|
||||
Link America/Puerto_Rico America/Virgin
|
||||
Link Pacific/Auckland Antarctica/South_Pole
|
||||
Link Asia/Ashgabat Asia/Ashkhabad
|
||||
Link Asia/Kolkata Asia/Calcutta
|
||||
@@ -49,6 +51,7 @@ Link Atlantic/Faroe Atlantic/Faeroe
|
||||
Link Europe/Oslo Atlantic/Jan_Mayen
|
||||
Link Australia/Sydney Australia/ACT
|
||||
Link Australia/Sydney Australia/Canberra
|
||||
Link Australia/Hobart Australia/Currie
|
||||
Link Australia/Lord_Howe Australia/LHI
|
||||
Link Australia/Sydney Australia/NSW
|
||||
Link Australia/Darwin Australia/North
|
||||
@@ -102,6 +105,7 @@ Link Pacific/Auckland NZ
|
||||
Link Pacific/Chatham NZ-CHAT
|
||||
Link America/Denver Navajo
|
||||
Link Asia/Shanghai PRC
|
||||
Link Pacific/Kanton Pacific/Enderbury
|
||||
Link Pacific/Honolulu Pacific/Johnston
|
||||
Link Pacific/Pohnpei Pacific/Ponape
|
||||
Link Pacific/Pago_Pago Pacific/Samoa
|
||||
|
||||
+450
-22
@@ -68,6 +68,91 @@
|
||||
#
|
||||
# As explained in the zic man page, the zone columns are:
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
# and the rule columns are:
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
|
||||
|
||||
# Ghana
|
||||
|
||||
# From P Chan (2020-11-20):
|
||||
# Interpretation Amendment Ordinance, 1915 (No.24 of 1915) [1915-11-02]
|
||||
# Ordinances of the Gold Coast, Ashanti, Northern Territories 1915, p 69-71
|
||||
# https://books.google.com/books?id=ErA-AQAAIAAJ&pg=PA70
|
||||
# This Ordinance added "'Time' shall mean Greenwich Mean Time" to the
|
||||
# Interpretation Ordinance, 1876.
|
||||
#
|
||||
# Determination of the Time Ordinance, 1919 (No. 18 of 1919) [1919-11-24]
|
||||
# Ordinances of the Gold Coast, Ashanti, Northern Territories 1919, p 75-76
|
||||
# https://books.google.com/books?id=MbA-AQAAIAAJ&pg=PA75
|
||||
# This Ordinance removed the previous definition of time and introduced DST.
|
||||
#
|
||||
# Time Determination Ordinance (Cap. 214)
|
||||
# The Laws of the Gold Coast (including Togoland Under British Mandate)
|
||||
# Vol. II (1937), p 2328
|
||||
# https://books.google.com/books?id=Z7M-AQAAIAAJ&pg=PA2328
|
||||
# Revised edition of the 1919 Ordinance.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1940 (No. 9 of 1940) [1940-04-06]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1940, p 22
|
||||
# https://books.google.com/books?id=1ao-AQAAIAAJ&pg=PA22
|
||||
# This Ordinance changed the forward transition from September to May.
|
||||
#
|
||||
# Defence (Time Determination Ordinance Amendment) Regulations, 1942
|
||||
# (Regulations No. 6 of 1942) [1942-01-31, commenced on 1942-02-08]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1942, p 48
|
||||
# https://books.google.com/books?id=Das-AQAAIAAJ&pg=PA48
|
||||
# These regulations advanced the [standard] time by thirty minutes.
|
||||
#
|
||||
# Defence (Time Determination Ordinance Amendment (No.2)) Regulations,
|
||||
# 1942 (Regulations No. 28 of 1942) [1942-04-25]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1942, p 87
|
||||
# https://books.google.com/books?id=Das-AQAAIAAJ&pg=PA87
|
||||
# These regulations abolished DST and changed the time to GMT+0:30.
|
||||
#
|
||||
# Defence (Revocation) (No.4) Regulations, 1945 (Regulations No. 45 of
|
||||
# 1945) [1945-10-24, commenced on 1946-01-06]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1945, p 256
|
||||
# https://books.google.com/books?id=9as-AQAAIAAJ&pg=PA256
|
||||
# These regulations revoked the previous two sets of Regulations.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1945 (No. 18 of 1945) [1946-01-06]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1945, p 69
|
||||
# https://books.google.com/books?id=9as-AQAAIAAJ&pg=PA69
|
||||
# This Ordinance abolished DST.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1950 (No. 26 of 1950) [1950-07-22]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1950, p 35
|
||||
# https://books.google.com/books?id=e60-AQAAIAAJ&pg=PA35
|
||||
# This Ordinance restored DST but with thirty minutes offset.
|
||||
#
|
||||
# Time Determination Ordinance (Cap. 264)
|
||||
# The Laws of the Gold Coast, Vol. V (1954), p 380
|
||||
# https://books.google.com/books?id=Mqc-AQAAIAAJ&pg=PA380
|
||||
# Revised edition of the Time Determination Ordinance.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1956 (No. 21 of 1956) [1956-08-29]
|
||||
# Annual Volume of the Ordinances of the Gold Coast Enacted During the
|
||||
# Year 1956, p 83
|
||||
# https://books.google.com/books?id=VLE-AQAAIAAJ&pg=PA83
|
||||
# This Ordinance abolished DST.
|
||||
|
||||
Rule Ghana 1919 only - Nov 24 0:00 0:20 +0020
|
||||
Rule Ghana 1920 1942 - Jan 1 2:00 0 GMT
|
||||
Rule Ghana 1920 1939 - Sep 1 2:00 0:20 +0020
|
||||
Rule Ghana 1940 1941 - May 1 2:00 0:20 +0020
|
||||
Rule Ghana 1950 1955 - Sep 1 2:00 0:30 +0030
|
||||
Rule Ghana 1951 1956 - Jan 1 2:00 0 GMT
|
||||
|
||||
Zone Africa/Accra -0:00:52 - LMT 1915 Nov 2
|
||||
0:00 Ghana %s 1942 Feb 8
|
||||
0:30 - +0030 1946 Jan 6
|
||||
0:00 Ghana %s
|
||||
|
||||
# Ethiopia
|
||||
# From Paul Eggert (2014-07-31):
|
||||
@@ -101,14 +186,36 @@ Zone Africa/Bamako -0:32:00 - LMT 1912
|
||||
Zone Africa/Bangui 1:14:20 - LMT 1912
|
||||
1:00 - WAT
|
||||
|
||||
# Gambia
|
||||
# The Gambia
|
||||
# From P Chan (2020-12-09):
|
||||
# Standard time of GMT-1 was adopted on 1933-04-01. On 1942-02-01, GMT was
|
||||
# adopted as a war time measure. This was made permanent in 1946.
|
||||
#
|
||||
# Interpretation Ordinance, 1914 (No. 12 of 1914) [1914-09-29]
|
||||
# Interpretation Ordinance, 1933 (No. 10 of 1933) [1933-03-31]
|
||||
# Notice No. 5 of 1942, Colony of the Gambia Government Gazette, Vol. LIX,
|
||||
# No.2, 1942-01-15, p 2
|
||||
# Interpretation (Amendment) Ordinance, 1946 (No. 3 of 1946) [1946-07-15]
|
||||
Zone Africa/Banjul -1:06:36 - LMT 1912
|
||||
-1:06:36 - BMT 1935 # Banjul Mean Time
|
||||
-1:00 - -01 1964
|
||||
-1:06:36 - BMT 1933 Apr 1 # Banjul Mean Time
|
||||
-1:00 - -01 1942 Feb 1 0:00
|
||||
0:00 - GMT
|
||||
|
||||
# Malawi
|
||||
Zone Africa/Blantyre 2:20:00 - LMT 1903 Mar
|
||||
# From P Chan (2020-12-09):
|
||||
# In 1911, Zomba mean time was adopted as the legal time of Nyasaland. In
|
||||
# 1914, Zomba mean time switched from GMT+2:21:10 to GMT+2:21. On 1925-07-01,
|
||||
# GMT+2 was adopted.
|
||||
#
|
||||
# Interpretation and General Clauses Ordinance, 1911 (No. 12 of 1911)
|
||||
# [1911-07-24]
|
||||
# Notice No. 124 of 1914, 1914-06-30, The Nyasaland Government Gazette, Vol.
|
||||
# XXI, No. 8, 1914-06-30, p 122
|
||||
# Interpretation and General Clauses (Amendment) Ordinance, 1925 (No. 3 of
|
||||
# 1925) [1925-04-02]
|
||||
Zone Africa/Blantyre 2:20:00 - LMT 1911 Jul 24
|
||||
2:21:10 - ZMT 1914 Jun 30 # Zomba Mean Time
|
||||
2:21 - ZMT 1925 Jul 1
|
||||
2:00 - CAT
|
||||
|
||||
# Republic of the Congo
|
||||
@@ -145,19 +252,49 @@ Zone Africa/Djibouti 2:52:36 - LMT 1911 Jul
|
||||
Zone Africa/Douala 0:38:48 - LMT 1912
|
||||
1:00 - WAT
|
||||
# Sierra Leone
|
||||
# From Paul Eggert (2014-08-12):
|
||||
# The following table is from Shanks & Pottenger, but it can't be right.
|
||||
# Whitman gives Mar 31 - Aug 31 for 1931 on.
|
||||
# The International Hydrographic Bulletin, 1932-33, p 63 says that
|
||||
# Sierra Leone would advance its clocks by 20 minutes on 1933-10-01.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule SL 1935 1942 - Jun 1 0:00 0:40 -0020
|
||||
Rule SL 1935 1942 - Oct 1 0:00 0 -01
|
||||
Rule SL 1957 1962 - Jun 1 0:00 1:00 +01
|
||||
Rule SL 1957 1962 - Sep 1 0:00 0 GMT
|
||||
# From P Chan (2020-12-09):
|
||||
# Standard time of GMT-1 was adopted on 1913-07-01. Twenty minutes of DST was
|
||||
# introduce[d] in 1932 and was suspended in 1939. In 1941, GMT was adopted by
|
||||
# Defence Regulations. This was made permanent in 1946.
|
||||
#
|
||||
# Government Notice No. 121 of 1913, 1913-06-06, Sierra Leone Royal Gazette,
|
||||
# Vol. XLIV, No. 1384, 1913-06-14, p 347
|
||||
# Alteration of Time Ordinance, 1932 (No. 34 of 1932) [1932-12-01]
|
||||
# Alteration of Time (Amendment) Ordinance, 1938 (No. 25 of 1938) [1938-11-24]
|
||||
# Defence Regulations (No. 9), 1939 (Regulations No. 9 of 1939), 1939-09-05
|
||||
# Defence Regulations (No. 11), 1939 (Regulations No. 11 of 1939), 1939-09-27
|
||||
# Defence (Amendment) (No. 17) Regulations, 1941 (Public Notice No. 157 of
|
||||
# 1941), 1914-12-04
|
||||
# Alteration of Time (Amendment) Ordinance, 1946 (No. 2 of 1946) [1946-02-07]
|
||||
|
||||
# From Tim Parenti (2021-03-02), per P Chan (2021-02-25):
|
||||
# For Sierra Leone in 1957-1962, the standard time was defined in the
|
||||
# Alteration of Time Ordinance, 1932 (as amended in 1946, renamed to Local Time
|
||||
# Ordinance in 1960 and Local Time Act in 1961). It was unamended throughout
|
||||
# that period. See references to "Time" in the Alphabetical Index of the
|
||||
# Legislation in force on the 31st day of December,
|
||||
# 1957: https://books.google.com/books?id=lvQ-AQAAIAAJ&pg=RA2-PA49
|
||||
# 1958: https://books.google.com/books?id=4fQ-AQAAIAAJ&pg=RA2-PA50
|
||||
# 1959: https://books.google.com/books?id=p_U-AQAAIAAJ&pg=RA2-PA55
|
||||
# 1960: https://books.google.com/books?id=JPY-AQAAIAAJ&pg=RA3-PA37
|
||||
# 1961: https://books.google.com/books?id=7vY-AQAAIAAJ&pg=RA3-PA41
|
||||
# 1962: https://books.google.com/books?id=W_c-AQAAIAAJ&pg=RA3-PA44
|
||||
# 1963: https://books.google.com/books?id=9vk-AQAAIAAJ&pg=RA1-PA47
|
||||
#
|
||||
# Although Shanks & Pottenger had DST from Jun 1 00:00 to Sep 1 00:00 in this
|
||||
# period, many contemporaneous almanacs agree that it wasn't used:
|
||||
# https://mm.icann.org/pipermail/tz/2021-February/029866.html
|
||||
# Go with the above.
|
||||
|
||||
Rule SL 1932 only - Dec 1 0:00 0:20 -0040
|
||||
Rule SL 1933 1938 - Mar 31 24:00 0 -01
|
||||
Rule SL 1933 1939 - Aug 31 24:00 0:20 -0040
|
||||
Rule SL 1939 only - May 31 24:00 0 -01
|
||||
|
||||
Zone Africa/Freetown -0:53:00 - LMT 1882
|
||||
-0:53:00 - FMT 1913 Jun # Freetown Mean Time
|
||||
-1:00 SL %s 1957
|
||||
-0:53:00 - FMT 1913 Jul 1 # Freetown MT
|
||||
-1:00 SL %s 1939 Sep 5
|
||||
-1:00 - -01 1941 Dec 6 24:00
|
||||
0:00 SL GMT/+01
|
||||
|
||||
# Botswana
|
||||
@@ -209,7 +346,15 @@ Zone Africa/Luanda 0:52:56 - LMT 1892
|
||||
1:00 - WAT
|
||||
|
||||
# Democratic Republic of the Congo (east)
|
||||
Zone Africa/Lubumbashi 1:49:52 - LMT 1897 Nov 9
|
||||
#
|
||||
# From Alois Treindl (2022-02-28):
|
||||
# My main source for its time zone history is
|
||||
# Henri le Corre, Régimes horaires pour l'Europe et l'Afrique.
|
||||
# Shanks follows le Corre. As does Françoise Schneider-Gauquelin in her book
|
||||
# Problèmes de l'heure résolus pour le monde entier.
|
||||
#
|
||||
Zone Africa/Lubumbashi 1:49:52 - LMT 1897 Nov 9
|
||||
1:00 - WAT 1920 Apr 25
|
||||
2:00 - CAT
|
||||
|
||||
# Zambia
|
||||
@@ -298,6 +443,85 @@ Zone America/Aruba -4:40:24 - LMT 1912 Feb 12 # Oranjestad
|
||||
-4:30 - -0430 1965
|
||||
-4:00 - AST
|
||||
|
||||
# Atikokan, Ontario
|
||||
|
||||
# From Paul Eggert (1997-10-17):
|
||||
# Mark Brader writes that an article in the 1997-10-14 Toronto Star
|
||||
# says that Atikokan, Ontario currently does not observe DST,
|
||||
# but will vote on 11-10 whether to use EST/EDT.
|
||||
# He also writes that the Ontario Time Act (1990, Chapter T.9)
|
||||
# http://www.gov.on.ca/MBS/english/publications/statregs/conttext.html
|
||||
# says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
|
||||
# Officially Atikokan is therefore on CST/CDT, and most likely this report
|
||||
# concerns a non-official time observed as a matter of local practice.
|
||||
#
|
||||
# From Paul Eggert (2000-10-02):
|
||||
# Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and
|
||||
# New Osnaburgh observe CST all year, that Big Trout Lake observes
|
||||
# CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in
|
||||
# violation of the official Ontario rules.
|
||||
#
|
||||
# From Paul Eggert (2006-07-09):
|
||||
# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the
|
||||
# 2005-07-21 Chronicle-Journal, which said:
|
||||
#
|
||||
# The clocks in Atikokan stay set on standard time year-round.
|
||||
# This means they spend about half the time on central time and
|
||||
# the other half on eastern time.
|
||||
#
|
||||
# For the most part, the system works, Mayor Dennis Brown said.
|
||||
#
|
||||
# "The majority of businesses in Atikokan deal more with Eastern
|
||||
# Canada, but there are some that deal with Western Canada," he
|
||||
# said. "I don't see any changes happening here."
|
||||
#
|
||||
# Walton also writes "Supposedly Pickle Lake and Mishkeegogamang
|
||||
# [New Osnaburgh] follow the same practice."
|
||||
|
||||
# From Garry McKinnon (2006-07-14) via Chris Walton:
|
||||
# I chatted with a member of my board who has an outstanding memory
|
||||
# and a long history in Atikokan (and in the telecom industry) and he
|
||||
# can say for certain that Atikokan has been practicing the current
|
||||
# time keeping since 1952, at least.
|
||||
|
||||
# From Paul Eggert (2006-07-17):
|
||||
# Shanks & Pottenger say that Atikokan has agreed with Rainy River
|
||||
# ever since standard time was introduced, but the information from
|
||||
# McKinnon sounds more authoritative. For now, assume that Atikokan
|
||||
# switched to EST immediately after WWII era daylight saving time
|
||||
# ended. This matches the old (less-populous) America/Coral_Harbour
|
||||
# entry since our cutoff date of 1970, so we can move
|
||||
# America/Coral_Harbour to the 'backward' file.
|
||||
|
||||
Zone America/Atikokan -6:06:28 - LMT 1895
|
||||
-6:00 Canada C%sT 1940 Sep 29
|
||||
-6:00 1:00 CDT 1942 Feb 9 2:00s
|
||||
-6:00 Canada C%sT 1945 Sep 30 2:00
|
||||
-5:00 - EST
|
||||
|
||||
# Quebec east of Natashquan
|
||||
|
||||
# From Paul Eggert (2021-05-09):
|
||||
# H. David Matthews and Mary Vincent's map
|
||||
# "It's about TIME", _Canadian Geographic_ (September-October 1998)
|
||||
# http://www.canadiangeographic.ca/Magazine/SO98/alacarte.asp
|
||||
# says that Quebec east of the -63 meridian is supposed to observe
|
||||
# AST, but residents as far east as Natashquan use EST/EDT, and
|
||||
# residents east of Natashquan use AST.
|
||||
# The Quebec department of justice writes in
|
||||
# "The situation in Minganie and Basse-Côte-Nord"
|
||||
# https://www.justice.gouv.qc.ca/en/department/ministre/functions-and-responsabilities/legal-time-in-quebec/the-situation-in-minganie-and-basse-cote-nord/
|
||||
# that the coastal strip from just east of Natashquan to Blanc-Sablon
|
||||
# observes Atlantic standard time all year round.
|
||||
# This common practice was codified into law as of 2007; see Legal Time Act,
|
||||
# CQLR c T-5.1 <http://legisquebec.gouv.qc.ca/en/ShowDoc/cs/T-5.1>.
|
||||
# For lack of better info, guess this practice began around 1970, contra to
|
||||
# Shanks & Pottenger who have this region observing AST/ADT.
|
||||
|
||||
Zone America/Blanc-Sablon -3:48:28 - LMT 1884
|
||||
-4:00 Canada A%sT 1970
|
||||
-4:00 - AST
|
||||
|
||||
# Cayman Is
|
||||
Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown
|
||||
-5:07:10 - KMT 1912 Feb # Kingston Mean Time
|
||||
@@ -318,6 +542,85 @@ Zone America/Coral_Harbour -5:32:40 - LMT 1884
|
||||
-5:00 NT_YK E%sT 1946
|
||||
-5:00 - EST
|
||||
|
||||
# From Chris Walton (2011-12-01):
|
||||
# There are two areas within the Canadian province of British Columbia
|
||||
# that do not currently observe daylight saving:
|
||||
# a) The Creston Valley (includes the town of Creston and surrounding area)
|
||||
# b) The eastern half of the Peace River Regional District
|
||||
# (includes the cities of Dawson Creek and Fort St. John)
|
||||
|
||||
# Earlier this year I stumbled across a detailed article about the time
|
||||
# keeping history of Creston; it was written by Tammy Hardwick who is the
|
||||
# manager of the Creston & District Museum. The article was written in May 2009.
|
||||
# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
|
||||
# According to the article, Creston has not changed its clocks since June 1918.
|
||||
# i.e. Creston has been stuck on UT-7 for 93 years.
|
||||
# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
|
||||
|
||||
# Unfortunately the exact date for the time change in June 1918 remains
|
||||
# unknown and will be difficult to ascertain. I e-mailed Tammy a few months
|
||||
# ago to ask if Sunday June 2 was a reasonable guess. She said it was just
|
||||
# as plausible as any other date (in June). She also said that after writing
|
||||
# the article she had discovered another time change in 1916; this is the
|
||||
# subject of another article which she wrote in October 2010.
|
||||
# http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56
|
||||
|
||||
# Here is a summary of the three clock change events in Creston's history:
|
||||
# 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
|
||||
# Exact date unknown
|
||||
# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
|
||||
# Exact date in October unknown; Sunday October 1 is a reasonable guess.
|
||||
# 3. June 1918: switch to Pacific Daylight Time (GMT-7)
|
||||
# Exact date in June unknown; Sunday June 2 is a reasonable guess.
|
||||
# note 1:
|
||||
# On Oct 27/1918 when daylight saving ended in the rest of Canada,
|
||||
# Creston did not change its clocks.
|
||||
# note 2:
|
||||
# During WWII when the Federal Government legislated a mandatory clock change,
|
||||
# Creston did not oblige.
|
||||
# note 3:
|
||||
# There is no guarantee that Creston will remain on Mountain Standard Time
|
||||
# (UTC-7) forever.
|
||||
# The subject was debated at least once this year by the town Council.
|
||||
# http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html
|
||||
|
||||
# During a period WWII, summer time (Daylight saying) was mandatory in Canada.
|
||||
# In Creston, that was handled by shifting the area to PST (-8:00) then applying
|
||||
# summer time to cause the offset to be -7:00, the same as it had been before
|
||||
# the change. It can be argued that the timezone abbreviation during this
|
||||
# period should be PDT rather than MST, but that doesn't seem important enough
|
||||
# (to anyone) to further complicate the rules.
|
||||
|
||||
# The transition dates (and times) are guesses.
|
||||
|
||||
Zone America/Creston -7:46:04 - LMT 1884
|
||||
-7:00 - MST 1916 Oct 1
|
||||
-8:00 - PST 1918 Jun 2
|
||||
-7:00 - MST
|
||||
|
||||
# Curaçao
|
||||
# Milne gives 4:35:46.9 for Curaçao mean time; round to nearest.
|
||||
#
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# Shanks & Pottenger say that The Bottom and Philipsburg have been at
|
||||
# -4:00 since standard time was introduced on 1912-03-02; and that
|
||||
# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
|
||||
# 1912-02-02 to 1965-01-01. The former is dubious, since S&P also say
|
||||
# Saba Island has been like Curaçao.
|
||||
# This all predates our 1970 cutoff, though.
|
||||
#
|
||||
# By July 2007 Curaçao and St Maarten are planned to become
|
||||
# associated states within the Netherlands, much like Aruba;
|
||||
# Bonaire, Saba and St Eustatius would become directly part of the
|
||||
# Netherlands as Kingdom Islands. This won't affect their time zones
|
||||
# though, as far as we know.
|
||||
#
|
||||
Zone America/Curacao -4:35:47 - LMT 1912 Feb 12 # Willemstad
|
||||
-4:30 - -0430 1965
|
||||
-4:00 - AST
|
||||
Link America/Curacao America/Kralendijk
|
||||
Link America/Curacao America/Lower_Princes
|
||||
|
||||
# Dominica
|
||||
Zone America/Dominica -4:05:36 - LMT 1911 Jul 1 0:01 # Roseau
|
||||
-4:00 - AST
|
||||
@@ -340,6 +643,7 @@ Zone America/Grenada -4:07:00 - LMT 1911 Jul # St George's
|
||||
Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe-à-Pitre
|
||||
-4:00 - AST
|
||||
|
||||
|
||||
# Canada
|
||||
#
|
||||
# From Paul Eggert (2015-03-24):
|
||||
@@ -351,7 +655,6 @@ Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe-à-Pitre
|
||||
# Pottenger data. The post-1970 entries have been corrected, but the
|
||||
# pre-1970 entries are unchecked and probably have errors.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Mont 1917 only - Mar 25 2:00 1:00 D
|
||||
Rule Mont 1917 only - Apr 24 0:00 0 S
|
||||
Rule Mont 1919 only - Mar 31 2:30 1:00 D
|
||||
@@ -387,6 +690,48 @@ Zone America/Montreal -4:54:16 - LMT 1884
|
||||
Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill
|
||||
-4:00 - AST
|
||||
|
||||
# The Bahamas
|
||||
#
|
||||
# For 1899 Milne gives -5:09:29.5; round that.
|
||||
#
|
||||
# From P Chan (2020-11-27, corrected on 2020-12-02):
|
||||
# There were two periods of DST observed in 1942-1945: 1942-05-01
|
||||
# midnight to 1944-12-31 midnight and 1945-02-01 to 1945-10-17 midnight.
|
||||
# "midnight" should mean 24:00 from the context.
|
||||
#
|
||||
# War Time Order 1942 [1942-05-01] and War Time (No. 2) Order 1942 [1942-09-29]
|
||||
# Appendix to the Statutes of 7 George VI. and the Year 1942. p 34, 43
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA3-PA34
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA3-PA43
|
||||
#
|
||||
# War Time Order 1943 [1943-03-31] and War Time Order 1944 [1943-12-29]
|
||||
# Appendix to the Statutes of 8 George VI. and the Year 1943. p 9-10, 28-29
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA4-PA9
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA4-PA28
|
||||
#
|
||||
# War Time Order 1945 [1945-01-31] and the Order which revoke War Time Order
|
||||
# 1945 [1945-10-16] Appendix to the Statutes of 9 George VI. and the Year
|
||||
# 1945. p 160, 247-248
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA6-PA160
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA6-PA247
|
||||
#
|
||||
# From Sue Williams (2006-12-07):
|
||||
# The Bahamas announced about a month ago that they plan to change their DST
|
||||
# rules to sync with the U.S. starting in 2007....
|
||||
# http://www.jonesbahamas.com/?c=45&a=10412
|
||||
|
||||
Rule Bahamas 1942 only - May 1 24:00 1:00 W
|
||||
Rule Bahamas 1944 only - Dec 31 24:00 0 S
|
||||
Rule Bahamas 1945 only - Feb 1 0:00 1:00 W
|
||||
Rule Bahamas 1945 only - Aug 14 23:00u 1:00 P # Peace
|
||||
Rule Bahamas 1945 only - Oct 17 24:00 0 S
|
||||
Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S
|
||||
Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D
|
||||
|
||||
Zone America/Nassau -5:09:30 - LMT 1912 Mar 2
|
||||
-5:00 Bahamas E%sT 1976
|
||||
-5:00 US E%sT
|
||||
|
||||
# United States
|
||||
#
|
||||
# From Paul Eggert (2018-03-18):
|
||||
@@ -411,6 +756,12 @@ Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill
|
||||
# https://cdnc.ucr.edu/cgi-bin/cdnc?a=d&d=DS19470110
|
||||
# front page reports on end.
|
||||
|
||||
# Trinidad and Tobago
|
||||
Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2
|
||||
-4:00 - AST
|
||||
Link America/Port_of_Spain America/Marigot
|
||||
Link America/Port_of_Spain America/St_Barthelemy
|
||||
|
||||
# Argentina
|
||||
# This entry was intended for the following areas, but has been superseded by
|
||||
# more detailed zones.
|
||||
@@ -434,9 +785,10 @@ Zone America/St_Lucia -4:04:00 - LMT 1890 # Castries
|
||||
-4:04:00 - CMT 1912 # Castries Mean Time
|
||||
-4:00 - AST
|
||||
|
||||
# Virgin Is
|
||||
# US Virgin Is
|
||||
Zone America/St_Thomas -4:19:44 - LMT 1911 Jul # Charlotte Amalie
|
||||
-4:00 - AST
|
||||
Link America/St_Thomas America/Virgin
|
||||
|
||||
# St Vincent and the Grenadines
|
||||
Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown
|
||||
@@ -447,11 +799,36 @@ Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown
|
||||
Zone America/Tortola -4:18:28 - LMT 1911 Jul # Road Town
|
||||
-4:00 - AST
|
||||
|
||||
# Dumont d'Urville, Île des Pétrels, -6640+14001, since 1956-11
|
||||
# <https://en.wikipedia.org/wiki/Dumont_d'Urville_Station> (2005-12-05)
|
||||
#
|
||||
# Another base at Port-Martin, 50km east, began operation in 1947.
|
||||
# It was destroyed by fire on 1952-01-14.
|
||||
#
|
||||
Zone Antarctica/DumontDUrville 0 - -00 1947
|
||||
10:00 - +10 1952 Jan 14
|
||||
0 - -00 1956 Nov
|
||||
10:00 - +10
|
||||
|
||||
# McMurdo, Ross Island, since 1955-12
|
||||
Zone Antarctica/McMurdo 0 - -00 1956
|
||||
12:00 NZ NZ%sT
|
||||
Link Antarctica/McMurdo Antarctica/South_Pole
|
||||
|
||||
# Syowa, Antarctica
|
||||
#
|
||||
# From Hideyuki Suzuki (1999-02-06):
|
||||
# In all Japanese stations, +0300 is used as the standard time.
|
||||
#
|
||||
# Syowa station, which is the first antarctic station of Japan,
|
||||
# was established on 1957-01-29. Since Syowa station is still the main
|
||||
# station of Japan, it's appropriate for the principal location.
|
||||
# See:
|
||||
# NIPR Antarctic Research Activities (1999-08-17)
|
||||
# http://www.nipr.ac.jp/english/ara01.html
|
||||
Zone Antarctica/Syowa 0 - -00 1957 Jan 29
|
||||
3:00 - +03
|
||||
|
||||
# Yemen
|
||||
# Milne says 2:59:54 was the meridian of the saluting battery at Aden,
|
||||
# and that Yemen was at 1:55:56, the meridian of the Hagia Sophia.
|
||||
@@ -459,7 +836,34 @@ Zone Asia/Aden 2:59:54 - LMT 1950
|
||||
3:00 - +03
|
||||
|
||||
# Bahrain
|
||||
Zone Asia/Bahrain 3:22:20 - LMT 1920 # Manamah
|
||||
#
|
||||
# From Paul Eggert (2020-07-23):
|
||||
# Most of this data comes from:
|
||||
# Stewart A. Why Gulf Standard Time is far from standard: the fascinating story
|
||||
# behind the time zone's invention. The National (Abu Dhabi). 2020-07-22.
|
||||
# https://www.thenational.ae/arts-culture/why-gulf-standard-time-is-far-from-standard-the-fascinating-story-behind-the-time-zone-s-invention-1.1052589
|
||||
# Stewart writes that before 1941 some companies in Bahrain were at +0330 and
|
||||
# others at +0323. Reginald George Alban, a British political agent based in
|
||||
# Manama, worked to standardize this, and from 1941-07-20 Bahrain was at
|
||||
# +0330. However, BOAC asked that clocks be moved to gain more light at day's
|
||||
# end, so Bahrain switched to +04 on 1944-01-01.
|
||||
#
|
||||
# Re the 1941 transition, Stewart privately sent me this citation:
|
||||
# "File 16/53 Enquiries Re: Calculation of Local Time", British Library: India
|
||||
# Office Records and Private Papers, IOR/R/15/2/1564, in Qatar Digital Library
|
||||
# https://www.qdl.qa/archive/81055/vdc_100000000282.0x00012b
|
||||
# It says there was no real standard in Bahrain before 1941-07-20.
|
||||
# +0330 was used by steamers of the British India Co, by Petroleum Concessions
|
||||
# and by Cable & Wireless; +0323 was used by the Eastern Bank Ltd, BOAC, and
|
||||
# Bahrein Petroleum (Bapco), and California Arabian Standard Oil Co (Casoc)
|
||||
# adopted DST effective 1941-05-24. Alban suggested adopting DST, R.B. Coomb
|
||||
# of C&W countersuggested +0330, and although C.A. Rodstrom of Casoc (formerly
|
||||
# of Bapco) stated that Bahrain had formerly used +0330 before Bapco arrived
|
||||
# but Bapco switched to +0323 because of "constant confusion", the consensus
|
||||
# was +0330. The government adopted +0330 in 1941-07-20 and companies seem to
|
||||
# have switched by 08-01. No time of day was given for the 1940s transitions.
|
||||
Zone Asia/Bahrain 3:22:20 - LMT 1941 Jul 20 # Manamah
|
||||
3:30 - +0330 1944 Jan 1
|
||||
4:00 - +04 1972 Jun
|
||||
3:00 - +03
|
||||
|
||||
@@ -596,6 +1000,12 @@ Zone Atlantic/St_Helena -0:22:48 - LMT 1890 # Jamestown
|
||||
-0:22:48 - JMT 1951 # Jamestown Mean Time
|
||||
0:00 - GMT
|
||||
|
||||
# King Island
|
||||
Zone Australia/Currie 9:35:28 - LMT 1895 Sep
|
||||
10:00 AT AE%sT 1919 Oct 24
|
||||
10:00 Aus AE%sT 1968 Oct 15
|
||||
10:00 AT AE%sT
|
||||
|
||||
# Northern Ireland
|
||||
Zone Europe/Belfast -0:23:40 - LMT 1880 Aug 2
|
||||
-0:25:21 - DMT 1916 May 21 2:00
|
||||
@@ -678,6 +1088,8 @@ Zone Europe/Skopje 1:25:44 - LMT 1884
|
||||
1:00 - CET 1982 Nov 27
|
||||
1:00 EU CE%sT
|
||||
|
||||
|
||||
|
||||
# Moldova / Transnistria
|
||||
Zone Europe/Tiraspol 1:58:32 - LMT 1880
|
||||
1:55 - CMT 1918 Feb 15 # Chisinau MT
|
||||
@@ -716,10 +1128,22 @@ Zone Indian/Comoro 2:53:04 - LMT 1911 Jul # Moroni, Gran Comoro
|
||||
Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou
|
||||
3:00 - EAT
|
||||
|
||||
# US minor outlying islands
|
||||
# Phoenix Islands, Kiribati
|
||||
# From Paul Eggert (2021-05-27):
|
||||
# Enderbury was inhabited 1860/1880s to mine guano, and 1938-03-06/1942-02-09
|
||||
# for aviation (ostensibly commercial, but military uses foreseen).
|
||||
# The 19th-century dates are approximate. See Pacific/Kanton for
|
||||
# the currently-inhabited representative for this timezone.
|
||||
Zone Pacific/Enderbury 0 - -00 1860
|
||||
-11:24:20 - LMT 1885
|
||||
0 - -00 1938 Mar 6
|
||||
-12:00 - -12 1942 Feb 9
|
||||
0 - -00
|
||||
|
||||
# Johnston
|
||||
Zone Pacific/Johnston -10:00 - HST
|
||||
|
||||
# US minor outlying islands
|
||||
# Midway
|
||||
#
|
||||
# From Mark Brader (2005-01-23):
|
||||
# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
|
||||
@@ -742,3 +1166,7 @@ Zone Pacific/Saipan -14:17:00 - LMT 1844 Dec 31
|
||||
9:00 - +09 1969 Oct
|
||||
10:00 - +10 2000 Dec 23
|
||||
10:00 - ChST # Chamorro Standard Time
|
||||
|
||||
# Local Variables:
|
||||
# coding: utf-8
|
||||
# End:
|
||||
+24
-26
@@ -58,11 +58,12 @@ BEGIN {
|
||||
zone_table, zone_NR >>"/dev/stderr"
|
||||
status = 1
|
||||
}
|
||||
split($1, cca, /,/)
|
||||
cc = cca[1]
|
||||
ccs = input_ccs[zone_NR] = $1
|
||||
coordinates = $2
|
||||
tz = $3
|
||||
comments = $4
|
||||
comments = input_comments[zone_NR] = $4
|
||||
split(ccs, cca, /,/)
|
||||
cc = cca[1]
|
||||
|
||||
# Don't complain about a special case for Crimea in zone.tab.
|
||||
# FIXME: zone.tab should be removed, since it is obsolete.
|
||||
@@ -77,12 +78,9 @@ BEGIN {
|
||||
cc0 = cc
|
||||
tz0 = tz
|
||||
tztab[tz] = 1
|
||||
tz2comments[tz] = comments
|
||||
tz2NR[tz] = zone_NR
|
||||
for (i in cca) {
|
||||
cc = cca[i]
|
||||
cctz = cc tz
|
||||
cctztab[cctz] = 1
|
||||
if (cc2name[cc]) {
|
||||
cc_used[cc]++
|
||||
} else {
|
||||
@@ -99,27 +97,27 @@ BEGIN {
|
||||
}
|
||||
}
|
||||
|
||||
for (cctz in cctztab) {
|
||||
cc = substr (cctz, 1, 2)
|
||||
tz = substr (cctz, 3)
|
||||
if (1 < cc_used[cc]) {
|
||||
comments_needed[tz] = cc
|
||||
}
|
||||
}
|
||||
for (cctz in cctztab) {
|
||||
cc = substr (cctz, 1, 2)
|
||||
tz = substr (cctz, 3)
|
||||
if (!comments_needed[tz] && tz2comments[tz]) {
|
||||
for (i = 1; i <= zone_NR; i++) {
|
||||
ccs = input_ccs[i]
|
||||
if (!ccs) continue
|
||||
comments = input_comments[i]
|
||||
split(ccs, cca, /,/)
|
||||
used_max = 0
|
||||
for (j in cca) {
|
||||
cc = cca[j]
|
||||
if (used_max < cc_used[cc]) {
|
||||
used_max = cc_used[cc]
|
||||
}
|
||||
}
|
||||
if (used_max <= 1 && comments) {
|
||||
printf "%s:%d: unnecessary comment '%s'\n", \
|
||||
zone_table, tz2NR[tz], tz2comments[tz] \
|
||||
>>"/dev/stderr"
|
||||
tz2comments[tz] = 0
|
||||
zone_table, i, comments \
|
||||
>>"/dev/stderr"
|
||||
status = 1
|
||||
} else if (comments_needed[tz] && !tz2comments[tz]) {
|
||||
} else if (1 < cc_used[cc] && !comments) {
|
||||
printf "%s:%d: missing comment for %s\n", \
|
||||
zone_table, tz2NR[tz], comments_needed[tz] \
|
||||
zone_table, i, cc \
|
||||
>>"/dev/stderr"
|
||||
tz2comments[tz] = 1
|
||||
status = 1
|
||||
}
|
||||
}
|
||||
@@ -149,8 +147,8 @@ $1 ~ /^#/ { next }
|
||||
ruleUsed[$2] = 1
|
||||
if ($3 ~ /%/) rulePercentUsed[$2] = 1
|
||||
}
|
||||
if (tz && tz ~ /\//) {
|
||||
if (!tztab[tz]) {
|
||||
if (tz && tz ~ /\// && tz !~ /^Etc\//) {
|
||||
if (!tztab[tz] && FILENAME != "backward") {
|
||||
printf "%s: no data for '%s'\n", zone_table, tz \
|
||||
>>"/dev/stderr"
|
||||
status = 1
|
||||
@@ -173,7 +171,7 @@ END {
|
||||
}
|
||||
}
|
||||
for (tz in tztab) {
|
||||
if (!zoneSeen[tz]) {
|
||||
if (!zoneSeen[tz] && tz !~ /^Etc\//) {
|
||||
printf "%s:%d: no Zone table for '%s'\n", \
|
||||
zone_table, tz2NR[tz], tz >>"/dev/stderr"
|
||||
status = 1
|
||||
|
||||
@@ -3,12 +3,11 @@
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
# These entries are mostly present for historical reasons, so that
|
||||
# people in areas not otherwise covered by the tz files could "zic -l"
|
||||
# to a timezone that was right for their area. These days, the
|
||||
# tz files cover almost all the inhabited world, and the only practical
|
||||
# need now for the entries that are not on UTC are for ships at sea
|
||||
# that cannot use POSIX TZ settings.
|
||||
# These entries are for uses not otherwise covered by the tz database.
|
||||
# Their main practical use is for platforms like Android that lack
|
||||
# support for POSIX-style TZ strings. On such platforms these entries
|
||||
# can be useful if the timezone database is wrong or if a ship or
|
||||
# aircraft at sea is not in a timezone.
|
||||
|
||||
# Starting with POSIX 1003.1-2001, the entries below are all
|
||||
# unnecessary as settings for the TZ environment variable. E.g.,
|
||||
|
||||
+253
-95
@@ -68,7 +68,6 @@
|
||||
# 0:00 GMT BST BDST Greenwich, British Summer
|
||||
# 0:00 GMT IST Greenwich, Irish Summer
|
||||
# 0:00 WET WEST WEMT Western Europe
|
||||
# 0:19:32.13 AMT* NST* Amsterdam, Netherlands Summer (1835-1937)
|
||||
# 1:00 BST British Standard (1968-1971)
|
||||
# 1:00 IST GMT Irish Standard (1968-) with winter DST
|
||||
# 1:00 CET CEST CEMT Central Europe
|
||||
@@ -388,7 +387,7 @@
|
||||
# http://www.irishstatutebook.ie/eli/1926/sro/919/made/en/print
|
||||
# http://www.irishstatutebook.ie/eli/1947/sro/71/made/en/print
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Summer Time Act, 1916
|
||||
Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST
|
||||
Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
|
||||
@@ -529,7 +528,7 @@ Link Europe/London Europe/Isle_of_Man
|
||||
# The following is like GB-Eire and EU, except with standard time in
|
||||
# summer and negative daylight saving time in winter. It is for when
|
||||
# negative SAVE values are used.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Eire 1971 only - Oct 31 2:00u -1:00 -
|
||||
Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 -
|
||||
Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 -
|
||||
@@ -566,7 +565,7 @@ Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
|
||||
# predecessor organization, the European Communities.
|
||||
# For brevity they are called "EU rules" elsewhere in this file.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
|
||||
Rule EU 1977 only - Sep lastSun 1:00u 0 -
|
||||
Rule EU 1978 only - Oct 1 1:00u 0 -
|
||||
@@ -606,13 +605,13 @@ Rule C-Eur 1944 only - Oct 2 2:00s 0 -
|
||||
# corrected in version 2008d). The circumstantial evidence is simply the
|
||||
# tz database itself, as seen below:
|
||||
#
|
||||
# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
|
||||
# Zone Europe/Paris ...
|
||||
# 0:00 France WE%sT 1945 Sep 16 3:00
|
||||
#
|
||||
# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
|
||||
# Zone Europe/Monaco ...
|
||||
# 0:00 France WE%sT 1945 Sep 16 3:00
|
||||
#
|
||||
# Zone Europe/Belgrade 1:22:00 - LMT 1884
|
||||
# Zone Europe/Belgrade ...
|
||||
# 1:00 1:00 CEST 1945 Sep 16 2:00s
|
||||
#
|
||||
# Rule France 1945 only - Sep 16 3:00 0 -
|
||||
@@ -658,7 +657,7 @@ Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
|
||||
#
|
||||
# The 1917-1921 decree URLs are from Alexander Belopolsky (2016-08-23).
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time
|
||||
#
|
||||
# Decree No. 142 (1917-12-22) http://istmat.info/node/28137
|
||||
@@ -772,7 +771,7 @@ Zone EET 2:00 EU EE%sT
|
||||
|
||||
|
||||
# Albania
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Albania 1940 only - Jun 16 0:00 1:00 S
|
||||
Rule Albania 1942 only - Nov 2 3:00 0 -
|
||||
Rule Albania 1943 only - Mar 29 2:00 1:00 S
|
||||
@@ -822,11 +821,11 @@ Zone Europe/Andorra 0:06:04 - LMT 1901
|
||||
# Shanks & Pottenger give 02:00, the BEV 00:00. Go with the BEV,
|
||||
# and guess 02:00 for 1945-04-12.
|
||||
|
||||
# From Alois Triendl (2019-07-22):
|
||||
# From Alois Treindl (2019-07-22):
|
||||
# In 1946 the end of DST was on Monday, 7 October 1946, at 3:00 am.
|
||||
# Shanks had this right. Source: Die Weltpresse, 5. Oktober 1946, page 5.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Austria 1920 only - Apr 5 2:00s 1:00 S
|
||||
Rule Austria 1920 only - Sep 13 2:00s 0 -
|
||||
Rule Austria 1946 only - Apr 14 2:00s 1:00 S
|
||||
@@ -913,7 +912,7 @@ Zone Europe/Minsk 1:50:16 - LMT 1880
|
||||
# The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
|
||||
# Assume Brussels switched to WET in 1918 when the armistice took effect.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Belgium 1918 only - Mar 9 0:00s 1:00 S
|
||||
Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 -
|
||||
Rule Belgium 1919 only - Mar 1 23:00s 1:00 S
|
||||
@@ -973,7 +972,7 @@ Zone Europe/Brussels 0:17:30 - LMT 1880
|
||||
# EET -> EETDST is in 03:00 Local time in last Sunday of March ...
|
||||
# EETDST -> EET is in 04:00 Local time in last Sunday of October
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Bulg 1979 only - Mar 31 23:00 1:00 S
|
||||
Rule Bulg 1979 only - Oct 1 1:00 0 -
|
||||
Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S
|
||||
@@ -1005,7 +1004,7 @@ Zone Europe/Sofia 1:33:16 - LMT 1880
|
||||
# We know of no English-language name for historical Czech winter time;
|
||||
# abbreviate it as "GMT", as it happened to be GMT.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S
|
||||
Rule Czech 1945 only - Oct 1 2:00s 0 -
|
||||
Rule Czech 1946 only - May 6 2:00s 1:00 S
|
||||
@@ -1029,17 +1028,16 @@ Zone Europe/Prague 0:57:44 - LMT 1850
|
||||
# Denmark, Faroe Islands, and Greenland
|
||||
|
||||
# From Jesper Nørgaard Welen (2005-04-26):
|
||||
# http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
|
||||
# [introducing standard time] was in effect from 1894-01-01....
|
||||
# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
|
||||
# the law [introducing standard time] was in effect from 1894-01-01....
|
||||
# The page https://www.retsinformation.dk/eli/lta/1893/83
|
||||
# confirms this, and states that the law was put forth 1893-03-29.
|
||||
#
|
||||
# The EU [actually, EEC and Euratom] treaty with effect from 1973:
|
||||
# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
|
||||
# https://www.retsinformation.dk/eli/lta/1972/21100
|
||||
#
|
||||
# This provoked a new law from 1974 to make possible summer time changes
|
||||
# in subsequent decrees with the law
|
||||
# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL
|
||||
# https://www.retsinformation.dk/eli/lta/1974/223
|
||||
#
|
||||
# It seems however that no decree was set forward until 1980. I have
|
||||
# not found any decree, but in another related law, the effecting DST
|
||||
@@ -1051,7 +1049,7 @@ Zone Europe/Prague 0:57:44 - LMT 1850
|
||||
# The law is about the management of the extra hour, concerning
|
||||
# working hours reported and effect on obligatory-rest rules (which
|
||||
# was suspended on that night):
|
||||
# http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL
|
||||
# https://web.archive.org/web/20140104053304/https://www.retsinformation.dk/Forms/R0710.aspx?id=60267
|
||||
|
||||
# From Jesper Nørgaard Welen (2005-06-11):
|
||||
# The Herning Folkeblad (1980-09-26) reported that the night between
|
||||
@@ -1061,7 +1059,7 @@ Zone Europe/Prague 0:57:44 - LMT 1850
|
||||
# Hence the "02:00" of the 1980 law refers to standard time, not
|
||||
# wall-clock time, and so the EU rules were in effect in 1980.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Denmark 1916 only - May 14 23:00 1:00 S
|
||||
Rule Denmark 1916 only - Sep 30 23:00 0 -
|
||||
Rule Denmark 1940 only - May 15 0:00 1:00 S
|
||||
@@ -1163,7 +1161,7 @@ Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Tórshavn
|
||||
# http://naalakkersuisut.gl/~/media/Nanoq/Files/Attached%20Files/Engelske-tekster/Legislation/Executive%20Order%20National%20Park.rtf
|
||||
# It is their only National Park.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D
|
||||
Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
|
||||
Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
|
||||
@@ -1294,7 +1292,7 @@ Zone Europe/Tallinn 1:39:00 - LMT 1880
|
||||
# From Paul Eggert (2014-06-14):
|
||||
# Go with Oja over Shanks.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Finland 1942 only - Apr 2 24:00 1:00 S
|
||||
Rule Finland 1942 only - Oct 4 1:00 0 -
|
||||
Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S
|
||||
@@ -1326,10 +1324,58 @@ Link Europe/Helsinki Europe/Mariehamn
|
||||
# Françoise Gauquelin, Problèmes de l'heure résolus en astrologie,
|
||||
# Guy Trédaniel, Paris 1987
|
||||
|
||||
# From Michael Deckers (2020-06-11):
|
||||
# the law of 1891 <https://gallica.bnf.fr/ark:/12148/bpt6k64415343.texteImage>
|
||||
# was published on 1891-03-15, so it could only take force on 1891-03-16.
|
||||
|
||||
# From Michael Deckers (2020-06-10):
|
||||
# Le Gaulois, 1911-03-11, page 1/6, online at
|
||||
# https://www.retronews.fr/societe/echo-de-presse/2018/01/29/1911-change-lheure-de-paris
|
||||
# ... [ Instantly, all pressure driven clock dials halted... Nine minutes and
|
||||
# twenty-one seconds later the hands resumed their circular motion. ]
|
||||
# There are also precise reports about how the change was prepared in train
|
||||
# stations: all the publicly visible clocks stopped at midnight railway time
|
||||
# (or were covered), only the chief of service had a watch, labeled
|
||||
# "Heure ancienne", that he kept running until it reached 00:04:21, when
|
||||
# he announced "Heure nouvelle". See the "Le Petit Journal 1911-03-11".
|
||||
# https://gallica.bnf.fr/ark:/12148/bpt6k6192911/f1.item.zoom
|
||||
#
|
||||
# From Michael Deckers (2020-06-12):
|
||||
# That "all French clocks stopped" for 00:09:21 is a misreading of French
|
||||
# newspapers; this sort of adjustment applies only to certain
|
||||
# remote-controlled clocks ("pendules pneumatiques", of which there existed
|
||||
# perhaps a dozen in Paris, and which simply could not be set back remotely),
|
||||
# but not to all the clocks in all French towns and villages. For instance,
|
||||
# the following story in the "Courrier de Saône-et-Loire" 1911-03-11, page 2:
|
||||
# only works if legal time was stepped back (was not monotone): ...
|
||||
# [One can observe that children who had been born at midnight less 5
|
||||
# minutes and who had died at midnight of the old time, would turn out to
|
||||
# be dead before being born, time having been set back and having
|
||||
# suppressed 9 minutes and 25 seconds of their existence, that is, more
|
||||
# than they could spend.]
|
||||
#
|
||||
# From Paul Eggert (2020-06-12):
|
||||
# French time in railway stations was legally five minutes behind civil time,
|
||||
# which explains why railway "old time" ran to 00:04:21 instead of to 00:09:21.
|
||||
# The law's text (which Michael Deckers noted is at
|
||||
# <https://gallica.bnf.fr/ark:/12148/bpt6k2022333z/f2>) says only that
|
||||
# at 1911-03-11 00:00 legal time was that of Paris mean time delayed by
|
||||
# nine minutes and twenty-one seconds, and does not say how the
|
||||
# transition from Paris mean time was to occur.
|
||||
#
|
||||
# tzdb has no way to represent stopped clocks. As the railway practice
|
||||
# was to keep a watch running on "old time" to decide when to restart
|
||||
# the other clocks, this could be modeled as a transition for "old time" at
|
||||
# 00:09:21. However, since the law was ambiguous and clocks outside railway
|
||||
# stations were probably done haphazardly with the popular impression being
|
||||
# that the transition was done at 00:00 "old time", simply leave the time
|
||||
# blank; this causes zic to default to 00:00 "old time" which is good enough.
|
||||
# Do something similar for the 1891-03-16 transition. There are similar
|
||||
# problems in Algiers, Monaco and Tunis.
|
||||
|
||||
#
|
||||
# Shank & Pottenger seem to use '24:00' ambiguously; resolve it with Whitman.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule France 1916 only - Jun 14 23:00s 1:00 S
|
||||
Rule France 1916 1919 - Oct Sun>=1 23:00s 0 -
|
||||
Rule France 1917 only - Mar 24 23:00s 1:00 S
|
||||
@@ -1389,13 +1435,11 @@ Rule France 1945 only - Sep 16 3:00 0 -
|
||||
# go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
|
||||
Rule France 1976 only - Mar 28 1:00 1:00 S
|
||||
Rule France 1976 only - Sep 26 1:00 0 -
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
|
||||
# but Howse quotes the actual French legislation as saying 0:09:21.
|
||||
# Go with Howse. Howse writes that the time in France was officially based
|
||||
# Howse writes that the time in France was officially based
|
||||
# on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
|
||||
0:09:21 - PMT 1911 Mar 11 0:01 # Paris MT
|
||||
Zone Europe/Paris 0:09:21 - LMT 1891 Mar 16
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
|
||||
0:00 France WE%sT 1940 Jun 14 23:00
|
||||
# Le Corre says Paris stuck with occupied-France time after the liberation;
|
||||
@@ -1424,7 +1468,7 @@ Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
|
||||
# this was equivalent to UT +03, not +04.
|
||||
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Germany 1946 only - Apr 14 2:00s 1:00 S
|
||||
Rule Germany 1946 only - Oct 7 2:00s 0 -
|
||||
Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
|
||||
@@ -1476,7 +1520,7 @@ Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00s
|
||||
1:00 EU CE%sT
|
||||
|
||||
# Greece
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
|
||||
Rule Greece 1932 only - Jul 7 0:00 1:00 S
|
||||
Rule Greece 1932 only - Sep 1 0:00 0 -
|
||||
@@ -1511,38 +1555,73 @@ Zone Europe/Athens 1:34:52 - LMT 1895 Sep 14
|
||||
2:00 EU EE%sT
|
||||
|
||||
# Hungary
|
||||
# From Paul Eggert (2014-07-15):
|
||||
# Dates for 1916-1945 are taken from:
|
||||
# Oross A. Jelen a múlt jövője: a nyári időszámítás Magyarországon 1916-1945.
|
||||
# National Archives of Hungary (2012-10-29).
|
||||
# http://mnl.gov.hu/a_het_dokumentuma/a_nyari_idoszamitas_magyarorszagon_19161945.html
|
||||
# This source does not always give times, which are taken from Shanks
|
||||
# & Pottenger (which disagree about the dates).
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Hungary 1918 only - Apr 1 3:00 1:00 S
|
||||
Rule Hungary 1918 only - Sep 16 3:00 0 -
|
||||
Rule Hungary 1919 only - Apr 15 3:00 1:00 S
|
||||
Rule Hungary 1919 only - Nov 24 3:00 0 -
|
||||
|
||||
# From Michael Deckers (2020-06-09):
|
||||
# an Austrian encyclopedia of railroads of 1913, online at
|
||||
# http://www.zeno.org/Roell-1912/A/Eisenbahnzeit
|
||||
# says that the switch [to CET] happened on 1890-11-01.
|
||||
|
||||
# From Géza Nyáry (2020-06-07):
|
||||
# Data for 1918-1983 are based on the archive database of Library Hungaricana.
|
||||
# The dates are collected from original, scanned governmental orders,
|
||||
# bulletins, instructions and public press.
|
||||
# [See URLs below.]
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1918/?pg=238
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1919/?pg=808
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1920/?pg=201
|
||||
Rule Hungary 1918 1919 - Apr 15 2:00 1:00 S
|
||||
Rule Hungary 1918 1920 - Sep Mon>=15 3:00 0 -
|
||||
Rule Hungary 1920 only - Apr 5 2:00 1:00 S
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1945/?pg=882
|
||||
Rule Hungary 1945 only - May 1 23:00 1:00 S
|
||||
Rule Hungary 1945 only - Nov 1 0:00 0 -
|
||||
Rule Hungary 1945 only - Nov 1 1:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_03/?pg=49
|
||||
Rule Hungary 1946 only - Mar 31 2:00s 1:00 S
|
||||
Rule Hungary 1946 1949 - Oct Sun>=1 2:00s 0 -
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_09/?pg=54
|
||||
Rule Hungary 1946 only - Oct 7 2:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1947_04_1__001-123/?pg=90
|
||||
# https://library.hungaricana.hu/hu/view/DunantuliNaplo_1947_09/?pg=128
|
||||
# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1948_03_3__001-123/?pg=304
|
||||
# https://library.hungaricana.hu/hu/view/Zala_1948_09/?pg=64
|
||||
# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=53
|
||||
# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=160
|
||||
# https://library.hungaricana.hu/hu/view/UjSzo_1949_01-04/?pg=102
|
||||
# https://library.hungaricana.hu/hu/view/KeletMagyarorszag_1949_03/?pg=96
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1949_09/?pg=94
|
||||
Rule Hungary 1947 1949 - Apr Sun>=4 2:00s 1:00 S
|
||||
Rule Hungary 1950 only - Apr 17 2:00s 1:00 S
|
||||
Rule Hungary 1950 only - Oct 23 2:00s 0 -
|
||||
Rule Hungary 1954 1955 - May 23 0:00 1:00 S
|
||||
Rule Hungary 1954 1955 - Oct 3 0:00 0 -
|
||||
Rule Hungary 1956 only - Jun Sun>=1 0:00 1:00 S
|
||||
Rule Hungary 1956 only - Sep lastSun 0:00 0 -
|
||||
Rule Hungary 1957 only - Jun Sun>=1 1:00 1:00 S
|
||||
Rule Hungary 1957 only - Sep lastSun 3:00 0 -
|
||||
Rule Hungary 1980 only - Apr 6 1:00 1:00 S
|
||||
Rule Hungary 1947 1949 - Oct Sun>=1 2:00s 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1954/?pg=513
|
||||
Rule Hungary 1954 only - May 23 0:00 1:00 S
|
||||
Rule Hungary 1954 only - Oct 3 0:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1955/?pg=398
|
||||
Rule Hungary 1955 only - May 22 2:00 1:00 S
|
||||
Rule Hungary 1955 only - Oct 2 3:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/HevesMegyeiNepujsag_1956_06/?pg=0
|
||||
# https://library.hungaricana.hu/hu/view/EszakMagyarorszag_1956_06/?pg=6
|
||||
# https://library.hungaricana.hu/hu/view/SzolnokMegyeiNeplap_1957_04/?pg=120
|
||||
# https://library.hungaricana.hu/hu/view/PestMegyeiHirlap_1957_09/?pg=143
|
||||
Rule Hungary 1956 1957 - Jun Sun>=1 2:00 1:00 S
|
||||
Rule Hungary 1956 1957 - Sep lastSun 3:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1980/?pg=189
|
||||
Rule Hungary 1980 only - Apr 6 0:00 1:00 S
|
||||
Rule Hungary 1980 only - Sep 28 1:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1980/?pg=1227
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1981_01/?pg=79
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1982/?pg=115
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1983/?pg=85
|
||||
Rule Hungary 1981 1983 - Mar lastSun 0:00 1:00 S
|
||||
Rule Hungary 1981 1983 - Sep lastSun 1:00 0 -
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
|
||||
Zone Europe/Budapest 1:16:20 - LMT 1890 Nov 1
|
||||
1:00 C-Eur CE%sT 1918
|
||||
1:00 Hungary CE%sT 1941 Apr 8
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1941/?pg=1204
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1942/?pg=3955
|
||||
1:00 Hungary CE%sT 1941 Apr 7 23:00
|
||||
1:00 C-Eur CE%sT 1945
|
||||
1:00 Hungary CE%sT 1980 Sep 28 2:00s
|
||||
1:00 Hungary CE%sT 1984
|
||||
1:00 EU CE%sT
|
||||
|
||||
# Iceland
|
||||
@@ -1578,7 +1657,7 @@ Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
|
||||
# The information below is taken from the 1988 Almanak; see
|
||||
# http://www.almanak.hi.is/klukkan.html
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Iceland 1917 1919 - Feb 19 23:00 1:00 -
|
||||
Rule Iceland 1917 only - Oct 21 1:00 0 -
|
||||
Rule Iceland 1918 1919 - Nov 16 1:00 0 -
|
||||
@@ -1656,21 +1735,24 @@ Zone Atlantic/Reykjavik -1:28 - LMT 1908
|
||||
# advanced to sixty minutes later starting at hour two on 1944-04-02; ...
|
||||
# Starting at hour three on the date 1944-09-17 standard time will be resumed.
|
||||
#
|
||||
# From Alois Triendl (2019-07-02):
|
||||
# From Alois Treindl (2019-07-02):
|
||||
# I spent 6 Euros to buy two archive copies of Il Messaggero, a Roman paper,
|
||||
# for 1 and 2 April 1944. The edition of 2 April has this note: "Tonight at 2
|
||||
# am, put forward the clock by one hour. Remember that in the night between
|
||||
# today and Monday the 'ora legale' will come in force again." That makes it
|
||||
# clear that in Rome the change was on Monday, 3 April 1944 at 2 am.
|
||||
#
|
||||
# From Paul Eggert (2016-10-27):
|
||||
# From Paul Eggert (2021-10-05):
|
||||
# Go with INRiM for DST rules, except as corrected by Inglis for 1944
|
||||
# for the Kingdom of Italy. This is consistent with Renzo Baldini.
|
||||
# Model Rome's occupation by using C-Eur rules from 1943-09-10
|
||||
# to 1944-06-04; although Rome was an open city during this period, it
|
||||
# was effectively controlled by Germany.
|
||||
# was effectively controlled by Germany. Using C-Eur is consistent
|
||||
# with Treindl's comment about Rome in April 1944, as the "Rule Italy"
|
||||
# lines during German occupation do not affect Europe/Rome
|
||||
# (though they do affect Europe/Malta).
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Italy 1916 only - Jun 3 24:00 1:00 S
|
||||
Rule Italy 1916 1917 - Sep 30 24:00 0 -
|
||||
Rule Italy 1917 only - Mar 31 24:00 1:00 S
|
||||
@@ -1720,6 +1802,10 @@ Zone Europe/Rome 0:49:56 - LMT 1866 Dec 12
|
||||
1:00 Italy CE%sT 1980
|
||||
1:00 EU CE%sT
|
||||
|
||||
# Kosovo
|
||||
# See Europe/Belgrade.
|
||||
|
||||
|
||||
Link Europe/Rome Europe/Vatican
|
||||
Link Europe/Rome Europe/San_Marino
|
||||
|
||||
@@ -1780,7 +1866,7 @@ Link Europe/Rome Europe/San_Marino
|
||||
# urged Lithuania and Estonia to adopt a similar time policy, but it
|
||||
# appears that they will not do so....
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Latvia 1989 1996 - Mar lastSun 2:00s 1:00 S
|
||||
Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 -
|
||||
|
||||
@@ -1873,7 +1959,7 @@ Zone Europe/Vilnius 1:41:16 - LMT 1880
|
||||
# Luxembourg
|
||||
# Whitman disagrees with most of these dates in minor ways;
|
||||
# go with Shanks & Pottenger.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Lux 1916 only - May 14 23:00 1:00 S
|
||||
Rule Lux 1916 only - Oct 1 1:00 0 -
|
||||
Rule Lux 1917 only - Apr 28 23:00 1:00 S
|
||||
@@ -1914,7 +2000,7 @@ Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun
|
||||
# From Paul Eggert (2016-10-21):
|
||||
# Assume 1900-1972 was like Rome, overriding Shanks.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Malta 1973 only - Mar 31 0:00s 1:00 S
|
||||
Rule Malta 1973 only - Sep 29 0:00s 0 -
|
||||
Rule Malta 1974 only - Apr 21 0:00s 1:00 S
|
||||
@@ -1987,7 +2073,7 @@ Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta
|
||||
# says the 2014-03-30 spring-forward transition was at 02:00 local time.
|
||||
# Guess that since 1997 Moldova has switched one hour before the EU.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
|
||||
Rule Moldova 1997 max - Oct lastSun 3:00 0 -
|
||||
|
||||
@@ -2005,11 +2091,24 @@ Zone Europe/Chisinau 1:55:20 - LMT 1880
|
||||
2:00 Moldova EE%sT
|
||||
|
||||
# Monaco
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
#
|
||||
# From Michael Deckers (2020-06-12):
|
||||
# In the "Journal de Monaco" of 1892-05-24, online at
|
||||
# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/b1c67c12c5af11b41ea888fb048e4fe8.pdf
|
||||
# we read: ...
|
||||
# [In virtue of a Sovereign Ordinance of the May 13 of the current [year],
|
||||
# legal time in the Principality will be set to, from the date of June 1,
|
||||
# 1892 onwards, to the meridian of Paris, as in France.]
|
||||
# In the "Journal de Monaco" of 1911-03-28, online at
|
||||
# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/de74ffb7db53d4f599059fe8f0ed482a.pdf
|
||||
# we read an ordinance of 1911-03-16: ...
|
||||
# [Legal time in the Principality will be set, from the date of promulgation
|
||||
# of the present ordinance, to legal time in France.... Consequently, legal
|
||||
# time will be retarded by 9 minutes and 21 seconds.]
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
Zone Europe/Monaco 0:29:32 - LMT 1892 Jun 1
|
||||
0:09:21 - PMT 1911 Mar 29 # Paris Mean Time
|
||||
0:00 France WE%sT 1945 Sep 16 3:00
|
||||
1:00 France CE%sT 1977
|
||||
1:00 EU CE%sT
|
||||
@@ -2057,7 +2156,11 @@ Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
|
||||
# The data entries before 1945 are taken from
|
||||
# https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From Paul Eggert (2021-05-09):
|
||||
# I invented the abbreviations AMT for Amsterdam Mean Time and NST for
|
||||
# Netherlands Summer Time, used in the Netherlands from 1835 to 1937.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
|
||||
Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
|
||||
Rule Neth 1917 only - Apr 16 2:00s 1:00 NST
|
||||
@@ -2094,7 +2197,7 @@ Zone Europe/Amsterdam 0:19:32 - LMT 1835
|
||||
# Norway
|
||||
# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
|
||||
# Pottenger.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Norway 1916 only - May 22 1:00 1:00 S
|
||||
Rule Norway 1916 only - Sep 30 0:00 0 -
|
||||
Rule Norway 1945 only - Apr 2 2:00s 1:00 S
|
||||
@@ -2163,7 +2266,7 @@ Link Europe/Oslo Arctic/Longyearbyen
|
||||
# The 1919 dates and times can be found in Tygodnik Urzędowy nr 1 (1919-03-20),
|
||||
# <http://www.wbc.poznan.pl/publication/32156> pp 1-2.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Poland 1918 1919 - Sep 16 2:00s 0 -
|
||||
Rule Poland 1919 only - Apr 15 2:00s 1:00 S
|
||||
Rule Poland 1944 only - Apr 3 2:00s 1:00 S
|
||||
@@ -2234,7 +2337,7 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880
|
||||
# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
|
||||
# harmonized with EU rules), and that they stayed +0:00 that winter.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
|
||||
# done every year, depending on what Spain did, because of railroad schedules.
|
||||
# Go with Shanks & Pottenger.
|
||||
@@ -2283,12 +2386,10 @@ Rule Port 1943 1945 - Aug Sat>=25 22:00s 1:00 S
|
||||
Rule Port 1944 1945 - Apr Sat>=21 22:00s 2:00 M
|
||||
Rule Port 1946 only - Apr Sat>=1 23:00s 1:00 S
|
||||
Rule Port 1946 only - Oct Sat>=1 23:00s 0 -
|
||||
Rule Port 1947 1949 - Apr Sun>=1 2:00s 1:00 S
|
||||
Rule Port 1947 1949 - Oct Sun>=1 2:00s 0 -
|
||||
# Shanks & Pottenger say DST was observed in 1950; go with Whitman.
|
||||
# Whitman says DST was not observed in 1950; go with Shanks & Pottenger.
|
||||
# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger.
|
||||
Rule Port 1951 1965 - Apr Sun>=1 2:00s 1:00 S
|
||||
Rule Port 1951 1965 - Oct Sun>=1 2:00s 0 -
|
||||
Rule Port 1947 1965 - Apr Sun>=1 2:00s 1:00 S
|
||||
Rule Port 1947 1965 - Oct Sun>=1 2:00s 0 -
|
||||
Rule Port 1977 only - Mar 27 0:00s 1:00 S
|
||||
Rule Port 1977 only - Sep 25 0:00s 0 -
|
||||
Rule Port 1978 1979 - Apr Sun>=1 0:00s 1:00 S
|
||||
@@ -2347,7 +2448,7 @@ Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal
|
||||
# assume that Romania and Moldova switched to EU rules in 1997,
|
||||
# the same year as Bulgaria.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Romania 1932 only - May 21 0:00s 1:00 S
|
||||
Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 -
|
||||
Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 S
|
||||
@@ -2525,7 +2626,7 @@ Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct
|
||||
# Although Shanks lists 1945-01-01 as the date for transition from
|
||||
# +01/+02 to +02/+03, more likely this is a placeholder. Guess that
|
||||
# the transition occurred at 1945-04-10 00:00, which is about when
|
||||
# Königsberg surrendered to Soviet troops. (Thanks to Alois Triendl.)
|
||||
# Königsberg surrendered to Soviet troops. (Thanks to Alois Treindl.)
|
||||
|
||||
# From Paul Eggert (2016-03-18):
|
||||
# The 1989 transition is from USSR act No. 227 (1989-03-14).
|
||||
@@ -2684,8 +2785,26 @@ Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr
|
||||
# says he remembers that Samara opted out of the 1992-01-19 exception
|
||||
# 2 days before the switch.
|
||||
#
|
||||
# From Alois Treindl (2022-02-15):
|
||||
# the Russian wikipedia page
|
||||
# https://ru.wikipedia.org/wiki/Московское_время#Перемещение_границы_применения_московского_времени_на_восток
|
||||
# contains the sentence (in Google translation) "In the autumn of
|
||||
# 1981, Arkhangelsk, Vologda, Yaroslavl, Ivanovo, Vladimir, Ryazan,
|
||||
# Lipetsk, Voronezh, Rostov-on-Don, Krasnodar and regions to the east
|
||||
# of those named (about 30 in total) parted ways with Moscow time.
|
||||
# However, the convenience of common time with Moscow turned out to be
|
||||
# decisive - in 1982, these regions again switched to Moscow time."
|
||||
# Shanks International atlas has similar information, and also the
|
||||
# Russian book Zaitsev A., Kutalev D. A new astrologer's reference
|
||||
# book. Coordinates of cities and time corrections, - The World of
|
||||
# Urania, 2012 (Russian: Зайцев А., Куталёв Д., Новый справочник
|
||||
# астролога. Координаты городов и временные поправки).
|
||||
# To me it seems that an extra zone is needed, which starts with LMT
|
||||
# util 1919, later follows Moscow since 1930, but deviates from it
|
||||
# between 1 October 1981 until 1 April 1982.
|
||||
#
|
||||
# From Paul Eggert (2016-03-18):
|
||||
#
|
||||
# From Paul Eggert (2022-02-15):
|
||||
# Given the above, we appear to be missing some Zone entries for the
|
||||
# chaotic early 1980s in Russia. It's not clear what these entries
|
||||
# should be. For now, sweep this under the rug and just document the
|
||||
@@ -2732,7 +2851,7 @@ Zone Europe/Simferopol 2:16:24 - LMT 1880
|
||||
1:00 C-Eur CE%sT 1944 Apr 13
|
||||
3:00 Russia MSK/MSD 1990
|
||||
3:00 - MSK 1990 Jul 1 2:00
|
||||
2:00 - EET 1992
|
||||
2:00 - EET 1992 Mar 20
|
||||
# Central Crimea used Moscow time 1994/1997.
|
||||
#
|
||||
# From Paul Eggert (2006-03-22):
|
||||
@@ -2742,7 +2861,7 @@ Zone Europe/Simferopol 2:16:24 - LMT 1880
|
||||
# sometime between the 1994 DST switches. Shanks & Pottenger simply say
|
||||
# 1994-09-25 03:00, but that can't be right. For now, guess it
|
||||
# changed in May.
|
||||
2:00 E-Eur EE%sT 1994 May
|
||||
2:00 C-Eur EE%sT 1994 May
|
||||
# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
|
||||
3:00 E-Eur MSK/MSD 1996 Mar 31 0:00s
|
||||
3:00 1:00 MSD 1996 Oct 27 3:00s
|
||||
@@ -2799,6 +2918,19 @@ Zone Europe/Astrakhan 3:12:12 - LMT 1924 May
|
||||
# The law has been published today on
|
||||
# http://publication.pravo.gov.ru/Document/View/0001201810110037
|
||||
|
||||
# From Alexander Krivenyshev (2020-11-27):
|
||||
# The State Duma approved (Nov 24, 2020) the transition of the Volgograd
|
||||
# region to the Moscow time zone....
|
||||
# https://sozd.duma.gov.ru/bill/1012130-7
|
||||
#
|
||||
# From Stepan Golosunov (2020-12-05):
|
||||
# Currently proposed text for the second reading (expected on December 8) ...
|
||||
# changes the date to December 27. https://v1.ru/text/gorod/2020/12/04/69601031/
|
||||
#
|
||||
# From Stepan Golosunov (2020-12-22):
|
||||
# The law was published today on
|
||||
# http://publication.pravo.gov.ru/Document/View/0001202012220002
|
||||
|
||||
Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
||||
3:00 - +03 1930 Jun 21
|
||||
4:00 - +04 1961 Nov 11
|
||||
@@ -2808,7 +2940,8 @@ Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
||||
3:00 Russia +03/+04 2011 Mar 27 2:00s
|
||||
4:00 - +04 2014 Oct 26 2:00s
|
||||
3:00 - +03 2018 Oct 28 2:00s
|
||||
4:00 - +04
|
||||
4:00 - +04 2020 Dec 27 2:00s
|
||||
3:00 - +03
|
||||
|
||||
# From Paul Eggert (2016-11-11):
|
||||
# Europe/Saratov covers:
|
||||
@@ -3445,14 +3578,14 @@ Link Europe/Prague Europe/Bratislava
|
||||
# fallback transition from the next day's 00:59... to 00:00.
|
||||
|
||||
# From Michael Deckers (2016-12-15):
|
||||
# The Royal Decree of 1900-06-26 quoted by Planesas, online at
|
||||
# The Royal Decree of 1900-07-26 quoted by Planesas, online at
|
||||
# https://www.boe.es/datos/pdfs/BOE//1900/209/A00383-00384.pdf
|
||||
# says in its article 5 (my translation):
|
||||
# These dispositions will enter into force beginning with the
|
||||
# instant at which, according to the time indicated in article 1,
|
||||
# the 1st day of January of 1901 will begin.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Spain 1918 only - Apr 15 23:00 1:00 S
|
||||
Rule Spain 1918 1919 - Oct 6 24:00s 0 -
|
||||
Rule Spain 1919 only - Apr 6 23:00 1:00 S
|
||||
@@ -3576,6 +3709,9 @@ Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C.
|
||||
#
|
||||
# Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
|
||||
|
||||
# An extra-special abbreviation style is SET for Swedish Time (svensk
|
||||
# normaltid) 1879-1899, 3° west of the Stockholm Observatory.
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
|
||||
1:00:14 - SET 1900 Jan 1 # Swedish Time
|
||||
@@ -3589,7 +3725,7 @@ Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
|
||||
# By the end of the 18th century clocks and watches became commonplace
|
||||
# and their performance improved enormously. Communities began to keep
|
||||
# mean time in preference to apparent time - Geneva from 1780 ....
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# From Whitman (who writes "Midnight?"):
|
||||
# Rule Swiss 1940 only - Nov 2 0:00 1:00 S
|
||||
# Rule Swiss 1940 only - Dec 31 0:00 0 -
|
||||
@@ -3676,7 +3812,7 @@ Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
|
||||
# 1853-07-16, though it probably occurred at some other date in Zurich, and
|
||||
# legal civil time probably changed at still some other transition date.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
|
||||
Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -3825,7 +3961,7 @@ Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 # See above comment.
|
||||
# Although Google Translate misfires on that source, it looks like
|
||||
# Turkey reversed last month's decision, and so will stay at +03.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Turkey 1916 only - May 1 0:00 1:00 S
|
||||
Rule Turkey 1916 only - Oct 1 0:00 0 -
|
||||
Rule Turkey 1920 only - Mar 28 0:00 1:00 S
|
||||
@@ -3892,6 +4028,27 @@ Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
|
||||
|
||||
# Ukraine
|
||||
#
|
||||
# From Alois Triendl (2014-03-01):
|
||||
# REGULATION A N O V A on March 20, 1992 N 139 ... means that from
|
||||
# 1992 on, Ukraine had DST with begin time at 02:00 am, on last Sunday
|
||||
# in March, and end time 03:00 am, last Sunday in September....
|
||||
# CABINET OF MINISTERS OF UKRAINE RESOLUTION on May 13, 1996 N 509
|
||||
# "On the order of computation time on the territory of Ukraine" ....
|
||||
# As this cabinet decision is from May 1996, it seems likely that the
|
||||
# transition in March 1996, which predates it, was still at 2:00 am
|
||||
# and not at 3:00 as would have been under EU rules.
|
||||
# This is why I have set the change to EU rules into May 1996,
|
||||
# so that the change in March is stil covered by the Ukraine rule.
|
||||
# The next change in October 1996 happened under EU rules....
|
||||
# TZ database holds three other zones for Ukraine.... I have not yet
|
||||
# worked out the consequences for these three zones, as we (me and my
|
||||
# US colleague David Cochrane) are still trying to get more
|
||||
# information upon these local deviations from Kiev rules.
|
||||
#
|
||||
# From Paul Eggert (2022-02-08):
|
||||
# For now, assume that Ukraine's other three zones followed the same rules,
|
||||
# except that Crimea switched to Moscow time in 1994 as described elsewhere.
|
||||
|
||||
# From Igor Karpov, who works for the Ukrainian Ministry of Justice,
|
||||
# via Garrett Wollman (2003-01-27):
|
||||
# BTW, I've found the official document on this matter. It's government
|
||||
@@ -3981,9 +4138,9 @@ Zone Europe/Kiev 2:02:04 - LMT 1880
|
||||
1:00 C-Eur CE%sT 1943 Nov 6
|
||||
3:00 Russia MSK/MSD 1990 Jul 1 2:00
|
||||
2:00 1:00 EEST 1991 Sep 29 3:00
|
||||
2:00 E-Eur EE%sT 1995
|
||||
2:00 C-Eur EE%sT 1996 May 13
|
||||
2:00 EU EE%sT
|
||||
# Ruthenia used CET 1990/1991.
|
||||
# Transcarpathia used CET 1990/1991.
|
||||
# "Uzhhorod" is the transliteration of the Rusyn/Ukrainian pronunciation, but
|
||||
# "Uzhgorod" is more common in English.
|
||||
Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct
|
||||
@@ -3994,8 +4151,8 @@ Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct
|
||||
3:00 Russia MSK/MSD 1990
|
||||
3:00 - MSK 1990 Jul 1 2:00
|
||||
1:00 - CET 1991 Mar 31 3:00
|
||||
2:00 - EET 1992
|
||||
2:00 E-Eur EE%sT 1995
|
||||
2:00 - EET 1992 Mar 20
|
||||
2:00 C-Eur EE%sT 1996 May 13
|
||||
2:00 EU EE%sT
|
||||
# Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
|
||||
# "Zaporizhia" is the transliteration of the Ukrainian name, but
|
||||
@@ -4008,7 +4165,8 @@ Zone Europe/Zaporozhye 2:20:40 - LMT 1880
|
||||
3:00 - MSK 1941 Aug 25
|
||||
1:00 C-Eur CE%sT 1943 Oct 25
|
||||
3:00 Russia MSK/MSD 1991 Mar 31 2:00
|
||||
2:00 E-Eur EE%sT 1995
|
||||
2:00 E-Eur EE%sT 1992 Mar 20
|
||||
2:00 C-Eur EE%sT 1996 May 13
|
||||
2:00 EU EE%sT
|
||||
|
||||
# Vatican City
|
||||
|
||||
@@ -204,10 +204,10 @@
|
||||
# current -- the update time stamp, the data and the name of the file
|
||||
# will not change.
|
||||
#
|
||||
# Updated through IERS Bulletin C59
|
||||
# File expires on: 28 December 2020
|
||||
# Updated through IERS Bulletin C63
|
||||
# File expires on: 28 December 2022
|
||||
#
|
||||
#@ 3818102400
|
||||
#@ 3881174400
|
||||
#
|
||||
2272060800 10 # 1 Jan 1972
|
||||
2287785600 11 # 1 Jul 1972
|
||||
@@ -252,4 +252,4 @@
|
||||
# the hash line is also ignored in the
|
||||
# computation.
|
||||
#
|
||||
#h a1c168ae 27c79a7d 9dddcfc3 bcfe616b 2e2c44ea
|
||||
#h 732b2044 5863a938 b7e43179 1339c710 ded63837
|
||||
@@ -6,6 +6,10 @@
|
||||
# NIST format leap-seconds.list file, which can be copied from
|
||||
# <ftp://ftp.nist.gov/pub/time/leap-seconds.list>
|
||||
# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>.
|
||||
# The NIST file is used instead of its IERS upstream counterpart
|
||||
# <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list>
|
||||
# because under US law the NIST file is public domain
|
||||
# whereas the IERS file's copyright and license status is unclear.
|
||||
# For more about leap-seconds.list, please see
|
||||
# The NTP Timescale and Leap Seconds
|
||||
# <https://www.eecis.udel.edu/~mills/leap.html>.
|
||||
@@ -68,11 +72,11 @@ Leap 2016 Dec 31 23:59:60 + S
|
||||
# Any additional leap seconds will come after this.
|
||||
# This Expires line is commented out for now,
|
||||
# so that pre-2020a zic implementations do not reject this file.
|
||||
#Expires 2020 Dec 28 00:00:00
|
||||
#Expires 2022 Dec 28 00:00:00
|
||||
|
||||
# POSIX timestamps for the data in this file:
|
||||
#updated 1467936000 (2016-07-08 00:00:00 UTC)
|
||||
#expires 1609113600 (2020-12-28 00:00:00 UTC)
|
||||
#expires 1672185600 (2022-12-28 00:00:00 UTC)
|
||||
|
||||
# Updated through IERS Bulletin C59
|
||||
# File expires on: 28 December 2020
|
||||
# Updated through IERS Bulletin C63
|
||||
# File expires on: 28 December 2022
|
||||
Regular → Executable
+8
-2
@@ -24,6 +24,10 @@ BEGIN {
|
||||
print "# NIST format leap-seconds.list file, which can be copied from"
|
||||
print "# <ftp://ftp.nist.gov/pub/time/leap-seconds.list>"
|
||||
print "# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>."
|
||||
print "# The NIST file is used instead of its IERS upstream counterpart"
|
||||
print "# <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list>"
|
||||
print "# because under US law the NIST file is public domain"
|
||||
print "# whereas the IERS file's copyright and license status is unclear."
|
||||
print "# For more about leap-seconds.list, please see"
|
||||
print "# The NTP Timescale and Leap Seconds"
|
||||
print "# <https://www.eecis.udel.edu/~mills/leap.html>."
|
||||
@@ -105,8 +109,10 @@ END {
|
||||
print ""
|
||||
print "# UTC timestamp when this leap second list expires."
|
||||
print "# Any additional leap seconds will come after this."
|
||||
print "# This Expires line is commented out for now,"
|
||||
print "# so that pre-2020a zic implementations do not reject this file."
|
||||
if (! EXPIRES_LINE) {
|
||||
print "# This Expires line is commented out for now,"
|
||||
print "# so that pre-2020a zic implementations do not reject this file."
|
||||
}
|
||||
printf "%sExpires %.4d\t%s\t%.2d\t%.2d:%.2d:%.2d\n", \
|
||||
EXPIRES_LINE ? "" : "#", \
|
||||
ss_year, monthabbr[ss_month], ss_mday, ss_hour, ss_min, ss_sec
|
||||
|
||||
+301
-209
@@ -170,7 +170,7 @@
|
||||
# U.S. government action. So even though the "US" rules have changed
|
||||
# in the latest release, other countries won't be affected.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
|
||||
Rule US 1918 1919 - Oct lastSun 2:00 0 S
|
||||
Rule US 1942 only - Feb 9 2:00 1:00 W # War
|
||||
@@ -347,7 +347,7 @@ Zone PST8PDT -8:00 US P%sT
|
||||
# Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the
|
||||
# nearest second.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
|
||||
Rule NYC 1920 only - Oct lastSun 2:00 0 S
|
||||
Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D
|
||||
@@ -431,7 +431,7 @@ Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58
|
||||
# The Tennessean 2007-05-11, republished 2015-04-06.
|
||||
# https://www.tennessean.com/story/insider/extras/2015/04/06/archives-seigenthaler-for-100-years-the-tennessean-had-it-covered/25348545/
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Chicago 1920 only - Jun 13 2:00 1:00 D
|
||||
Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S
|
||||
Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D
|
||||
@@ -500,7 +500,7 @@ Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53
|
||||
# El Paso Times. 2018-10-24 06:40 -06.
|
||||
# https://www.elpasotimes.com/story/news/local/el-paso/2018/10/24/el-pasoans-were-time-rebels-fought-stay-mountain-zone/1744509002/
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
|
||||
Rule Denver 1920 only - Oct lastSun 2:00 0 S
|
||||
Rule Denver 1921 only - May 22 2:00 0 S
|
||||
@@ -553,7 +553,7 @@ Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00:04
|
||||
# https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1501&context=ca_ballot_props
|
||||
# https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1636&context=ca_ballot_props
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule CA 1948 only - Mar 14 2:01 1:00 D
|
||||
Rule CA 1949 only - Jan 1 2:00 0 S
|
||||
Rule CA 1950 1966 - Apr lastSun 1:00 1:00 D
|
||||
@@ -729,7 +729,11 @@ Zone America/Adak 12:13:22 - LMT 1867 Oct 19 12:44:35
|
||||
-11:00 US B%sT 1983 Oct 30 2:00
|
||||
-10:00 US AH%sT 1983 Nov 30
|
||||
-10:00 US H%sT
|
||||
# The following switches don't quite make our 1970 cutoff.
|
||||
# The following switches don't make our 1970 cutoff.
|
||||
#
|
||||
# Kiska observed Tokyo date and time during Japanese occupation from
|
||||
# 1942-06-06 to 1943-07-29, and similarly for Attu from 1942-06-07 to
|
||||
# 1943-05-29 (all dates American). Both islands are now uninhabited.
|
||||
#
|
||||
# Shanks writes that part of southwest Alaska (e.g. Aniak)
|
||||
# switched from -11:00 to -10:00 on 1968-09-22 at 02:00,
|
||||
@@ -825,6 +829,8 @@ Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 11:31:42
|
||||
-7:00 - MST 1967
|
||||
-7:00 US M%sT 1968 Mar 21
|
||||
-7:00 - MST
|
||||
Link America/Phoenix America/Creston
|
||||
|
||||
# From Arthur David Olson (1988-02-13):
|
||||
# A writer from the Inter Tribal Council of Arizona, Inc.,
|
||||
# notes in private correspondence dated 1987-12-28 that "Presently, only the
|
||||
@@ -911,7 +917,7 @@ Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11
|
||||
# going to switch from Central to Eastern Time on March 11, 2007....
|
||||
# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D
|
||||
Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S
|
||||
Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D
|
||||
@@ -930,7 +936,7 @@ Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
|
||||
#
|
||||
# Eastern Crawford County, Indiana, left its clocks alone in 1974,
|
||||
# as well as from 1976 through 2005.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Marengo 1951 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Marengo 1951 only - Sep lastSun 2:00 0 S
|
||||
Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D
|
||||
@@ -949,7 +955,7 @@ Zone America/Indiana/Marengo -5:45:23 - LMT 1883 Nov 18 12:14:37
|
||||
# Daviess, Dubois, Knox, and Martin Counties, Indiana,
|
||||
# switched from eastern to central time in April 2006, then switched back
|
||||
# in November 2007.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Vincennes 1946 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Vincennes 1946 only - Sep lastSun 2:00 0 S
|
||||
Rule Vincennes 1953 1954 - Apr lastSun 2:00 1:00 D
|
||||
@@ -970,11 +976,11 @@ Zone America/Indiana/Vincennes -5:50:07 - LMT 1883 Nov 18 12:09:53
|
||||
-5:00 US E%sT
|
||||
#
|
||||
# Perry County, Indiana, switched from eastern to central time in April 2006.
|
||||
# From Alois Triendl (2019-07-09):
|
||||
# From Alois Treindl (2019-07-09):
|
||||
# The Indianapolis News, Friday 27 October 1967 states that Perry County
|
||||
# returned to CST. It went again to EST on 27 April 1969, as documented by the
|
||||
# Indianapolis star of Saturday 26 April.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Perry 1955 only - May 1 0:00 1:00 D
|
||||
Rule Perry 1955 1960 - Sep lastSun 2:00 0 S
|
||||
Rule Perry 1956 1963 - Apr lastSun 2:00 1:00 D
|
||||
@@ -991,7 +997,7 @@ Zone America/Indiana/Tell_City -5:47:03 - LMT 1883 Nov 18 12:12:57
|
||||
#
|
||||
# Pike County, Indiana moved from central to eastern time in 1977,
|
||||
# then switched back in 2006, then switched back again in 2007.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Pike 1955 only - May 1 0:00 1:00 D
|
||||
Rule Pike 1955 1960 - Sep lastSun 2:00 0 S
|
||||
Rule Pike 1956 1964 - Apr lastSun 2:00 1:00 D
|
||||
@@ -1012,7 +1018,7 @@ Zone America/Indiana/Petersburg -5:49:07 - LMT 1883 Nov 18 12:10:53
|
||||
# An article on page A3 of the Sunday, 1991-10-27 Washington Post
|
||||
# notes that Starke County switched from Central time to Eastern time as of
|
||||
# 1991-10-27.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Starke 1947 1961 - Apr lastSun 2:00 1:00 D
|
||||
Rule Starke 1947 1954 - Sep lastSun 2:00 0 S
|
||||
Rule Starke 1955 1956 - Oct lastSun 2:00 0 S
|
||||
@@ -1029,7 +1035,7 @@ Zone America/Indiana/Knox -5:46:30 - LMT 1883 Nov 18 12:13:30
|
||||
#
|
||||
# Pulaski County, Indiana, switched from eastern to central time in
|
||||
# April 2006 and then switched back in March 2007.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Pulaski 1946 1960 - Apr lastSun 2:00 1:00 D
|
||||
Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S
|
||||
Rule Pulaski 1955 1956 - Oct lastSun 2:00 0 S
|
||||
@@ -1071,7 +1077,7 @@ Zone America/Indiana/Vevay -5:40:16 - LMT 1883 Nov 18 12:19:44
|
||||
#
|
||||
# Part of Kentucky left its clocks alone in 1974.
|
||||
# This also includes Clark, Floyd, and Harrison counties in Indiana.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Louisville 1921 only - May 1 2:00 1:00 D
|
||||
Rule Louisville 1921 only - Sep 1 2:00 0 S
|
||||
Rule Louisville 1941 only - Apr lastSun 2:00 1:00 D
|
||||
@@ -1185,7 +1191,7 @@ Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:20:36
|
||||
# election Michigan voters narrowly repealed DST, effective 1969.
|
||||
#
|
||||
# Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Detroit 1948 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Detroit 1948 only - Sep lastSun 2:00 0 S
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -1202,7 +1208,7 @@ Zone America/Detroit -5:32:11 - LMT 1905
|
||||
#
|
||||
# Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
|
||||
# switched from EST to CST/CDT in 1973.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Menominee 1946 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Menominee 1946 only - Sep lastSun 2:00 0 S
|
||||
Rule Menominee 1966 only - Apr lastSun 2:00 1:00 D
|
||||
@@ -1372,7 +1378,7 @@ Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00
|
||||
# Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day
|
||||
# than Thursday) in all Canadian rulesets.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Canada 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule Canada 1918 only - Oct 27 2:00 0 S
|
||||
Rule Canada 1942 only - Feb 9 2:00 1:00 W # War
|
||||
@@ -1395,7 +1401,7 @@ Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
|
||||
# that follows the rules is the southeast corner, including Port Hope
|
||||
# Simpson and Mary's Harbour, but excluding, say, Black Tickle.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule StJohns 1917 only - Apr 8 2:00 1:00 D
|
||||
Rule StJohns 1917 only - Sep 17 2:00 0 S
|
||||
# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
|
||||
@@ -1497,7 +1503,7 @@ Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
|
||||
# bill say that it is "accommodating the customs and practices" of those
|
||||
# regions, which suggests that they have always been in-line with Halifax.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Halifax 1916 only - Apr 1 0:00 1:00 D
|
||||
Rule Halifax 1916 only - Oct 1 0:00 0 S
|
||||
Rule Halifax 1920 only - May 9 0:00 1:00 D
|
||||
@@ -1563,7 +1569,7 @@ Zone America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
|
||||
# clear that this was the case since at least 1993.
|
||||
# For now, assume it started in 1993.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D
|
||||
Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S
|
||||
Rule Moncton 1936 1938 - Jun Sun>=1 1:00 1:00 D
|
||||
@@ -1593,24 +1599,7 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9
|
||||
# From Paul Eggert (2020-01-10):
|
||||
# See America/Toronto for most of Quebec, including Montreal.
|
||||
# See America/Halifax for the Îles de la Madeleine and the Listuguj reserve.
|
||||
#
|
||||
# Matthews and Vincent (1998) also write that Quebec east of the -63
|
||||
# meridian is supposed to observe AST, but residents as far east as
|
||||
# Natashquan use EST/EDT, and residents east of Natashquan use AST.
|
||||
# The Quebec department of justice writes in
|
||||
# "The situation in Minganie and Basse-Côte-Nord"
|
||||
# https://www.justice.gouv.qc.ca/en/department/ministre/functions-and-responsabilities/legal-time-in-quebec/the-situation-in-minganie-and-basse-cote-nord/
|
||||
# that the coastal strip from just east of Natashquan to Blanc-Sablon
|
||||
# observes Atlantic standard time all year round.
|
||||
# This common practice was codified into law as of 2007; see Legal Time Act,
|
||||
# CQLR c T-5.1 <http://legisquebec.gouv.qc.ca/en/ShowDoc/cs/T-5.1>.
|
||||
# For lack of better info, guess this practice began around 1970, contra to
|
||||
# Shanks & Pottenger who have this region observing AST/ADT.
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Blanc-Sablon -3:48:28 - LMT 1884
|
||||
-4:00 Canada A%sT 1970
|
||||
-4:00 - AST
|
||||
# See America/Puerto_Rico for east of Natashquan.
|
||||
|
||||
# Ontario
|
||||
|
||||
@@ -1649,54 +1638,6 @@ Zone America/Blanc-Sablon -3:48:28 - LMT 1884
|
||||
# time became a comic failure in Orillia. Toronto Star 2017-07-08.
|
||||
# https://www.thestar.com/news/insight/2017/07/08/bold-attempt-at-daylight-saving-time-became-a-comic-failure-in-orillia.html
|
||||
|
||||
# From Paul Eggert (1997-10-17):
|
||||
# Mark Brader writes that an article in the 1997-10-14 Toronto Star
|
||||
# says that Atikokan, Ontario currently does not observe DST,
|
||||
# but will vote on 11-10 whether to use EST/EDT.
|
||||
# He also writes that the Ontario Time Act (1990, Chapter T.9)
|
||||
# http://www.gov.on.ca/MBS/english/publications/statregs/conttext.html
|
||||
# says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
|
||||
# Officially Atikokan is therefore on CST/CDT, and most likely this report
|
||||
# concerns a non-official time observed as a matter of local practice.
|
||||
#
|
||||
# From Paul Eggert (2000-10-02):
|
||||
# Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and
|
||||
# New Osnaburgh observe CST all year, that Big Trout Lake observes
|
||||
# CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in
|
||||
# violation of the official Ontario rules.
|
||||
#
|
||||
# From Paul Eggert (2006-07-09):
|
||||
# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the
|
||||
# 2005-07-21 Chronicle-Journal, which said:
|
||||
#
|
||||
# The clocks in Atikokan stay set on standard time year-round.
|
||||
# This means they spend about half the time on central time and
|
||||
# the other half on eastern time.
|
||||
#
|
||||
# For the most part, the system works, Mayor Dennis Brown said.
|
||||
#
|
||||
# "The majority of businesses in Atikokan deal more with Eastern
|
||||
# Canada, but there are some that deal with Western Canada," he
|
||||
# said. "I don't see any changes happening here."
|
||||
#
|
||||
# Walton also writes "Supposedly Pickle Lake and Mishkeegogamang
|
||||
# [New Osnaburgh] follow the same practice."
|
||||
|
||||
# From Garry McKinnon (2006-07-14) via Chris Walton:
|
||||
# I chatted with a member of my board who has an outstanding memory
|
||||
# and a long history in Atikokan (and in the telecom industry) and he
|
||||
# can say for certain that Atikokan has been practicing the current
|
||||
# time keeping since 1952, at least.
|
||||
|
||||
# From Paul Eggert (2006-07-17):
|
||||
# Shanks & Pottenger say that Atikokan has agreed with Rainy River
|
||||
# ever since standard time was introduced, but the information from
|
||||
# McKinnon sounds more authoritative. For now, assume that Atikokan
|
||||
# switched to EST immediately after WWII era daylight saving time
|
||||
# ended. This matches the old (less-populous) America/Coral_Harbour
|
||||
# entry since our cutoff date of 1970, so we can move
|
||||
# America/Coral_Harbour to the 'backward' file.
|
||||
|
||||
# From Mark Brader (2010-03-06):
|
||||
#
|
||||
# Currently the database has:
|
||||
@@ -1772,7 +1713,7 @@ Zone America/Blanc-Sablon -3:48:28 - LMT 1884
|
||||
# With some exceptions, the use of daylight saving may be said to be limited
|
||||
# to those cities and towns lying between Quebec city and Windsor, Ont.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Toronto 1919 only - Mar 30 23:30 1:00 D
|
||||
Rule Toronto 1919 only - Oct 26 0:00 0 S
|
||||
Rule Toronto 1920 only - May 2 2:00 1:00 D
|
||||
@@ -1827,6 +1768,7 @@ Zone America/Toronto -5:17:32 - LMT 1895
|
||||
-5:00 Canada E%sT 1946
|
||||
-5:00 Toronto E%sT 1974
|
||||
-5:00 Canada E%sT
|
||||
Link America/Toronto America/Nassau
|
||||
Zone America/Thunder_Bay -5:57:00 - LMT 1895
|
||||
-6:00 - CST 1910
|
||||
-5:00 - EST 1942
|
||||
@@ -1842,11 +1784,7 @@ Zone America/Rainy_River -6:18:16 - LMT 1895
|
||||
-6:00 Canada C%sT 1940 Sep 29
|
||||
-6:00 1:00 CDT 1942 Feb 9 2:00s
|
||||
-6:00 Canada C%sT
|
||||
Zone America/Atikokan -6:06:28 - LMT 1895
|
||||
-6:00 Canada C%sT 1940 Sep 29
|
||||
-6:00 1:00 CDT 1942 Feb 9 2:00s
|
||||
-6:00 Canada C%sT 1945 Sep 30 2:00
|
||||
-5:00 - EST
|
||||
# For Atikokan see America/Panama.
|
||||
|
||||
|
||||
# Manitoba
|
||||
@@ -1870,7 +1808,7 @@ Zone America/Atikokan -6:06:28 - LMT 1895
|
||||
# starting 1966. Since 02:00s is clearly correct for 1967 on, assume
|
||||
# it was also 02:00s in 1966.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Winn 1916 only - Apr 23 0:00 1:00 D
|
||||
Rule Winn 1916 only - Sep 17 0:00 0 S
|
||||
Rule Winn 1918 only - Apr 14 2:00 1:00 D
|
||||
@@ -1961,7 +1899,7 @@ Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16
|
||||
# long and rather painful to read.
|
||||
# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Regina 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule Regina 1918 only - Oct 27 2:00 0 S
|
||||
Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D
|
||||
@@ -1998,7 +1936,7 @@ Zone America/Swift_Current -7:11:20 - LMT 1905 Sep
|
||||
|
||||
# Alberta
|
||||
|
||||
# From Alois Triendl (2019-07-19):
|
||||
# From Alois Treindl (2019-07-19):
|
||||
# There was no DST in Alberta in 1967... Calgary Herald, 29 April 1967.
|
||||
# 1969, no DST, from Edmonton Journal 18 April 1969
|
||||
#
|
||||
@@ -2011,7 +1949,7 @@ Zone America/Swift_Current -7:11:20 - LMT 1905 Sep
|
||||
# Boyer JP. Forcing Choice: The Risky Reward of Referendums. Dundum. 2017.
|
||||
# ISBN 978-1459739123.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D
|
||||
Rule Edm 1918 only - Oct 27 2:00 0 S
|
||||
Rule Edm 1919 only - May 27 2:00 0 S
|
||||
@@ -2037,60 +1975,6 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
|
||||
# Shanks & Pottenger write that since 1970 most of this region has
|
||||
# been like Vancouver.
|
||||
# Dawson Creek uses MST. Much of east BC is like Edmonton.
|
||||
# Matthews and Vincent (1998) write that Creston is like Dawson Creek.
|
||||
|
||||
# It seems though that (re: Creston) is not entirely correct:
|
||||
|
||||
# From Chris Walton (2011-12-01):
|
||||
# There are two areas within the Canadian province of British Columbia
|
||||
# that do not currently observe daylight saving:
|
||||
# a) The Creston Valley (includes the town of Creston and surrounding area)
|
||||
# b) The eastern half of the Peace River Regional District
|
||||
# (includes the cities of Dawson Creek and Fort St. John)
|
||||
|
||||
# Earlier this year I stumbled across a detailed article about the time
|
||||
# keeping history of Creston; it was written by Tammy Hardwick who is the
|
||||
# manager of the Creston & District Museum. The article was written in May 2009.
|
||||
# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
|
||||
# According to the article, Creston has not changed its clocks since June 1918.
|
||||
# i.e. Creston has been stuck on UT-7 for 93 years.
|
||||
# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
|
||||
|
||||
# Unfortunately the exact date for the time change in June 1918 remains
|
||||
# unknown and will be difficult to ascertain. I e-mailed Tammy a few months
|
||||
# ago to ask if Sunday June 2 was a reasonable guess. She said it was just
|
||||
# as plausible as any other date (in June). She also said that after writing
|
||||
# the article she had discovered another time change in 1916; this is the
|
||||
# subject of another article which she wrote in October 2010.
|
||||
# http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56
|
||||
|
||||
# Here is a summary of the three clock change events in Creston's history:
|
||||
# 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
|
||||
# Exact date unknown
|
||||
# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
|
||||
# Exact date in October unknown; Sunday October 1 is a reasonable guess.
|
||||
# 3. June 1918: switch to Pacific Daylight Time (GMT-7)
|
||||
# Exact date in June unknown; Sunday June 2 is a reasonable guess.
|
||||
# note 1:
|
||||
# On Oct 27/1918 when daylight saving ended in the rest of Canada,
|
||||
# Creston did not change its clocks.
|
||||
# note 2:
|
||||
# During WWII when the Federal Government legislated a mandatory clock change,
|
||||
# Creston did not oblige.
|
||||
# note 3:
|
||||
# There is no guarantee that Creston will remain on Mountain Standard Time
|
||||
# (UTC-7) forever.
|
||||
# The subject was debated at least once this year by the town Council.
|
||||
# http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html
|
||||
|
||||
# During a period WWII, summer time (Daylight saying) was mandatory in Canada.
|
||||
# In Creston, that was handled by shifting the area to PST (-8:00) then applying
|
||||
# summer time to cause the offset to be -7:00, the same as it had been before
|
||||
# the change. It can be argued that the timezone abbreviation during this
|
||||
# period should be PDT rather than MST, but that doesn't seem important enough
|
||||
# (to anyone) to further complicate the rules.
|
||||
|
||||
# The transition dates (and times) are guesses.
|
||||
|
||||
# From Matt Johnson (2015-09-21):
|
||||
# Fort Nelson, BC, Canada will cancel DST this year. So while previously they
|
||||
@@ -2107,7 +1991,7 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
|
||||
#
|
||||
# From Paul Eggert (2019-07-25):
|
||||
# Shanks says Fort Nelson did not observe DST in 1946, unlike Vancouver.
|
||||
# Alois Triendl confirmed this on 07-22, citing the 1946-04-27 Vancouver Daily
|
||||
# Alois Treindl confirmed this on 07-22, citing the 1946-04-27 Vancouver Daily
|
||||
# Province. He also cited the 1946-09-28 Victoria Daily Times, which said
|
||||
# that Vancouver, Victoria, etc. "change at midnight Saturday"; for now,
|
||||
# guess they meant 02:00 Sunday since 02:00 was common practice in Vancouver.
|
||||
@@ -2120,7 +2004,7 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
|
||||
# https://searcharchives.vancouver.ca/daylight-saving-1918-starts-again-july-7-1941-start-d-s-sept-27-end-of-d-s-1941
|
||||
# We have no further details, so omit them for now.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Vanc 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule Vanc 1918 only - Oct 27 2:00 0 S
|
||||
Rule Vanc 1942 only - Feb 9 2:00 1:00 W # War
|
||||
@@ -2144,10 +2028,7 @@ Zone America/Fort_Nelson -8:10:47 - LMT 1884
|
||||
-8:00 Vanc P%sT 1987
|
||||
-8:00 Canada P%sT 2015 Mar 8 2:00
|
||||
-7:00 - MST
|
||||
Zone America/Creston -7:46:04 - LMT 1884
|
||||
-7:00 - MST 1916 Oct 1
|
||||
-8:00 - PST 1918 Jun 2
|
||||
-7:00 - MST
|
||||
# For Creston see America/Phoenix.
|
||||
|
||||
# Northwest Territories, Nunavut, Yukon
|
||||
|
||||
@@ -2234,7 +2115,7 @@ Zone America/Creston -7:46:04 - LMT 1884
|
||||
# to say eight hours behind Greenwich Time.
|
||||
#
|
||||
# * O.I.C. 1980/02 INTERPRETATION ACT
|
||||
# [no online source found]
|
||||
# https://mm.icann.org/pipermail/tz/attachments/20201125/d5adc93b/CAYTOIC1980-02DST1980-01-04-0001.pdf
|
||||
#
|
||||
# * Yukon Daylight Saving Time, YOIC 1987/56
|
||||
# https://www.canlii.org/en/yk/laws/regu/yoic-1987-56/latest/yoic-1987-56.html
|
||||
@@ -2449,7 +2330,19 @@ Zone America/Creston -7:46:04 - LMT 1884
|
||||
# consistency with nearby Dawson Creek, Creston, and Fort Nelson.
|
||||
# https://yukon.ca/en/news/yukon-end-seasonal-time-change
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From Andrew G. Smith (2020-09-24):
|
||||
# Yukon has completed its regulatory change to be on UTC -7 year-round....
|
||||
# http://www.gov.yk.ca/legislation/regs/oic2020_125.pdf
|
||||
# What we have done is re-defined Yukon Standard Time, as we are
|
||||
# authorized to do under section 33 of our Interpretation Act:
|
||||
# http://www.gov.yk.ca/legislation/acts/interpretation_c.pdf
|
||||
#
|
||||
# From Paul Eggert (2020-09-24):
|
||||
# tzdb uses the obsolete YST abbreviation for standard time in Yukon through
|
||||
# about 1970, and uses PST for standard time in Yukon since then. Consistent
|
||||
# with that, use MST for -07, the new standard time in Yukon effective Nov. 1.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule NT_YK 1918 only - Oct 27 2:00 0 S
|
||||
Rule NT_YK 1919 only - May 25 2:00 1:00 D
|
||||
@@ -2503,12 +2396,12 @@ Zone America/Inuvik 0 - -00 1953 # Inuvik founded
|
||||
Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
|
||||
-9:00 NT_YK Y%sT 1967 May 28 0:00
|
||||
-8:00 NT_YK P%sT 1980
|
||||
-8:00 Canada P%sT 2020 Mar 8 2:00
|
||||
-8:00 Canada P%sT 2020 Nov 1
|
||||
-7:00 - MST
|
||||
Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
|
||||
-9:00 NT_YK Y%sT 1973 Oct 28 0:00
|
||||
-8:00 NT_YK P%sT 1980
|
||||
-8:00 Canada P%sT 2020 Mar 8 2:00
|
||||
-8:00 Canada P%sT 2020 Nov 1
|
||||
-7:00 - MST
|
||||
|
||||
|
||||
@@ -2723,7 +2616,7 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
|
||||
# 5- The islands, reefs and keys shall take their timezone from the
|
||||
# longitude they are located at.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Mexico 1939 only - Feb 5 0:00 1:00 D
|
||||
Rule Mexico 1939 only - Jun 25 0:00 0 S
|
||||
Rule Mexico 1940 only - Dec 9 0:00 1:00 D
|
||||
@@ -2917,72 +2810,225 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56
|
||||
|
||||
# Anguilla
|
||||
# Antigua and Barbuda
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Bahamas
|
||||
#
|
||||
# For 1899 Milne gives -5:09:29.5; round that.
|
||||
#
|
||||
# From Sue Williams (2006-12-07):
|
||||
# The Bahamas announced about a month ago that they plan to change their DST
|
||||
# rules to sync with the U.S. starting in 2007....
|
||||
# http://www.jonesbahamas.com/?c=45&a=10412
|
||||
# The Bahamas
|
||||
# See America/Toronto.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S
|
||||
Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Nassau -5:09:30 - LMT 1912 Mar 2
|
||||
-5:00 Bahamas E%sT 1976
|
||||
-5:00 US E%sT
|
||||
|
||||
# Barbados
|
||||
|
||||
# For 1899 Milne gives -3:58:29.2; round that.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From P Chan (2020-12-09 and 2020-12-11):
|
||||
# Standard time of GMT-4 was adopted in 1911.
|
||||
# Definition of Time Act, 1911 (1911-7) [1911-08-28]
|
||||
# 1912, Laws of Barbados (5 v.), OCLC Number: 919801291, Vol. 4, Image No. 522
|
||||
# 1944, Laws of Barbados (5 v.), OCLC Number: 84548697, Vol. 4, Image No. 122
|
||||
# http://llmc.com/browse.aspx?type=2&coll=85&div=297
|
||||
#
|
||||
# DST was observed in 1942-44.
|
||||
# Defence (Daylight Saving) Regulations, 1942, 1942-04-13
|
||||
# Defence (Daylight Saving) (Repeal) Regulations, 1942, 1942-08-22
|
||||
# Defence (Daylight Saving) Regulations, 1943, 1943-04-16
|
||||
# Defence (Daylight Saving) (Repeal) Regulations, 1943, 1943-09-01
|
||||
# Defence (Daylight Saving) Regulations, 1944, 1944-03-21
|
||||
# [Defence (Daylight Saving) (Amendment) Regulations 1944, 1944-03-28]
|
||||
# Defence (Daylight Saving) (Repeal) Regulations, 1944, 1944-08-30
|
||||
#
|
||||
# 1914-, Subsidiary Legis., Annual Vols. OCLC Number: 226290591
|
||||
# 1942: Image Nos. 527-528, 555-556
|
||||
# 1943: Image Nos. 178-179, 198
|
||||
# 1944: Image Nos. 113-115, 129
|
||||
# http://llmc.com/titledescfull.aspx?type=2&coll=85&div=297&set=98437
|
||||
#
|
||||
# From Tim Parenti (2021-02-20):
|
||||
# The transitions below are derived from P Chan's sources, except that the 1977
|
||||
# through 1980 transitions are from Shanks & Pottenger since we have no better
|
||||
# data there. Of particular note, the 1944 DST regulation only advanced the
|
||||
# time to "exactly three and a half hours later than Greenwich mean time", as
|
||||
# opposed to "three hours" in the 1942 and 1943 regulations.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Barb 1942 only - Apr 19 5:00u 1:00 D
|
||||
Rule Barb 1942 only - Aug 31 6:00u 0 S
|
||||
Rule Barb 1943 only - May 2 5:00u 1:00 D
|
||||
Rule Barb 1943 only - Sep 5 6:00u 0 S
|
||||
Rule Barb 1944 only - Apr 10 5:00u 0:30 -
|
||||
Rule Barb 1944 only - Sep 10 6:00u 0 S
|
||||
Rule Barb 1977 only - Jun 12 2:00 1:00 D
|
||||
Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S
|
||||
Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D
|
||||
Rule Barb 1979 only - Sep 30 2:00 0 S
|
||||
Rule Barb 1980 only - Sep 25 2:00 0 S
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Barbados -3:58:29 - LMT 1924 # Bridgetown
|
||||
-3:58:29 - BMT 1932 # Bridgetown Mean Time
|
||||
Zone America/Barbados -3:58:29 - LMT 1911 Aug 28 # Bridgetown
|
||||
-4:00 Barb A%sT 1944
|
||||
-4:00 Barb AST/-0330 1945
|
||||
-4:00 Barb A%sT
|
||||
|
||||
# Belize
|
||||
# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 -0530
|
||||
Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 CST
|
||||
|
||||
# From P Chan (2020-11-03):
|
||||
# Below are some laws related to the time in British Honduras/Belize:
|
||||
#
|
||||
# Definition of Time Ordinance, 1927 (No.4 of 1927) [1927-04-01]
|
||||
# Ordinances of British Honduras Passed in the Year 1927, p 19-20
|
||||
# https://books.google.com/books?id=LqEpAQAAMAAJ&pg=RA3-PA19
|
||||
#
|
||||
# Definition of Time (Amendment) Ordinance, 1942 (No. 5 of 1942) [1942-06-27]
|
||||
# Ordinances of British Honduras Passed in the Year 1942, p 31-32
|
||||
# https://books.google.com/books?id=h6MpAQAAMAAJ&pg=RA6-PA95-IA44
|
||||
#
|
||||
# Definition of Time Ordinance, 1945 (No. 19 of 1945) [1945-12-15]
|
||||
# Ordinances of British Honduras Passed in the Year 1945, p 49-50
|
||||
# https://books.google.com/books?id=xaMpAQAAMAAJ&pg=RA2-PP1
|
||||
#
|
||||
# Definition of Time Ordinance, 1947 (No. 1 of 1947) [1947-03-11]
|
||||
# Ordinances of British Honduras Passed in the Year 1947, p 1-2
|
||||
# https://books.google.com/books?id=xaMpAQAAMAAJ&pg=RA3-PA1
|
||||
#
|
||||
# Time (Definition of) Ordinance (Chapter 180)
|
||||
# The Laws of British Honduras in Force on the 15th Day of September, 1958 , Volume IV, p 2580
|
||||
# https://books.google.com/books?id=v5QpAQAAMAAJ&pg=PA2580
|
||||
#
|
||||
# Time (Definition of) (Amendment) Ordinance, 1968 (No. 13 of 1968) [1968-08-03]
|
||||
# https://books.google.com/books?id=xij7KEB_58wC&pg=RA1-PA428-IA9
|
||||
#
|
||||
# Definition of Time Act (Chapter 339)
|
||||
# Law of Belize, Revised Edition 2000
|
||||
# http://www.belizelaw.org/web/lawadmin/PDF%20files/cap339.pdf
|
||||
|
||||
# From Paul Eggert (2020-11-03):
|
||||
# The transitions below are derived from P Chan's sources, except that the
|
||||
# 1973 through 1983 transitions are from Shanks & Pottenger since we have
|
||||
# no better data there.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Belize 1918 1941 - Oct Sat>=1 24:00 0:30 -0530
|
||||
Rule Belize 1919 1942 - Feb Sat>=8 24:00 0 CST
|
||||
Rule Belize 1942 only - Jun 27 24:00 1:00 CWT
|
||||
Rule Belize 1945 only - Aug 14 23:00u 1:00 CPT
|
||||
Rule Belize 1945 only - Dec 15 24:00 0 CST
|
||||
Rule Belize 1947 1967 - Oct Sat>=1 24:00 0:30 -0530
|
||||
Rule Belize 1948 1968 - Feb Sat>=8 24:00 0 CST
|
||||
Rule Belize 1973 only - Dec 5 0:00 1:00 CDT
|
||||
Rule Belize 1974 only - Feb 9 0:00 0 CST
|
||||
Rule Belize 1982 only - Dec 18 0:00 1:00 CDT
|
||||
Rule Belize 1983 only - Feb 12 0:00 0 CST
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Belize -5:52:48 - LMT 1912 Apr
|
||||
Zone America/Belize -5:52:48 - LMT 1912 Apr 1
|
||||
-6:00 Belize %s
|
||||
|
||||
# Bermuda
|
||||
|
||||
# From Paul Eggert (2020-11-24):
|
||||
# For 1899 Milne gives -4:19:18.3 as the meridian of the clock tower,
|
||||
# Bermuda dockyard, Ireland I; round that.
|
||||
# Bermuda dockyard, Ireland I. This agrees with standard offset given in the
|
||||
# Daylight Saving Act, 1917 cited below. Round that to the nearest second.
|
||||
# It is not known when this time became standard for Bermuda; guess 1890.
|
||||
# The transition to -04 was specified by:
|
||||
# 1930: The Time Zone Act, 1929 (1929: No. 39) [1929-11-08]
|
||||
# https://books.google.com/books?id=7tdMAQAAIAAJ&pg=RA54-PP1
|
||||
|
||||
# From P Chan (2020-11-20):
|
||||
# Most of the information can be found online from the Bermuda National
|
||||
# Library - Digital Collection which includes The Royal Gazette (RG) until 1957
|
||||
# https://bnl.contentdm.oclc.org/digital/
|
||||
# I will cite the ID. For example, [10000] means
|
||||
# https://bnl.contentdm.oclc.org/digital/collection/BermudaNP02/id/10000
|
||||
#
|
||||
# 1917: Apr 5 midnight to Sep 30 midnight
|
||||
# Daylight Saving Act, 1917 (1917 No. 13) [1917-04-02]
|
||||
# Bermuda Acts and Resolves 1917, p 37-38
|
||||
# https://books.google.com/books?id=M-lCAQAAMAAJ&pg=PA36-IA2
|
||||
# RG, 1917-04-04, p 6 [42340] gives the spring forward date.
|
||||
#
|
||||
# 1918: Apr 13 midnight to Sep 15 midnight
|
||||
# Daylight Saving Act, 1918 (1918 No. 9) [1918-04-06]
|
||||
# Bermuda Acts and Resolves 1917, p 13
|
||||
# https://books.google.com/books?id=K-lCAQAAMAAJ&pg=RA1-PA7
|
||||
#
|
||||
# Note that local mean time was still used before 1930.
|
||||
#
|
||||
# During WWII, DST was introduced by Defence Regulations
|
||||
# 1942: Jan 11 02:00 to Oct 18 02:00 [113646], [115726]
|
||||
# 1943: Mar 21 02:00 to Oct 31 02:00 [116704], [118193]
|
||||
# 1944: Mar 12 02:00 to Nov 5 02:00 [119225], [121593]
|
||||
# 1945: Mar 11 02:00 to Nov 4 02:00 [122369], [124461]
|
||||
# RG, 1942-01-08, p 2, 1942-10-12, p 2 , 1943-03-06, p 2, 1943-09-03, p 1,
|
||||
# 1944-02-29, p 6, 1944-09-20, p 2, 1945-02-13, p 2, 1945-11-03, p 1
|
||||
#
|
||||
# In 1946, the House of Assembly rejected DST twice. [128686], [128076]
|
||||
# RG, 1946-03-16 p 1,1946-04-13 p 1
|
||||
#
|
||||
# 1947: third Sunday in May 02:00 to second Sunday in September 02:00
|
||||
# DST in 1947 was defined in the Daylight Saving Act, 1947 (1947: No. 12)
|
||||
# which expired at the end of the year. [125784] ,[132405], [144454], [138226]
|
||||
# RG, 1947-02-27, p 1, 1947-05-15, p 1, 1947-09-13, p 1, 1947-12-30, p 1
|
||||
#
|
||||
# 1948-1952: fourth Sunday in May 02:00 to first Sunday in September 02:00
|
||||
# DST in 1948 was defined in the Daylight Saving Act, 1948 (1948 : No. 12)
|
||||
# which was set to expired at the end of the year but it was extended until
|
||||
# the end of 1952 and was not further extended.
|
||||
# [129802], [139403], [146008], [135240], [144330], [139049], [143309],
|
||||
# [148271], [149773], [153589], [153802], [155924]
|
||||
# RG, 1948-04-13, p 1, 1948-05-22, p 1, 1948-09-04, p 1, 1949-05-21, p1,
|
||||
# 1949-09-03, p 1, 1950-05-27 p 1, 1950-09-02, p 1, 1951-05-27, p 1,
|
||||
# 1951-09-01, p 1, 1952-05-23, p 1, 1952-09-26, p 1, 1952-12-21, p 8
|
||||
#
|
||||
# In 1953-1955, the House of Assembly rejected DST each year. [158996],
|
||||
# [162620], [166720] RG, 1953-05-02, p 1, 1954-04-01 p 1, 1955-03-12, p 1
|
||||
#
|
||||
# 1956: fourth Sunday in May 02:00 to last Sunday in October 02:00
|
||||
# Time Zone (Seasonal Variation) Act, 1956 (1956: No.44) [1956-05-25]
|
||||
# Bermuda Public Acts 1956, p 331-332
|
||||
# https://books.google.com/books?id=Xs1AlmD_cEwC&pg=PA63
|
||||
#
|
||||
# The extension of the Act was rejected by the House of Assembly. [176218]
|
||||
# RG, 1956-12-13, p 1
|
||||
#
|
||||
# From the Chronological Table of Public and Private Acts up to 1985, it seems
|
||||
# that there does not exist other Acts related to DST before 1973.
|
||||
# https://books.google.com/books?id=r9hMAQAAIAAJ&pg=RA23-PA1
|
||||
# Public Acts of the Legislature of the Islands of Bermuda, Together with
|
||||
# Statutory Instruments in Force Thereunder, Vol VII
|
||||
|
||||
# From Dan Jones, reporting in The Royal Gazette (2006-06-26):
|
||||
|
||||
# Next year, however, clocks in the US will go forward on the second Sunday
|
||||
# in March, until the first Sunday in November. And, after the Time Zone
|
||||
# (Seasonal Variation) Bill 2006 was passed in the House of Assembly on
|
||||
# Friday, the same thing will happen in Bermuda.
|
||||
# http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Bermuda 1917 only - Apr 5 24:00 1:00 -
|
||||
Rule Bermuda 1917 only - Sep 30 24:00 0 -
|
||||
Rule Bermuda 1918 only - Apr 13 24:00 1:00 -
|
||||
Rule Bermuda 1918 only - Sep 15 24:00 0 S
|
||||
Rule Bermuda 1942 only - Jan 11 2:00 1:00 D
|
||||
Rule Bermuda 1942 only - Oct 18 2:00 0 S
|
||||
Rule Bermuda 1943 only - Mar 21 2:00 1:00 D
|
||||
Rule Bermuda 1943 only - Oct 31 2:00 0 S
|
||||
Rule Bermuda 1944 1945 - Mar Sun>=8 2:00 1:00 D
|
||||
Rule Bermuda 1944 1945 - Nov Sun>=1 2:00 0 S
|
||||
Rule Bermuda 1947 only - May Sun>=15 2:00 1:00 D
|
||||
Rule Bermuda 1947 only - Sep Sun>=8 2:00 0 S
|
||||
Rule Bermuda 1948 1952 - May Sun>=22 2:00 1:00 D
|
||||
Rule Bermuda 1948 1952 - Sep Sun>=1 2:00 0 S
|
||||
Rule Bermuda 1956 only - May Sun>=22 2:00 1:00 D
|
||||
Rule Bermuda 1956 only - Oct lastSun 2:00 0 S
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton
|
||||
-4:00 - AST 1974 Apr 28 2:00
|
||||
Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton
|
||||
-4:19:18 Bermuda BMT/BST 1930 Jan 1 2:00
|
||||
-4:00 Bermuda A%sT 1974 Apr 28 2:00
|
||||
-4:00 Canada A%sT 1976
|
||||
-4:00 US A%sT
|
||||
|
||||
# Caribbean Netherlands
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Cayman Is
|
||||
# See America/Panama.
|
||||
|
||||
@@ -2990,7 +3036,7 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton
|
||||
|
||||
# Milne gives -5:36:13.3 as San José mean time; round to nearest.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
|
||||
Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
|
||||
Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D
|
||||
@@ -3164,7 +3210,7 @@ Zone America/Costa_Rica -5:36:13 - LMT 1890 # San José
|
||||
# From Paul Eggert (2012-11-03):
|
||||
# For now, assume the future rule is first Sunday in November.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cuba 1928 only - Jun 10 0:00 1:00 D
|
||||
Rule Cuba 1928 only - Oct 10 0:00 0 S
|
||||
Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D
|
||||
@@ -3211,7 +3257,7 @@ Zone America/Havana -5:29:28 - LMT 1890
|
||||
-5:00 Cuba C%sT
|
||||
|
||||
# Dominica
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Dominican Republic
|
||||
|
||||
@@ -3233,7 +3279,7 @@ Zone America/Havana -5:29:28 - LMT 1890
|
||||
# decided to revert.
|
||||
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule DR 1966 only - Oct 30 0:00 1:00 EDT
|
||||
Rule DR 1967 only - Feb 28 0:00 0 EST
|
||||
Rule DR 1969 1973 - Oct lastSun 0:00 0:30 -0430
|
||||
@@ -3250,7 +3296,7 @@ Zone America/Santo_Domingo -4:39:36 - LMT 1890
|
||||
|
||||
# El Salvador
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D
|
||||
Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
|
||||
# There are too many San Salvadors elsewhere, so use America/El_Salvador
|
||||
@@ -3263,7 +3309,7 @@ Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador
|
||||
# Guadeloupe
|
||||
# St Barthélemy
|
||||
# St Martin (French part)
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Guatemala
|
||||
#
|
||||
@@ -3279,7 +3325,7 @@ Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador
|
||||
# (2006-04-19), says DST ends at 24:00. See
|
||||
# http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Guat 1973 only - Nov 25 0:00 1:00 D
|
||||
Rule Guat 1974 only - Feb 24 0:00 0 S
|
||||
Rule Guat 1983 only - May 21 0:00 1:00 D
|
||||
@@ -3360,7 +3406,7 @@ Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5
|
||||
# I have not been able to find a more authoritative source:
|
||||
# https://www.haitilibre.com/en/news-20319-haiti-notices-time-change-in-haiti.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Haiti 1983 only - May 8 0:00 1:00 D
|
||||
Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D
|
||||
Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
|
||||
@@ -3408,7 +3454,7 @@ Zone America/Port-au-Prince -4:49:20 - LMT 1890
|
||||
# http://www.laprensahn.com/pais_nota.php?id04962=7386
|
||||
# So it seems that Honduras will not enter DST this year....
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D
|
||||
Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
|
||||
Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
|
||||
@@ -3450,7 +3496,7 @@ Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France
|
||||
-4:00 - AST
|
||||
|
||||
# Montserrat
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Nicaragua
|
||||
#
|
||||
@@ -3499,7 +3545,7 @@ Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France
|
||||
# The natural sun time is restored in all the national territory, in that the
|
||||
# time is returned one hour at 01:00 am of October 1 of 2006.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D
|
||||
Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
|
||||
Rule Nic 2005 only - Apr 10 0:00 1:00 D
|
||||
@@ -3522,6 +3568,7 @@ Zone America/Managua -5:45:08 - LMT 1890
|
||||
Zone America/Panama -5:18:08 - LMT 1890
|
||||
-5:19:36 - CMT 1908 Apr 22 # Colón Mean Time
|
||||
-5:00 - EST
|
||||
Link America/Panama America/Atikokan
|
||||
Link America/Panama America/Cayman
|
||||
|
||||
# Puerto Rico
|
||||
@@ -3531,10 +3578,29 @@ Zone America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12:00 # San Juan
|
||||
-4:00 - AST 1942 May 3
|
||||
-4:00 US A%sT 1946
|
||||
-4:00 - AST
|
||||
Link America/Puerto_Rico America/Anguilla
|
||||
Link America/Puerto_Rico America/Antigua
|
||||
Link America/Puerto_Rico America/Aruba
|
||||
Link America/Puerto_Rico America/Curacao
|
||||
Link America/Puerto_Rico America/Blanc-Sablon # Quebec (Lower North Shore)
|
||||
Link America/Puerto_Rico America/Dominica
|
||||
Link America/Puerto_Rico America/Grenada
|
||||
Link America/Puerto_Rico America/Guadeloupe
|
||||
Link America/Puerto_Rico America/Kralendijk # Caribbean Netherlands
|
||||
Link America/Puerto_Rico America/Lower_Princes # Sint Maarten
|
||||
Link America/Puerto_Rico America/Marigot # St Martin (French part)
|
||||
Link America/Puerto_Rico America/Montserrat
|
||||
Link America/Puerto_Rico America/Port_of_Spain # Trinidad & Tobago
|
||||
Link America/Puerto_Rico America/St_Barthelemy # St Barthélemy
|
||||
Link America/Puerto_Rico America/St_Kitts # St Kitts & Nevis
|
||||
Link America/Puerto_Rico America/St_Lucia
|
||||
Link America/Puerto_Rico America/St_Thomas # Virgin Islands (US)
|
||||
Link America/Puerto_Rico America/St_Vincent
|
||||
Link America/Puerto_Rico America/Tortola # Virgin Islands (UK)
|
||||
|
||||
# St Kitts-Nevis
|
||||
# St Lucia
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# St Pierre and Miquelon
|
||||
# There are too many St Pierres elsewhere, so we'll use 'Miquelon'.
|
||||
@@ -3545,7 +3611,10 @@ Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre
|
||||
-3:00 Canada -03/-02
|
||||
|
||||
# St Vincent and the Grenadines
|
||||
# See America/Port_of_Spain.
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Sint Maarten
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Turks and Caicos
|
||||
#
|
||||
@@ -3562,7 +3631,7 @@ Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre
|
||||
# "Eastern Standard Times Begins 2007
|
||||
# Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
|
||||
# indicating that the normal ET rules are followed.
|
||||
#
|
||||
|
||||
# From Paul Eggert (2014-08-19):
|
||||
# The 2014-08-13 Cabinet meeting decided to stay on UT -04 year-round. See:
|
||||
# http://tcweeklynews.com/daylight-savings-time-to-be-maintained-p5353-127.htm
|
||||
@@ -3577,24 +3646,47 @@ Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre
|
||||
# during the summer months and Standard Time, also known as Local
|
||||
# Time, during the winter months with effect from April 2018 ...
|
||||
# https://www.gov.uk/government/news/turks-and-caicos-post-cabinet-meeting-statement--3
|
||||
#
|
||||
# From Paul Eggert (2017-08-26):
|
||||
# The date of effect of the spring 2018 change appears to be March 11,
|
||||
# which makes more sense. See: Hamilton D. Time change back
|
||||
# by March 2018 for TCI. Magnetic Media. 2017-08-25.
|
||||
# http://magneticmediatv.com/2017/08/time-change-back-by-march-2018-for-tci/
|
||||
#
|
||||
# From P Chan (2020-11-27):
|
||||
# Standard Time Declaration Order 2015 (L.N. 15/2015)
|
||||
# http://online.fliphtml5.com/fizd/czin/#p=2
|
||||
#
|
||||
# Standard Time Declaration Order 2017 (L.N. 31/2017)
|
||||
# http://online.fliphtml5.com/fizd/dmcu/#p=2
|
||||
#
|
||||
# From Tim Parenti (2020-12-05):
|
||||
# Although L.N. 31/2017 reads that it "shall come into operation at 2:00 a.m.
|
||||
# on 11th March 2018", a precise interpretation here poses some problems. The
|
||||
# order states that "the standard time to be observed throughout the Turks and
|
||||
# Caicos Islands shall be the same time zone as the Eastern United States of
|
||||
# America" and further clarifies "[f]or the avoidance of doubt" that it
|
||||
# "applies to the Eastern Standard Time as well as any changes thereto for
|
||||
# Daylight Saving Time." However, as clocks in Turks and Caicos approached
|
||||
# 02:00 -04, and thus the declared implementation time, it was still 01:00 EST
|
||||
# (-05), as DST in the Eastern US would not start until an hour later.
|
||||
#
|
||||
# Since it is unlikely that those on the islands switched their clocks twice in
|
||||
# the span of an hour, we assume instead that the adoption of EDT actually took
|
||||
# effect once clocks in the Eastern US had sprung forward, from 03:00 -04.
|
||||
# This discrepancy only affects the time zone abbreviation and DST flag for the
|
||||
# intervening hour, not wall clock times, as -04 was maintained throughout.
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Grand_Turk -4:44:32 - LMT 1890
|
||||
-5:07:10 - KMT 1912 Feb # Kingston Mean Time
|
||||
-5:00 - EST 1979
|
||||
-5:00 US E%sT 2015 Nov Sun>=1 2:00
|
||||
-4:00 - AST 2018 Mar 11 3:00
|
||||
-5:00 US E%sT 2015 Mar 8 2:00
|
||||
-4:00 - AST 2018 Mar 11 3:00
|
||||
-5:00 US E%sT
|
||||
|
||||
# British Virgin Is
|
||||
# Virgin Is
|
||||
# See America/Port_of_Spain.
|
||||
# US Virgin Is
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
|
||||
# Local Variables:
|
||||
|
||||
+85
-67
@@ -48,7 +48,7 @@
|
||||
# I am sending modifications to the Argentine time zone table...
|
||||
# AR was chosen because they are the ISO letters that represent Argentina.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Arg 1930 only - Dec 1 0:00 1:00 -
|
||||
Rule Arg 1931 only - Apr 1 0:00 0 -
|
||||
Rule Arg 1931 only - Oct 15 0:00 1:00 -
|
||||
@@ -574,7 +574,7 @@ Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
|
||||
-3:00 - -03
|
||||
|
||||
# Aruba
|
||||
Link America/Curacao America/Aruba
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Bolivia
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -769,7 +769,7 @@ Zone America/La_Paz -4:32:36 - LMT 1890
|
||||
# From Paul Eggert (2013-10-17):
|
||||
# For now, assume western Amazonas will change as well.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Decree 20,466 <http://pcdsh01.on.br/HV20466.htm> (1931-10-01)
|
||||
# Decree 21,896 <http://pcdsh01.on.br/HV21896.htm> (1932-01-10)
|
||||
Rule Brazil 1931 only - Oct 3 11:00 1:00 -
|
||||
@@ -1086,7 +1086,7 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
||||
|
||||
# Chile
|
||||
|
||||
# From Paul Eggert (2015-04-03):
|
||||
# From Paul Eggert (2022-03-15):
|
||||
# Shanks & Pottenger says America/Santiago introduced standard time in
|
||||
# 1890 and rounds its UT offset to 70W40; guess that in practice this
|
||||
# was the same offset as in 1916-1919. It also says Pacific/Easter
|
||||
@@ -1109,7 +1109,7 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
||||
# Historia de la hora oficial de Chile (retrieved 2012-10-24). See:
|
||||
# https://web.archive.org/web/20121024234627/http://www.horaoficial.cl/horaof.htm
|
||||
# A fancier Spanish version (requiring mouse-clicking) is at:
|
||||
# http://www.horaoficial.cl/historia_hora.html
|
||||
# http://www.horaoficial.cl/historia_hora.php
|
||||
# Conflicts between [1] and [2] were resolved as follows:
|
||||
#
|
||||
# - [1] says the 1910 transition was Jan 1, [2] says Jan 10 and cites
|
||||
@@ -1118,7 +1118,8 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
||||
# - [1] says SMT was -4:42:45, [2] says Chile's official time from
|
||||
# 1916 to 1919 was -4:42:46.3, the meridian of Chile's National
|
||||
# Astronomical Observatory (OAN), then located in what is now
|
||||
# Quinta Normal in Santiago. Go with [2], rounding it to -4:42:46.
|
||||
# Quinta Normal in Santiago. Go with [1], as this matches the meridian
|
||||
# referred to by the relevant Chilean laws to this day.
|
||||
#
|
||||
# - [1] says the 1918 transition was Sep 1, [2] says Sep 10 and cites
|
||||
# Boletín No. 22, Aviso No. 129/1918 (1918-08-23). Go with [2].
|
||||
@@ -1140,6 +1141,32 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
||||
# this is known to work for DST transitions starting in 2008 and
|
||||
# may well be true for earlier transitions.
|
||||
|
||||
# From Tim Parenti (2022-03-15):
|
||||
# For a brief period of roughly six weeks in 1946, DST was only observed on an
|
||||
# emergency basis in specific regions of central Chile; namely, "the national
|
||||
# territory between the provinces of Coquimbo and Concepción, inclusive".
|
||||
# This was enacted by Decree 3,891, dated 1946-07-13, and took effect
|
||||
# 1946-07-14 24:00, advancing these central regions to -03.
|
||||
# https://www.diariooficial.interior.gob.cl/versiones-anteriores/do-h/19460715/#page/1
|
||||
# The decree contemplated "[t]hat this advancement of the Official Time, even
|
||||
# though it has been proposed for the cities of Santiago and Valparaíso only,
|
||||
# must be agreed with that of other cities, due to the connection of various
|
||||
# activities that require it, such as, for example, the operation of rail
|
||||
# services". It was originally set to expire after 30 days but was extended
|
||||
# through 1946-08-31 by Decree 4,506, dated 1946-08-13.
|
||||
# https://www.diariooficial.interior.gob.cl/versiones-anteriores/do-h/19460814/#page/1
|
||||
#
|
||||
# Law Number 8,522, promulgated 1946-08-27, reunified Chilean clocks at their
|
||||
# new "Summer Time" of -04, reckoned as that of "the meridian of the
|
||||
# Astronomical Observatory of Lo Espejo, advanced by 42 minutes and 45
|
||||
# seconds".
|
||||
# https://www.diariooficial.interior.gob.cl/versiones-anteriores/do-h/19460828/#page/1
|
||||
# After a brief "Winter Time" stint at -05 beginning 1947-04-01, Law Number
|
||||
# 8,777, promulgated 1947-05-17, established year-round -04 "from 23:00 on the
|
||||
# second day after it is published in the 'Diario Oficial'." It was published
|
||||
# on Monday 1947-05-19 and so took effect from Wednesday 1947-05-21 23:00.
|
||||
# https://www.diariooficial.interior.gob.cl/versiones-anteriores/do-h/19470519/#page/1
|
||||
|
||||
# From Eduardo Krell (1995-10-19):
|
||||
# The law says to switch to DST at midnight [24:00] on the second SATURDAY
|
||||
# of October.... The law is the same for March and October.
|
||||
@@ -1258,7 +1285,7 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
||||
# For now, assume that they will not revert,
|
||||
# since they have extended the expiration date once already.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
|
||||
Rule Chile 1928 1932 - Apr 1 0:00 0 -
|
||||
Rule Chile 1968 only - Nov 3 4:00u 1:00 -
|
||||
@@ -1298,12 +1325,12 @@ Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
|
||||
# IATA SSIM anomalies: (1992-02) says 1992-03-14;
|
||||
# (1996-09) says 1998-03-08. Ignore these.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Santiago -4:42:46 - LMT 1890
|
||||
-4:42:46 - SMT 1910 Jan 10 # Santiago Mean Time
|
||||
Zone America/Santiago -4:42:45 - LMT 1890
|
||||
-4:42:45 - SMT 1910 Jan 10 # Santiago Mean Time
|
||||
-5:00 - -05 1916 Jul 1
|
||||
-4:42:46 - SMT 1918 Sep 10
|
||||
-4:42:45 - SMT 1918 Sep 10
|
||||
-4:00 - -04 1919 Jul 1
|
||||
-4:42:46 - SMT 1927 Sep 1
|
||||
-4:42:45 - SMT 1927 Sep 1
|
||||
-5:00 Chile -05/-04 1932 Sep 1
|
||||
-4:00 - -04 1942 Jun 1
|
||||
-5:00 - -05 1942 Aug 1
|
||||
@@ -1313,11 +1340,11 @@ Zone America/Santiago -4:42:46 - LMT 1890
|
||||
-5:00 - -05 1947 May 21 23:00
|
||||
-4:00 Chile -04/-03
|
||||
Zone America/Punta_Arenas -4:43:40 - LMT 1890
|
||||
-4:42:46 - SMT 1910 Jan 10
|
||||
-4:42:45 - SMT 1910 Jan 10
|
||||
-5:00 - -05 1916 Jul 1
|
||||
-4:42:46 - SMT 1918 Sep 10
|
||||
-4:42:45 - SMT 1918 Sep 10
|
||||
-4:00 - -04 1919 Jul 1
|
||||
-4:42:46 - SMT 1927 Sep 1
|
||||
-4:42:45 - SMT 1927 Sep 1
|
||||
-5:00 Chile -05/-04 1932 Sep 1
|
||||
-4:00 - -04 1942 Jun 1
|
||||
-5:00 - -05 1942 Aug 1
|
||||
@@ -1358,7 +1385,7 @@ Zone Antarctica/Palmer 0 - -00 1965
|
||||
# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes,
|
||||
# "A variation of fifteen minutes in the public clocks of Bogota is not rare."
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule CO 1992 only - May 3 0:00 1:00 -
|
||||
Rule CO 1993 only - Apr 4 0:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -1369,35 +1396,14 @@ Zone America/Bogota -4:56:16 - LMT 1884 Mar 13
|
||||
# no information; probably like America/Bogota
|
||||
|
||||
# Curaçao
|
||||
|
||||
# Milne gives 4:35:46.9 for Curaçao mean time; round to nearest.
|
||||
# See America/Puerto_Rico.
|
||||
#
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# Shanks & Pottenger say that The Bottom and Philipsburg have been at
|
||||
# -4:00 since standard time was introduced on 1912-03-02; and that
|
||||
# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
|
||||
# 1912-02-02 to 1965-01-01. The former is dubious, since S&P also say
|
||||
# Saba Island has been like Curaçao.
|
||||
# This all predates our 1970 cutoff, though.
|
||||
#
|
||||
# By July 2007 Curaçao and St Maarten are planned to become
|
||||
# associated states within the Netherlands, much like Aruba;
|
||||
# Bonaire, Saba and St Eustatius would become directly part of the
|
||||
# Netherlands as Kingdom Islands. This won't affect their time zones
|
||||
# though, as far as we know.
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Curacao -4:35:47 - LMT 1912 Feb 12 # Willemstad
|
||||
-4:30 - -0430 1965
|
||||
-4:00 - AST
|
||||
|
||||
# From Arthur David Olson (2011-06-15):
|
||||
# use links for places with new iso3166 codes.
|
||||
# The name "Lower Prince's Quarter" is both longer than fourteen characters
|
||||
# and contains an apostrophe; use "Lower_Princes" below.
|
||||
|
||||
Link America/Curacao America/Lower_Princes # Sint Maarten
|
||||
Link America/Curacao America/Kralendijk # Caribbean Netherlands
|
||||
# and contains an apostrophe; use "Lower_Princes"....
|
||||
# From Paul Eggert (2021-09-29):
|
||||
# These backward-compatibility links now are in the 'northamerica' file.
|
||||
|
||||
# Ecuador
|
||||
#
|
||||
@@ -1418,7 +1424,7 @@ Link America/Curacao America/Kralendijk # Caribbean Netherlands
|
||||
# (Not one step back), the clocks went back in 1993 and the experiment was not
|
||||
# repeated. For now, assume transitions were at 00:00 local time country-wide.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Ecuador 1992 only - Nov 28 0:00 1:00 -
|
||||
Rule Ecuador 1993 only - Feb 5 0:00 0 -
|
||||
#
|
||||
@@ -1512,7 +1518,7 @@ Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno
|
||||
# For now we will assume permanent -03 for the Falklands
|
||||
# until advised differently (to apply for 2012 and beyond, after the 2011
|
||||
# experiment was apparently successful.)
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 -
|
||||
Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
|
||||
Rule Falk 1939 only - Oct 1 0:00 1:00 -
|
||||
@@ -1540,11 +1546,40 @@ Zone America/Cayenne -3:29:20 - LMT 1911 Jul
|
||||
-3:00 - -03
|
||||
|
||||
# Guyana
|
||||
|
||||
# From P Chan (2020-11-27):
|
||||
# https://books.google.com/books?id=5-5CAQAAMAAJ&pg=SA1-PA547
|
||||
# The Official Gazette of British Guiana. (New Series.) Vol. XL. July to
|
||||
# December, 1915, p 1547, lists as several notes:
|
||||
# "Local Mean Time 3 hours 52 mins. 39 secs. slow of Greenwich Mean Time
|
||||
# (Georgetown.) From 1st August, 1911, British Guiana Standard Mean Time 4
|
||||
# hours slow of Greenwich Mean Time, by notice in Official Gazette on 1st July,
|
||||
# 1911. From 1st March, 1915, British Guiana Standard Mean Time 3 hours 45
|
||||
# mins. 0 secs. slow of Greenwich Mean Time, by notice in Official Gazette on
|
||||
# 23rd January, 1915."
|
||||
#
|
||||
# https://parliament.gov.gy/documents/acts/10923-act_no._27_of_1975_-_interpretation_and_general_clauses_(amendment)_act_1975.pdf
|
||||
# Interpretation and general clauses (Amendment) Act 1975 (Act No. 27 of 1975)
|
||||
# [dated 1975-07-31]
|
||||
# "This Act...shall come into operation on 1st August, 1975."
|
||||
# "...where any expression of time occurs...the time referred to shall signify
|
||||
# the standard time of Guyana which shall be three hours behind Greenwich Mean
|
||||
# Time."
|
||||
#
|
||||
# Circular No. 10/1992 dated 1992-03-20
|
||||
# https://dps.gov.gy/wp-content/uploads/2018/12/1992-03-20-Circular-010.pdf
|
||||
# "...cabinet has decided that with effect from Sunday 29th March, 1992, Guyana
|
||||
# Standard Time would be re-established at 01:00 hours by adjusting the hands
|
||||
# of the clock back to 24:00 hours."
|
||||
# Legislated in the Interpretation and general clauses (Amendment) Act 1992
|
||||
# (Act No. 6 of 1992) [passed 1992-03-27, published 1992-04-18]
|
||||
# https://parliament.gov.gy/documents/acts/5885-6_of_1992_interpretation_and_general_clauses_(amendment)_act_1992.pdf
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown
|
||||
-3:45 - -0345 1975 Jul 31
|
||||
-3:00 - -03 1991
|
||||
# IATA SSIM (1996-06) says -4:00. Assume a 1991 switch.
|
||||
Zone America/Guyana -3:52:39 - LMT 1911 Aug 1 # Georgetown
|
||||
-4:00 - -04 1915 Mar 1
|
||||
-3:45 - -0345 1975 Aug 1
|
||||
-3:00 - -03 1992 Mar 29 1:00
|
||||
-4:00 - -04
|
||||
|
||||
# Paraguay
|
||||
@@ -1558,7 +1593,7 @@ Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown
|
||||
# No time of the day is established for the adjustment, so people normally
|
||||
# adjust their clocks at 0 hour of the given dates.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Para 1975 1988 - Oct 1 0:00 1:00 -
|
||||
Rule Para 1975 1978 - Mar 1 0:00 0 -
|
||||
Rule Para 1979 1991 - Apr 1 0:00 0 -
|
||||
@@ -1651,7 +1686,7 @@ Zone America/Asuncion -3:50:40 - LMT 1890
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# Shanks & Pottenger don't have this transition. Assume 1986 was like 1987.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Peru 1938 only - Jan 1 0:00 1:00 -
|
||||
Rule Peru 1938 only - Apr 1 0:00 0 -
|
||||
Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 -
|
||||
@@ -1685,24 +1720,7 @@ Zone America/Paramaribo -3:40:40 - LMT 1911
|
||||
-3:00 - -03
|
||||
|
||||
# Trinidad and Tobago
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2
|
||||
-4:00 - AST
|
||||
|
||||
# These all agree with Trinidad and Tobago since 1970.
|
||||
Link America/Port_of_Spain America/Anguilla
|
||||
Link America/Port_of_Spain America/Antigua
|
||||
Link America/Port_of_Spain America/Dominica
|
||||
Link America/Port_of_Spain America/Grenada
|
||||
Link America/Port_of_Spain America/Guadeloupe
|
||||
Link America/Port_of_Spain America/Marigot # St Martin (French part)
|
||||
Link America/Port_of_Spain America/Montserrat
|
||||
Link America/Port_of_Spain America/St_Barthelemy # St Barthélemy
|
||||
Link America/Port_of_Spain America/St_Kitts # St Kitts & Nevis
|
||||
Link America/Port_of_Spain America/St_Lucia
|
||||
Link America/Port_of_Spain America/St_Thomas # Virgin Islands (US)
|
||||
Link America/Port_of_Spain America/St_Vincent
|
||||
Link America/Port_of_Spain America/Tortola # Virgin Islands (UK)
|
||||
# See America/Puerto_Rico.
|
||||
|
||||
# Uruguay
|
||||
# From Paul Eggert (1993-11-18):
|
||||
@@ -1747,7 +1765,7 @@ Link America/Port_of_Spain America/Tortola # Virgin Islands (UK)
|
||||
# https://www.impo.com.uy/diariooficial/1926/03/10/2
|
||||
# https://www.impo.com.uy/diariooficial/1926/03/18/2
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 -
|
||||
Rule Uruguay 1924 1926 - Apr 1 0:00 0 -
|
||||
# From Tim Parenti (2018-02-15):
|
||||
|
||||
+78
-44
@@ -33,7 +33,7 @@
|
||||
The <a
|
||||
href="https://www.iana.org/time-zones"><code><abbr>tz</abbr></code>
|
||||
database</a> attempts to record the history and predicted future of
|
||||
all computer-based clocks that track civil time.
|
||||
civil time scales.
|
||||
It organizes <a href="tz-link.html">time zone and daylight saving time
|
||||
data</a> by partitioning the world into <a
|
||||
href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"><dfn>timezones</dfn></a>
|
||||
@@ -42,12 +42,13 @@ href="https://en.wikipedia.org/wiki/Unix_time">POSIX Epoch</a>
|
||||
(1970-01-01 00:00:00 <a
|
||||
href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time"><abbr
|
||||
title="Coordinated Universal Time">UTC</abbr></a>).
|
||||
The database labels each timezone with a notable location and
|
||||
records all known clock transitions for that location.
|
||||
Although 1970 is a somewhat-arbitrary cutoff, there are significant
|
||||
challenges to moving the cutoff earlier even by a decade or two, due
|
||||
to the wide variety of local practices before computer timekeeping
|
||||
became prevalent.
|
||||
Most timezones correspond to a notable location and the database
|
||||
records all known clock transitions for that location;
|
||||
some timezones correspond instead to a fixed <abbr>UTC</abbr> offset.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -58,8 +59,9 @@ specifies current standard time. For example, applications that deal
|
||||
with current and future timestamps in the traditional North
|
||||
American mountain time zone can choose from the timezones
|
||||
<code>America/Denver</code> which observes US-style daylight saving
|
||||
time, <code>America/Mazatlan</code> which observes Mexican-style DST,
|
||||
and <code>America/Phoenix</code> which does not observe DST.
|
||||
time (<abbr>DST</abbr>),
|
||||
<code>America/Mazatlan</code> which observes Mexican-style <abbr>DST</abbr>,
|
||||
and <code>America/Phoenix</code> which does not observe <abbr>DST</abbr>.
|
||||
Applications that also deal with past timestamps in the mountain time
|
||||
zone can choose from over a dozen timezones, such as
|
||||
<code>America/Boise</code>, <code>America/Edmonton</code>, and
|
||||
@@ -68,7 +70,7 @@ time but differs from other timezones for some timestamps after 1970.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Clock transitions before 1970 are recorded for each timezone,
|
||||
Clock transitions before 1970 are recorded for location-based timezones,
|
||||
because most systems support timestamps before 1970 and could
|
||||
misbehave if data entries were omitted for pre-1970 transitions.
|
||||
However, the database is not designed for and does not suffice for
|
||||
@@ -115,17 +117,15 @@ Each timezone has a name that uniquely identifies the timezone.
|
||||
Inexperienced users are not expected to select these names unaided.
|
||||
Distributors should provide documentation and/or a simple selection
|
||||
interface that explains each name via a map or via descriptive text like
|
||||
"Ruthenia" instead of the timezone name "<code>Europe/Uzhgorod</code>".
|
||||
"Czech Republic" instead of the timezone name "<code>Europe/Prague</code>".
|
||||
If geolocation information is available, a selection interface can
|
||||
locate the user on a timezone map or prioritize names that are
|
||||
geographically close. For an example selection interface, see the
|
||||
<code>tzselect</code> program in the <code><abbr>tz</abbr></code> code.
|
||||
The <a href="http://cldr.unicode.org/">Unicode Common Locale Data
|
||||
The <a href="http://cldr.unicode.org">Unicode Common Locale Data
|
||||
Repository</a> contains data that may be useful for other selection
|
||||
interfaces; it maps timezone names like <code>Europe/Uzhgorod</code>
|
||||
to CLDR names like <code>uauzh</code> which are in turn mapped to
|
||||
locale-dependent strings like "Uzhhorod", "Ungvár", "Ужгород", and
|
||||
"乌日哥罗德".
|
||||
interfaces; it maps timezone names like <code>Europe/Prague</code> to
|
||||
locale-dependent strings like "Prague", "Praha", "Прага", and "布拉格".
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -192,8 +192,8 @@ in decreasing order of importance:
|
||||
<code>TZ</code> strings</a>.
|
||||
A file name component must not exceed 14 characters or start with
|
||||
'<code>-</code>'.
|
||||
E.g., prefer <code>Asia/Brunei</code> to
|
||||
<code>Asia/Bandar_Seri_Begawan</code>.
|
||||
E.g., prefer <code>America/Noronha</code> to
|
||||
<code>America/Fernando_de_Noronha</code>.
|
||||
Exceptions: see the discussion of legacy names below.
|
||||
</li>
|
||||
<li>
|
||||
@@ -296,7 +296,7 @@ in decreasing order of importance:
|
||||
</li>
|
||||
<li>
|
||||
If a name is changed, put its old spelling in the
|
||||
'<code>backward</code>' file.
|
||||
'<code>backward</code>' file as a link to the new spelling.
|
||||
This means old spellings will continue to work.
|
||||
Ordinarily a name change should occur only in the rare case when
|
||||
a location's consensus English-language spelling changes; for example,
|
||||
@@ -348,22 +348,37 @@ timestamps correctly and it increased maintenance burden.
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The file '<code>zone1970.tab</code>' lists geographical locations used
|
||||
The file <code>zone1970.tab</code> lists geographical locations used
|
||||
to name timezones.
|
||||
It is intended to be an exhaustive list of names for geographic
|
||||
regions as described above; this is a subset of the timezones in the data.
|
||||
Although a '<code>zone1970.tab</code>' location's
|
||||
Although a <code>zone1970.tab</code> location's
|
||||
<a href="https://en.wikipedia.org/wiki/Longitude">longitude</a>
|
||||
corresponds to
|
||||
its <a href="https://en.wikipedia.org/wiki/Local_mean_time">local mean
|
||||
time (<abbr>LMT</abbr>)</a> offset with one hour for every 15°
|
||||
east longitude, this relationship is not exact.
|
||||
The backward-compatibility file <code>zone.tab</code> is similar
|
||||
but conforms to the older-version guidelines related to <abbr>ISO</abbr> 3166-1;
|
||||
it lists only one country code per entry and unlike <code>zone1970.tab</code>
|
||||
it can list names defined in <code>backward</code>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Excluding '<code>backward</code>' should not affect the other data.
|
||||
If '<code>backward</code>' is excluded, excluding
|
||||
'<code>etcetera</code>' should not affect the remaining data.
|
||||
The database defines each timezone name to be a zone, or a link to a zone.
|
||||
The source file <code>backward</code> defines links for backward
|
||||
compatibility; it does not define zones.
|
||||
Although <code>backward</code> was originally designed to be optional,
|
||||
nowadays distributions typically use it
|
||||
and no great weight should be attached to whether a link
|
||||
is defined in <code>backward</code> or in some other file.
|
||||
The source file <code>etcetera</code> defines names that may be useful
|
||||
on platforms that do not support POSIX-style <code>TZ</code> strings;
|
||||
no other source file other than <code>backward</code>
|
||||
contains links to its zones.
|
||||
One of <code>etcetera</code>'s names is <code>GMT</code>,
|
||||
used by functions like <code>gmtime</code> to obtain leap
|
||||
second information on platforms that support leap seconds.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
@@ -475,10 +490,10 @@ in decreasing order of importance:
|
||||
|
||||
<p>
|
||||
<small>These abbreviations are:
|
||||
AMT Amsterdam, Asunción, Athens;
|
||||
BMT Baghdad, Bangkok, Batavia, Bern, Bogotá, Bridgetown, Brussels,
|
||||
Bucharest;
|
||||
CMT Calamarca, Caracas, Chisinau, Colón, Copenhagen, Córdoba;
|
||||
AMT Asunción, Athens;
|
||||
BMT Baghdad, Bangkok, Batavia, Bermuda, Bern, Bogotá, Bridgetown,
|
||||
Brussels, Bucharest;
|
||||
CMT Calamarca, Caracas, Chisinau, Colón, Córdoba;
|
||||
DMT Dublin/Dunsink;
|
||||
EMT Easter;
|
||||
FFMT Fort-de-France;
|
||||
@@ -501,22 +516,22 @@ in decreasing order of importance:
|
||||
SMT Santiago, Simferopol, Singapore, Stanley;
|
||||
TBMT Tbilisi;
|
||||
TMT Tallinn, Tehran;
|
||||
WMT Warsaw</small>.
|
||||
WMT Warsaw;
|
||||
ZMT Zomba.</small>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<small>A few abbreviations also follow the pattern that
|
||||
<abbr>GMT</abbr>/<abbr>BST</abbr> established for time in the UK.
|
||||
They are:
|
||||
BMT/BST for Bermuda 1890–1930,
|
||||
CMT/BST for Calamarca Mean Time and Bolivian Summer Time
|
||||
1890–1932,
|
||||
DMT/IST for Dublin/Dunsink Mean Time and Irish Summer Time
|
||||
1880–1916,
|
||||
MMT/MST/MDST for Moscow 1880–1919, and
|
||||
RMT/LST for Riga Mean Time and Latvian Summer time 1880–1926.
|
||||
An extra-special case is SET for Swedish Time (<em>svensk
|
||||
normaltid</em>) 1879–1899, 3° west of the Stockholm
|
||||
Observatory.</small>
|
||||
</small>
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
@@ -692,14 +707,20 @@ href="https://www.dissentmagazine.org/blog/booked-a-global-history-of-time-vanes
|
||||
often not specified to the accuracy that the
|
||||
<code><abbr>tz</abbr></code> database requires.
|
||||
</li>
|
||||
<li>
|
||||
The <code><abbr>tz</abbr></code> database cannot represent stopped clocks.
|
||||
However, on 1911-03-11 at 00:00, some public-facing French clocks
|
||||
were changed by stopping them for a few minutes to effect a transition.
|
||||
The <code><abbr>tz</abbr></code> database models this via a
|
||||
backward transition; the relevant French legislation does not
|
||||
specify exactly how the transition was to occur.
|
||||
</li>
|
||||
<li>
|
||||
Sometimes historical timekeeping was specified more precisely
|
||||
than what the <code><abbr>tz</abbr></code> code can handle.
|
||||
For example, from 1909 to 1937 <a
|
||||
href="https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm"
|
||||
hreflang="nl">Netherlands clocks</a> were legally Amsterdam Mean
|
||||
For example, from 1880 to 1916 clocks in Ireland observed Dublin Mean
|
||||
Time (estimated to be <abbr>UT</abbr>
|
||||
+00:19:32.13), but the <code><abbr>tz</abbr></code>
|
||||
−00:25:21.1), but the <code><abbr>tz</abbr></code>
|
||||
code cannot represent the fractional second.
|
||||
In practice these old specifications were rarely if ever
|
||||
implemented to subsecond precision.
|
||||
@@ -746,7 +767,8 @@ href="https://www.dissentmagazine.org/blog/booked-a-global-history-of-time-vanes
|
||||
the Western 06:00 to be 12:00. These practices are largely outside
|
||||
the scope of the <code><abbr>tz</abbr></code> code and data, which
|
||||
provide only limited support for date and time localization
|
||||
such as that required by POSIX. If DST is not used a different time zone
|
||||
such as that required by POSIX.
|
||||
If <abbr>DST</abbr> is not used a different time zone
|
||||
can often do the trick; for example, in Kenya a <code>TZ</code> setting
|
||||
like <code><-03>3</code> or <code>America/Cayenne</code> starts
|
||||
the day six hours later than <code>Africa/Nairobi</code> does.
|
||||
@@ -1264,7 +1286,8 @@ The directly-supported mechanism assumes that <code>time_t</code>
|
||||
counts of seconds since the POSIX epoch normally include leap seconds,
|
||||
as opposed to POSIX <code>time_t</code> counts which exclude leap seconds.
|
||||
This modified timescale is converted to <abbr>UTC</abbr>
|
||||
at the same point that time zone and DST adjustments are applied –
|
||||
at the same point that time zone and <abbr>DST</abbr>
|
||||
adjustments are applied –
|
||||
namely, at calls to <code>localtime</code> and analogous functions –
|
||||
and the process is driven by leap second information
|
||||
stored in alternate versions of the <abbr>TZif</abbr> files.
|
||||
@@ -1321,17 +1344,21 @@ They sometimes disagree.
|
||||
<section>
|
||||
<h2 id="planets">Time and time zones on other planets</h2>
|
||||
<p>
|
||||
Some people's work schedules
|
||||
use <a href="https://en.wikipedia.org/wiki/Timekeeping_on_Mars">Mars time</a>.
|
||||
Some people's work schedules have used
|
||||
<a href="https://en.wikipedia.org/wiki/Timekeeping_on_Mars">Mars time</a>.
|
||||
Jet Propulsion Laboratory (JPL) coordinators kept Mars time on
|
||||
and off during the
|
||||
<a href="https://en.wikipedia.org/wiki/Mars_Pathfinder">Mars
|
||||
Pathfinder</a> mission.
|
||||
Pathfinder</a> mission (1997).
|
||||
Some of their family members also adapted to Mars time.
|
||||
Dozens of special Mars watches were built for JPL workers who kept
|
||||
Mars time during the Mars Exploration Rovers mission (2004).
|
||||
These timepieces look like normal Seikos and Citizens but use Mars
|
||||
seconds rather than terrestrial seconds.
|
||||
Mars time during the
|
||||
<a href="https://en.wikipedia.org/wiki/Mars_Exploration_Rover">Mars
|
||||
Exploration Rovers (MER)</a> mission (2004–2018).
|
||||
These timepieces looked like normal Seikos and Citizens but were adjusted
|
||||
to use Mars seconds rather than terrestrial seconds, although
|
||||
unfortunately the adjusted watches were unreliable and appear to have
|
||||
had only limited use.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -1339,6 +1366,8 @@ A Mars solar day is called a "sol" and has a mean period equal to
|
||||
about 24 hours 39 minutes 35.244 seconds in terrestrial time.
|
||||
It is divided into a conventional 24-hour clock, so each Mars second
|
||||
equals about 1.02749125 terrestrial seconds.
|
||||
(One MER worker noted, "If I am working Mars hours, and Mars hours are
|
||||
2.5% more than Earth hours, shouldn't I get an extra 2.5% pay raise?")
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -1354,12 +1383,12 @@ called Mars Coordinated Time (<abbr>MTC</abbr>).
|
||||
<p>
|
||||
Each landed mission on Mars has adopted a different reference for
|
||||
solar timekeeping, so there is no real standard for Mars time zones.
|
||||
For example, the
|
||||
<a href="https://en.wikipedia.org/wiki/Mars_Exploration_Rover">Mars
|
||||
Exploration Rover</a> project (2004) defined two time zones "Local
|
||||
For example, the MER mission defined two time zones "Local
|
||||
Solar Time A" and "Local Solar Time B" for its two missions, each zone
|
||||
designed so that its time equals local true solar time at
|
||||
approximately the middle of the nominal mission.
|
||||
The A and B zones differ enough so that an MER worker assigned to
|
||||
the A zone might suffer "Mars lag" when switching to work in the B zone.
|
||||
Such a "time zone" is not particularly suited for any application
|
||||
other than the mission itself.
|
||||
</p>
|
||||
@@ -1408,7 +1437,12 @@ Sources for time on other planets:
|
||||
Michael Allison and Robert Schmunk,
|
||||
"<a href="https://www.giss.nasa.gov/tools/mars24/help/notes.html">Technical
|
||||
Notes on Mars Solar Time as Adopted by the Mars24 Sunclock</a>"
|
||||
(2018-12-13).
|
||||
(2020-03-08).
|
||||
</li>
|
||||
<li>
|
||||
Zara Mirmalek,
|
||||
<em><a href="https://mitpress.mit.edu/books/making-time-mars">Making
|
||||
Time on Mars</a></em>, MIT Press (March 2020), ISBN 978-0262043854.
|
||||
</li>
|
||||
<li>
|
||||
Jia-Rui Chong,
|
||||
|
||||
@@ -1 +1 @@
|
||||
2020a
|
||||
2022a
|
||||
+26
-11
@@ -3,6 +3,13 @@
|
||||
# Contributed by Paul Eggert. This file is in the public domain.
|
||||
|
||||
# This is not a general-purpose converter; it is designed for current tzdata.
|
||||
# It just converts from current source to main, vanguard, and rearguard forms.
|
||||
# Although it might be nice for it to be idempotent, or to be useful
|
||||
# for converting back and forth between vanguard and rearguard formats,
|
||||
# it does not do these nonessential tasks now.
|
||||
#
|
||||
# Although main and vanguard forms are currently equivalent,
|
||||
# this need not always be the case.
|
||||
#
|
||||
# When converting to vanguard form, the output can use negative SAVE
|
||||
# values.
|
||||
@@ -28,9 +35,9 @@ DATAFORM != "main" {
|
||||
in_comment = /^#/
|
||||
uncomment = comment_out = 0
|
||||
|
||||
# If the line should differ due to Czechoslovakia using negative SAVE values,
|
||||
# If this line should differ due to Czechoslovakia using negative SAVE values,
|
||||
# uncomment the desired version and comment out the undesired one.
|
||||
if (zone == "Europe/Prague" && /1947 Feb 23/) {
|
||||
if (zone == "Europe/Prague" && /^#?[\t ]+[01]:00[\t ]/ && /1947 Feb 23/) {
|
||||
if (($(in_comment + 2) != "-") == vanguard) {
|
||||
uncomment = in_comment
|
||||
} else {
|
||||
@@ -58,10 +65,11 @@ DATAFORM != "main" {
|
||||
# uncomment the desired version and comment out the undesired one.
|
||||
Rule_Namibia = /^#?Rule[\t ]+Namibia[\t ]/
|
||||
Zone_using_Namibia_rule \
|
||||
= (zone == "Africa/Windhoek" \
|
||||
= (zone == "Africa/Windhoek" && /^#?[\t ]+[12]:00[\t ]/ \
|
||||
&& ($(in_comment + 2) == "Namibia" \
|
||||
|| (1994 <= $(in_comment + 4) && $(in_comment + 4) <= 2017) \
|
||||
|| in_comment + 3 == NF))
|
||||
|| ($(in_comment + 2) == "-" && $(in_comment + 3) == "CAT" \
|
||||
&& ((1994 <= $(in_comment + 4) && $(in_comment + 4) <= 2017) \
|
||||
|| in_comment + 3 == NF))))
|
||||
if (Rule_Namibia || Zone_using_Namibia_rule) {
|
||||
if ((Rule_Namibia \
|
||||
? ($(in_comment + 9) ~ /^-/ \
|
||||
@@ -96,25 +104,32 @@ DATAFORM != "main" {
|
||||
}
|
||||
if (!vanguard && $1 == "Rule" && $2 == "Morocco" && 2019 <= $3) {
|
||||
if ($9 == "0") {
|
||||
last_std_date = $3 " " $6 " " $7 " " $8
|
||||
sub(/\t0\t/, "\t1:00\t")
|
||||
} else {
|
||||
sub(/\t-1:00\t/, "\t0\t")
|
||||
}
|
||||
}
|
||||
if (!vanguard && $1 == "1:00" && $2 == "Morocco" && $3 == "+01/+00") {
|
||||
sub(/1:00\tMorocco\t\+01\/\+00$/, "0:00\tMorocco\t+00/+01")
|
||||
# This introduces a transition from 01:59:59 +00 to 03:00:00 +01
|
||||
# with both times being standard (i.e., a change to standard UT offset).
|
||||
# This is rearguard's way to approximate the actual prediction,
|
||||
# which is that of an ordinary transition from DST to standard time.
|
||||
sub(/1:00\tMorocco\t\+01\/\+00$/,
|
||||
"0:00\tMorocco\t+00/+01\t" last_std_date "\n\t\t\t 1:00\t-\t+01")
|
||||
}
|
||||
}
|
||||
|
||||
# If a Link line is followed by a Zone line for the same data, comment
|
||||
# If a Link line is followed by a Link or Zone line for the same data, comment
|
||||
# out the Link line. This can happen if backzone overrides a Link
|
||||
# with a Zone.
|
||||
/^Link/ {
|
||||
linkline[$3] = NR
|
||||
}
|
||||
# with a Zone or a different Link.
|
||||
/^Zone/ {
|
||||
sub(/^Link/, "#Link", line[linkline[$2]])
|
||||
}
|
||||
/^Link/ {
|
||||
sub(/^Link/, "#Link", line[linkline[$3]])
|
||||
linkline[$3] = NR
|
||||
}
|
||||
|
||||
{ line[NR] = $0 }
|
||||
|
||||
|
||||
@@ -166,9 +166,6 @@ function process_input_line(line, \
|
||||
ruleline = sub(/^Rule /, "R ", line)
|
||||
zoneline = sub(/^Zone /, "Z ", line)
|
||||
|
||||
# SystemV rules are not needed.
|
||||
if (line ~ /^R SystemV /) return
|
||||
|
||||
# Replace FooAsia rules with the same rules without "Asia", as they
|
||||
# are duplicates.
|
||||
if (match(line, /[^ ]Asia /)) {
|
||||
@@ -275,7 +272,6 @@ BEGIN {
|
||||
default_dep["factory"] = 1
|
||||
default_dep["northamerica"] = 1
|
||||
default_dep["southamerica"] = 1
|
||||
default_dep["systemv"] = 1
|
||||
default_dep["ziguard.awk"] = 1
|
||||
default_dep["zishrink.awk"] = 1
|
||||
|
||||
|
||||
+10
-8
@@ -3,7 +3,7 @@
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
#
|
||||
# From Paul Eggert (2018-06-27):
|
||||
# From Paul Eggert (2021-09-20):
|
||||
# This file is intended as a backward-compatibility aid for older programs.
|
||||
# New programs should use zone1970.tab. This file is like zone1970.tab (see
|
||||
# zone1970.tab's comments), but with the following additional restrictions:
|
||||
@@ -16,6 +16,9 @@
|
||||
# clocks have agreed since 1970; this is a narrower definition than
|
||||
# that of zone1970.tab.
|
||||
#
|
||||
# Unlike zone1970.tab, a row's third column can be a Link from
|
||||
# 'backward' instead of a Zone.
|
||||
#
|
||||
# This table is intended as an aid for users, to help them select timezones
|
||||
# appropriate for their practical needs. It is not intended to take or
|
||||
# endorse any position on legal or territorial claims.
|
||||
@@ -56,8 +59,7 @@ AS -1416-17042 Pacific/Pago_Pago
|
||||
AT +4813+01620 Europe/Vienna
|
||||
AU -3133+15905 Australia/Lord_Howe Lord Howe Island
|
||||
AU -5430+15857 Antarctica/Macquarie Macquarie Island
|
||||
AU -4253+14719 Australia/Hobart Tasmania (most areas)
|
||||
AU -3956+14352 Australia/Currie Tasmania (King Island)
|
||||
AU -4253+14719 Australia/Hobart Tasmania
|
||||
AU -3749+14458 Australia/Melbourne Victoria
|
||||
AU -3352+15113 Australia/Sydney New South Wales (most areas)
|
||||
AU -3157+14127 Australia/Broken_Hill New South Wales (Yancowinna)
|
||||
@@ -130,9 +132,9 @@ CA +682059-1334300 America/Inuvik Mountain - NT (west)
|
||||
CA +4906-11631 America/Creston MST - BC (Creston)
|
||||
CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
|
||||
CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson)
|
||||
CA +6043-13503 America/Whitehorse MST - Yukon (east)
|
||||
CA +6404-13925 America/Dawson MST - Yukon (west)
|
||||
CA +4916-12307 America/Vancouver Pacific - BC (most areas)
|
||||
CA +6043-13503 America/Whitehorse Pacific - Yukon (east)
|
||||
CA +6404-13925 America/Dawson Pacific - Yukon (west)
|
||||
CC -1210+09655 Indian/Cocos
|
||||
CD -0418+01518 Africa/Kinshasa Dem. Rep. of Congo (west)
|
||||
CD -1140+02728 Africa/Lubumbashi Dem. Rep. of Congo (east)
|
||||
@@ -229,7 +231,7 @@ KE -0117+03649 Africa/Nairobi
|
||||
KG +4254+07436 Asia/Bishkek
|
||||
KH +1133+10455 Asia/Phnom_Penh
|
||||
KI +0125+17300 Pacific/Tarawa Gilbert Islands
|
||||
KI -0308-17105 Pacific/Enderbury Phoenix Islands
|
||||
KI -0247-17143 Pacific/Kanton Phoenix Islands
|
||||
KI +0152-15720 Pacific/Kiritimati Line Islands
|
||||
KM -1141+04316 Indian/Comoro
|
||||
KN +1718-06243 America/St_Kitts
|
||||
@@ -337,8 +339,8 @@ RU +554521+0373704 Europe/Moscow MSK+00 - Moscow area
|
||||
# Programs should use zone1970.tab instead; see above.
|
||||
UA +4457+03406 Europe/Simferopol Crimea
|
||||
RU +5836+04939 Europe/Kirov MSK+00 - Kirov
|
||||
RU +4844+04425 Europe/Volgograd MSK+00 - Volgograd
|
||||
RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan
|
||||
RU +4844+04425 Europe/Volgograd MSK+01 - Volgograd
|
||||
RU +5134+04602 Europe/Saratov MSK+01 - Saratov
|
||||
RU +5420+04824 Europe/Ulyanovsk MSK+01 - Ulyanovsk
|
||||
RU +5312+05009 Europe/Samara MSK+01 - Samara, Udmurtia
|
||||
@@ -392,7 +394,7 @@ TK -0922-17114 Pacific/Fakaofo
|
||||
TL -0833+12535 Asia/Dili
|
||||
TM +3757+05823 Asia/Ashgabat
|
||||
TN +3648+01011 Africa/Tunis
|
||||
TO -2110-17510 Pacific/Tongatapu
|
||||
TO -210800-1751200 Pacific/Tongatapu
|
||||
TR +4101+02858 Europe/Istanbul
|
||||
TT +1039-06131 America/Port_of_Spain
|
||||
TV -0831+17913 Pacific/Funafuti
|
||||
|
||||
+14
-24
@@ -41,11 +41,9 @@ AL +4120+01950 Europe/Tirane
|
||||
AM +4011+04430 Asia/Yerevan
|
||||
AQ -6617+11031 Antarctica/Casey Casey
|
||||
AQ -6835+07758 Antarctica/Davis Davis
|
||||
AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville
|
||||
AQ -6736+06253 Antarctica/Mawson Mawson
|
||||
AQ -6448-06406 Antarctica/Palmer Palmer
|
||||
AQ -6734-06808 Antarctica/Rothera Rothera
|
||||
AQ -690022+0393524 Antarctica/Syowa Syowa
|
||||
AQ -720041+0023206 Antarctica/Troll Troll
|
||||
AQ -7824+10654 Antarctica/Vostok Vostok
|
||||
AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
|
||||
@@ -64,8 +62,7 @@ AS,UM -1416-17042 Pacific/Pago_Pago Samoa, Midway
|
||||
AT +4813+01620 Europe/Vienna
|
||||
AU -3133+15905 Australia/Lord_Howe Lord Howe Island
|
||||
AU -5430+15857 Antarctica/Macquarie Macquarie Island
|
||||
AU -4253+14719 Australia/Hobart Tasmania (most areas)
|
||||
AU -3956+14352 Australia/Currie Tasmania (King Island)
|
||||
AU -4253+14719 Australia/Hobart Tasmania
|
||||
AU -3749+14458 Australia/Melbourne Victoria
|
||||
AU -3352+15113 Australia/Sydney New South Wales (most areas)
|
||||
AU -3157+14127 Australia/Broken_Hill New South Wales (Yancowinna)
|
||||
@@ -99,7 +96,6 @@ BR +0249-06040 America/Boa_Vista Roraima
|
||||
BR -0308-06001 America/Manaus Amazonas (east)
|
||||
BR -0640-06952 America/Eirunepe Amazonas (west)
|
||||
BR -0958-06748 America/Rio_Branco Acre
|
||||
BS +2505-07721 America/Nassau
|
||||
BT +2728+08939 Asia/Thimphu
|
||||
BY +5354+02734 Europe/Minsk
|
||||
BZ +1730-08812 America/Belize
|
||||
@@ -108,13 +104,11 @@ CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE
|
||||
CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton)
|
||||
CA +4606-06447 America/Moncton Atlantic - New Brunswick
|
||||
CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas)
|
||||
CA +5125-05707 America/Blanc-Sablon AST - QC (Lower North Shore)
|
||||
CA +4339-07923 America/Toronto Eastern - ON, QC (most areas)
|
||||
CA,BS +4339-07923 America/Toronto Eastern - ON, QC (most areas), Bahamas
|
||||
CA +4901-08816 America/Nipigon Eastern - ON, QC (no DST 1967-73)
|
||||
CA +4823-08915 America/Thunder_Bay Eastern - ON (Thunder Bay)
|
||||
CA +6344-06828 America/Iqaluit Eastern - NU (most east areas)
|
||||
CA +6608-06544 America/Pangnirtung Eastern - NU (Pangnirtung)
|
||||
CA +484531-0913718 America/Atikokan EST - ON (Atikokan); NU (Coral H)
|
||||
CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba
|
||||
CA +4843-09434 America/Rainy_River Central - ON (Rainy R, Ft Frances)
|
||||
CA +744144-0944945 America/Resolute Central - NU (Resolute)
|
||||
@@ -125,15 +119,14 @@ CA +5333-11328 America/Edmonton Mountain - AB; BC (E); SK (W)
|
||||
CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west)
|
||||
CA +6227-11421 America/Yellowknife Mountain - NT (central)
|
||||
CA +682059-1334300 America/Inuvik Mountain - NT (west)
|
||||
CA +4906-11631 America/Creston MST - BC (Creston)
|
||||
CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
|
||||
CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson)
|
||||
CA +6043-13503 America/Whitehorse MST - Yukon (east)
|
||||
CA +6404-13925 America/Dawson MST - Yukon (west)
|
||||
CA +4916-12307 America/Vancouver Pacific - BC (most areas)
|
||||
CA +6043-13503 America/Whitehorse Pacific - Yukon (east)
|
||||
CA +6404-13925 America/Dawson Pacific - Yukon (west)
|
||||
CC -1210+09655 Indian/Cocos
|
||||
CH,DE,LI +4723+00832 Europe/Zurich Swiss time
|
||||
CI,BF,GM,GN,ML,MR,SH,SL,SN,TG +0519-00402 Africa/Abidjan
|
||||
CI,BF,GH,GM,GN,ML,MR,SH,SL,SN,TG +0519-00402 Africa/Abidjan
|
||||
CK -2114-15946 Pacific/Rarotonga
|
||||
CL -3327-07040 America/Santiago Chile (most areas)
|
||||
CL -5309-07055 America/Punta_Arenas Region of Magallanes
|
||||
@@ -144,7 +137,6 @@ CO +0436-07405 America/Bogota
|
||||
CR +0956-08405 America/Costa_Rica
|
||||
CU +2308-08222 America/Havana
|
||||
CV +1455-02331 Atlantic/Cape_Verde
|
||||
CW,AW,BQ,SX +1211-06900 America/Curacao
|
||||
CX -1025+10543 Indian/Christmas
|
||||
CY +3510+03322 Asia/Nicosia Cyprus (most areas)
|
||||
CY +3507+03357 Asia/Famagusta Northern Cyprus
|
||||
@@ -172,7 +164,6 @@ FR +4852+00220 Europe/Paris
|
||||
GB,GG,IM,JE +513030-0000731 Europe/London
|
||||
GE +4143+04449 Asia/Tbilisi
|
||||
GF +0456-05220 America/Cayenne
|
||||
GH +0533-00013 Africa/Accra
|
||||
GI +3608-00521 Europe/Gibraltar
|
||||
GL +6411-05144 America/Nuuk Greenland (most areas)
|
||||
GL +7646-01840 America/Danmarkshavn National Park (east coast)
|
||||
@@ -206,7 +197,7 @@ JP +353916+1394441 Asia/Tokyo
|
||||
KE,DJ,ER,ET,KM,MG,SO,TZ,UG,YT -0117+03649 Africa/Nairobi
|
||||
KG +4254+07436 Asia/Bishkek
|
||||
KI +0125+17300 Pacific/Tarawa Gilbert Islands
|
||||
KI -0308-17105 Pacific/Enderbury Phoenix Islands
|
||||
KI -0247-17143 Pacific/Kanton Phoenix Islands
|
||||
KI +0152-15720 Pacific/Kiritimati Line Islands
|
||||
KP +3901+12545 Asia/Pyongyang
|
||||
KR +3733+12658 Asia/Seoul
|
||||
@@ -264,19 +255,19 @@ NR -0031+16655 Pacific/Nauru
|
||||
NU -1901-16955 Pacific/Niue
|
||||
NZ,AQ -3652+17446 Pacific/Auckland New Zealand time
|
||||
NZ -4357-17633 Pacific/Chatham Chatham Islands
|
||||
PA,KY +0858-07932 America/Panama
|
||||
PA,CA,KY +0858-07932 America/Panama EST - Panama, Cayman, ON (Atikokan), NU (Coral H)
|
||||
PE -1203-07703 America/Lima
|
||||
PF -1732-14934 Pacific/Tahiti Society Islands
|
||||
PF -0900-13930 Pacific/Marquesas Marquesas Islands
|
||||
PF -2308-13457 Pacific/Gambier Gambier Islands
|
||||
PG -0930+14710 Pacific/Port_Moresby Papua New Guinea (most areas)
|
||||
PG,AQ -0930+14710 Pacific/Port_Moresby Papua New Guinea (most areas), Dumont d'Urville
|
||||
PG -0613+15534 Pacific/Bougainville Bougainville
|
||||
PH +1435+12100 Asia/Manila
|
||||
PK +2452+06703 Asia/Karachi
|
||||
PL +5215+02100 Europe/Warsaw
|
||||
PM +4703-05620 America/Miquelon
|
||||
PN -2504-13005 Pacific/Pitcairn
|
||||
PR +182806-0660622 America/Puerto_Rico
|
||||
PR,AG,CA,AI,AW,BL,BQ,CW,DM,GD,GP,KN,LC,MF,MS,SX,TT,VC,VG,VI +182806-0660622 America/Puerto_Rico AST
|
||||
PS +3130+03428 Asia/Gaza Gaza Strip
|
||||
PS +313200+0350542 Asia/Hebron West Bank
|
||||
PT +3843-00908 Europe/Lisbon Portugal (mainland)
|
||||
@@ -293,8 +284,8 @@ RU +554521+0373704 Europe/Moscow MSK+00 - Moscow area
|
||||
# Mention RU and UA alphabetically. See "territorial claims" above.
|
||||
RU,UA +4457+03406 Europe/Simferopol Crimea
|
||||
RU +5836+04939 Europe/Kirov MSK+00 - Kirov
|
||||
RU +4844+04425 Europe/Volgograd MSK+00 - Volgograd
|
||||
RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan
|
||||
RU +4844+04425 Europe/Volgograd MSK+01 - Volgograd
|
||||
RU +5134+04602 Europe/Saratov MSK+01 - Saratov
|
||||
RU +5420+04824 Europe/Ulyanovsk MSK+01 - Ulyanovsk
|
||||
RU +5312+05009 Europe/Samara MSK+01 - Samara, Udmurtia
|
||||
@@ -316,12 +307,12 @@ RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island
|
||||
RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); North Kuril Is
|
||||
RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka
|
||||
RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea
|
||||
SA,KW,YE +2438+04643 Asia/Riyadh
|
||||
SA,AQ,KW,YE +2438+04643 Asia/Riyadh Arabia, Syowa
|
||||
SB -0932+16012 Pacific/Guadalcanal
|
||||
SC -0440+05528 Indian/Mahe
|
||||
SD +1536+03232 Africa/Khartoum
|
||||
SE +5920+01803 Europe/Stockholm
|
||||
SG +0117+10351 Asia/Singapore
|
||||
SG,MY +0117+10351 Asia/Singapore Singapore, peninsular Malaysia
|
||||
SR +0550-05510 America/Paramaribo
|
||||
SS +0451+03137 Africa/Juba
|
||||
ST +0020+00644 Africa/Sao_Tome
|
||||
@@ -336,9 +327,8 @@ TK -0922-17114 Pacific/Fakaofo
|
||||
TL -0833+12535 Asia/Dili
|
||||
TM +3757+05823 Asia/Ashgabat
|
||||
TN +3648+01011 Africa/Tunis
|
||||
TO -2110-17510 Pacific/Tongatapu
|
||||
TO -210800-1751200 Pacific/Tongatapu
|
||||
TR +4101+02858 Europe/Istanbul
|
||||
TT,AG,AI,BL,DM,GD,GP,KN,LC,MF,MS,VC,VG,VI +1039-06131 America/Port_of_Spain
|
||||
TV -0831+17913 Pacific/Funafuti
|
||||
TW +2503+12130 Asia/Taipei
|
||||
UA +5026+03031 Europe/Kiev Ukraine (most areas)
|
||||
@@ -364,7 +354,7 @@ US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural)
|
||||
US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer)
|
||||
US +394421-1045903 America/Denver Mountain (most areas)
|
||||
US +433649-1161209 America/Boise Mountain - ID (south); OR (east)
|
||||
US +332654-1120424 America/Phoenix MST - Arizona (except Navajo)
|
||||
US,CA +332654-1120424 America/Phoenix MST - Arizona (except Navajo), Creston BC
|
||||
US +340308-1181434 America/Los_Angeles Pacific
|
||||
US +611305-1495401 America/Anchorage Alaska (most areas)
|
||||
US +581807-1342511 America/Juneau Alaska - Juneau area
|
||||
|
||||
@@ -38,7 +38,7 @@ while (<>) {
|
||||
}
|
||||
$contZone = $fields[1] if @fields > 5;
|
||||
} elsif ($type eq 'rule') {
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
@fields == 10 or warn "bad rule line";
|
||||
} elsif ($type eq 'link') {
|
||||
# Link TARGET LINK-NAME
|
||||
|
||||
@@ -7,6 +7,33 @@
|
||||
https://github.com/openssl/openssl/commits/ and pick the appropriate
|
||||
release branch.
|
||||
|
||||
Changes between 1.1.1g and 1.1.1h [22 Sep 2020]
|
||||
|
||||
*) Certificates with explicit curve parameters are now disallowed in
|
||||
verification chains if the X509_V_FLAG_X509_STRICT flag is used.
|
||||
[Tomas Mraz]
|
||||
|
||||
*) The 'MinProtocol' and 'MaxProtocol' configuration commands now silently
|
||||
ignore TLS protocol version bounds when configuring DTLS-based contexts, and
|
||||
conversely, silently ignore DTLS protocol version bounds when configuring
|
||||
TLS-based contexts. The commands can be repeated to set bounds of both
|
||||
types. The same applies with the corresponding "min_protocol" and
|
||||
"max_protocol" command-line switches, in case some application uses both TLS
|
||||
and DTLS.
|
||||
|
||||
SSL_CTX instances that are created for a fixed protocol version (e.g.
|
||||
TLSv1_server_method()) also silently ignore version bounds. Previously
|
||||
attempts to apply bounds to these protocol versions would result in an
|
||||
error. Now only the "version-flexible" SSL_CTX instances are subject to
|
||||
limits in configuration files in command-line options.
|
||||
[Viktor Dukhovni]
|
||||
|
||||
*) Handshake now fails if Extended Master Secret extension is dropped
|
||||
on renegotiation.
|
||||
[Tomas Mraz]
|
||||
|
||||
*) The Oracle Developer Studio compiler will start reporting deprecated APIs
|
||||
|
||||
Changes between 1.1.1f and 1.1.1g [21 Apr 2020]
|
||||
|
||||
*) Fixed segmentation fault in SSL_check_chain()
|
||||
|
||||
@@ -217,12 +217,22 @@ sub resolve_config;
|
||||
# Unified build supports separate build dir
|
||||
my $srcdir = catdir(absolutedir(dirname($0))); # catdir ensures local syntax
|
||||
my $blddir = catdir(absolutedir(".")); # catdir ensures local syntax
|
||||
|
||||
# File::Spec::Unix doesn't detect case insensitivity, so we make sure to
|
||||
# check if the source and build directory are really the same, and make
|
||||
# them so. This avoids all kinds of confusion later on.
|
||||
# We must check @File::Spec::ISA rather than using File::Spec->isa() to
|
||||
# know if File::Spec ended up loading File::Spec::Unix.
|
||||
$srcdir = $blddir
|
||||
if (grep(/::Unix$/, @File::Spec::ISA)
|
||||
&& samedir($srcdir, $blddir));
|
||||
|
||||
my $dofile = abs2rel(catfile($srcdir, "util/dofile.pl"));
|
||||
|
||||
my $local_config_envname = 'OPENSSL_LOCAL_CONFIG_DIR';
|
||||
|
||||
$config{sourcedir} = abs2rel($srcdir);
|
||||
$config{builddir} = abs2rel($blddir);
|
||||
$config{sourcedir} = abs2rel($srcdir, $blddir);
|
||||
$config{builddir} = abs2rel($blddir, $blddir);
|
||||
|
||||
# Collect reconfiguration information if needed
|
||||
my @argvcopy=@ARGV;
|
||||
@@ -1049,6 +1059,9 @@ if (scalar(@seed_sources) == 0) {
|
||||
print "Using os-specific seed configuration\n";
|
||||
push @seed_sources, 'os';
|
||||
}
|
||||
if (scalar(grep { $_ eq 'egd' } @seed_sources) > 0) {
|
||||
delete $disabled{'egd'};
|
||||
}
|
||||
if (scalar(grep { $_ eq 'none' } @seed_sources) > 0) {
|
||||
die "Cannot seed with none and anything else" if scalar(@seed_sources) > 1;
|
||||
warn <<_____ if scalar(@seed_sources) == 1;
|
||||
@@ -3424,6 +3437,27 @@ sub absolutedir {
|
||||
return realpath($dir);
|
||||
}
|
||||
|
||||
# Check if all paths are one and the same, using stat. They must both exist
|
||||
# We need this for the cases when File::Spec doesn't detect case insensitivity
|
||||
# (File::Spec::Unix assumes case sensitivity)
|
||||
sub samedir {
|
||||
die "samedir expects two arguments\n" unless scalar @_ == 2;
|
||||
|
||||
my @stat0 = stat($_[0]); # First argument
|
||||
my @stat1 = stat($_[1]); # Second argument
|
||||
|
||||
die "Couldn't stat $_[0]" unless @stat0;
|
||||
die "Couldn't stat $_[1]" unless @stat1;
|
||||
|
||||
# Compare device number
|
||||
return 0 unless ($stat0[0] == $stat1[0]);
|
||||
# Compare "inode". The perl manual recommends comparing as
|
||||
# string rather than as number.
|
||||
return 0 unless ($stat0[1] eq $stat1[1]);
|
||||
|
||||
return 1; # All the same
|
||||
}
|
||||
|
||||
sub quotify {
|
||||
my %processors = (
|
||||
perl => sub { my $x = shift;
|
||||
|
||||
@@ -5,6 +5,14 @@
|
||||
This file gives a brief overview of the major changes between each OpenSSL
|
||||
release. For more details please read the CHANGES file.
|
||||
|
||||
Major changes between OpenSSL 1.1.1g and OpenSSL 1.1.1h [22 Sep 2020]
|
||||
|
||||
o Disallow explicit curve parameters in verifications chains when
|
||||
X509_V_FLAG_X509_STRICT is used
|
||||
o Enable 'MinProtocol' and 'MaxProtocol' to configure both TLS and DTLS
|
||||
contexts
|
||||
o Oracle Developer Studio will start reporting deprecation warnings
|
||||
|
||||
Major changes between OpenSSL 1.1.1f and OpenSSL 1.1.1g [21 Apr 2020]
|
||||
|
||||
o Fixed segmentation fault in SSL_check_chain() (CVE-2020-1967)
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
|
||||
$ cpan -f -i Text::Template
|
||||
|
||||
Note: on VMS, you must quote any argument that contains upper case
|
||||
Note: on VMS, you must quote any argument that contains uppercase
|
||||
characters, so the lines above would be:
|
||||
|
||||
$ cpan -i "Text::Template"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
OpenSSL 1.1.1g 21 Apr 2020
|
||||
OpenSSL 1.1.1h 22 Sep 2020
|
||||
|
||||
Copyright (c) 1998-2020 The OpenSSL Project
|
||||
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -177,9 +177,12 @@ int genpkey_main(int argc, char **argv)
|
||||
goto end;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
if (rv <= 0) {
|
||||
BIO_puts(bio_err, "Error writing key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
if (text) {
|
||||
@@ -191,11 +194,10 @@ int genpkey_main(int argc, char **argv)
|
||||
if (rv <= 0) {
|
||||
BIO_puts(bio_err, "Error printing key\n");
|
||||
ERR_print_errors(bio_err);
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
end:
|
||||
EVP_PKEY_free(pkey);
|
||||
EVP_PKEY_CTX_free(ctx);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
|
||||
MIISKAIBAAKCBAEAiQ2f1X6Bte1DKD0OoCBKEikzPW+5w3oXk3WwnE97Wxzy6wJZ
|
||||
ebbZC3CZKKBnJeBMrysPf+lK+9+fP6Vm8bp1wvbcSIA59BDrX6irFSuM/bdnkbuF
|
||||
MFlDjt+uVrxwoyqfPi2IPot1HQg3l5mdyBqcTWvbOnU2L9HZxJfPUCjfzdTMPrMY
|
||||
@@ -62,7 +61,7 @@ JH1/Qx7C/mTAMRsN5SkOthnGq0djCNWfPv/3JV0H67Uf5krFlnwLebrgfTYoPPdo
|
||||
yO7iBUNJzv6Qh22malLp4P8gzACkD7DGlSTnoB5cLwcjmDGg+i9WrUBbOiVTeQfZ
|
||||
kOj1o+Tz35ndpq/DDUVlqliB9krcxva+QHeJPH53EGI+YVg1nD+s/vUDZ3mQMGX9
|
||||
DQou2L8uU6RnWNv/BihGcL8QvS4Ty6QyPOUPpD3zc70JQAEcQk9BxQNaELgJX0IN
|
||||
22cYn22tYvElew9G41OpDqzBRcfbdJmKXQ2HcroShutYJQRGUpAXHk24fy6JVkIU
|
||||
2cYUn22tYvElew9G41OpDqzBRcfbdJmKXQ2HcroShutYJQRGUpAXHk24fy6JVkIU
|
||||
ojF5U6cwextMja1ZIIZgh9eugIRUeIE7319nQNDzuXWjRCcoBLA25P7wnpHWDRpz
|
||||
D9ovXCIvdja74lL5psqobV6L5+fbLPkSgXoImKR0LQKCAgAIC9Jk8kxumCyIVGCP
|
||||
PeM5Uby9M3GMuKrfYsn0Y5e97+kSJF1dpojTodBgR2KQar6eVrvXt+8uZCcIjfx8
|
||||
@@ -98,4 +97,3 @@ TwEgE67iOb2iIoUpon/NyP4LesMzvdpsu2JFlfz13PmmQ34mFI7tWvOb3NA5DP3c
|
||||
rMlMLtKfp2w8HlMZpsUlToNCx6CI+tJrohzcs3BAVAbjFAXRKWGijB1rxwyDdHPv
|
||||
I+/wJTNaRNPQ1M0SwtEL/zJd21y3KSPn4eL+GP3efhlDSjtlDvZqkdAUsU8=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2005 Nokia. All rights reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
@@ -1283,22 +1283,42 @@ int s_client_main(int argc, char **argv)
|
||||
case OPT_SSL3:
|
||||
min_version = SSL3_VERSION;
|
||||
max_version = SSL3_VERSION;
|
||||
socket_type = SOCK_STREAM;
|
||||
#ifndef OPENSSL_NO_DTLS
|
||||
isdtls = 0;
|
||||
#endif
|
||||
break;
|
||||
case OPT_TLS1_3:
|
||||
min_version = TLS1_3_VERSION;
|
||||
max_version = TLS1_3_VERSION;
|
||||
socket_type = SOCK_STREAM;
|
||||
#ifndef OPENSSL_NO_DTLS
|
||||
isdtls = 0;
|
||||
#endif
|
||||
break;
|
||||
case OPT_TLS1_2:
|
||||
min_version = TLS1_2_VERSION;
|
||||
max_version = TLS1_2_VERSION;
|
||||
socket_type = SOCK_STREAM;
|
||||
#ifndef OPENSSL_NO_DTLS
|
||||
isdtls = 0;
|
||||
#endif
|
||||
break;
|
||||
case OPT_TLS1_1:
|
||||
min_version = TLS1_1_VERSION;
|
||||
max_version = TLS1_1_VERSION;
|
||||
socket_type = SOCK_STREAM;
|
||||
#ifndef OPENSSL_NO_DTLS
|
||||
isdtls = 0;
|
||||
#endif
|
||||
break;
|
||||
case OPT_TLS1:
|
||||
min_version = TLS1_VERSION;
|
||||
max_version = TLS1_VERSION;
|
||||
socket_type = SOCK_STREAM;
|
||||
#ifndef OPENSSL_NO_DTLS
|
||||
isdtls = 0;
|
||||
#endif
|
||||
break;
|
||||
case OPT_DTLS:
|
||||
#ifndef OPENSSL_NO_DTLS
|
||||
|
||||
@@ -140,9 +140,9 @@ const OPTIONS x509_options[] = {
|
||||
{"", OPT_MD, '-', "Any supported digest"},
|
||||
#ifndef OPENSSL_NO_MD5
|
||||
{"subject_hash_old", OPT_SUBJECT_HASH_OLD, '-',
|
||||
"Print old-style (MD5) issuer hash value"},
|
||||
{"issuer_hash_old", OPT_ISSUER_HASH_OLD, '-',
|
||||
"Print old-style (MD5) subject hash value"},
|
||||
{"issuer_hash_old", OPT_ISSUER_HASH_OLD, '-',
|
||||
"Print old-style (MD5) issuer hash value"},
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
{"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"},
|
||||
|
||||
@@ -46,7 +46,8 @@ before_build:
|
||||
- cd ..
|
||||
- ps: >-
|
||||
if (-not $env:APPVEYOR_PULL_REQUEST_NUMBER`
|
||||
-or (&git log -2 | Select-String "\[extended tests\]") ) {
|
||||
-or (&git log -1 $env:APPVEYOR_PULL_REQUEST_HEAD_COMMIT |
|
||||
Select-String "\[extended tests\]") ) {
|
||||
$env:EXTENDED_TESTS="yes"
|
||||
}
|
||||
|
||||
|
||||
@@ -673,357 +673,6 @@ void AES_decrypt(const unsigned char *in, unsigned char *out,
|
||||
|
||||
InvCipher(in, out, rk, key->rounds);
|
||||
}
|
||||
|
||||
# ifndef OPENSSL_SMALL_FOOTPRINT
|
||||
void AES_ctr32_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t blocks, const AES_KEY *key,
|
||||
const unsigned char *ivec);
|
||||
|
||||
static void RawToBits(const u8 raw[64], u64 bits[8])
|
||||
{
|
||||
int i, j;
|
||||
u64 in, out;
|
||||
|
||||
memset(bits, 0, 64);
|
||||
for (i = 0; i < 8; i++) {
|
||||
in = 0;
|
||||
for (j = 0; j < 8; j++)
|
||||
in |= ((u64)raw[i * 8 + j]) << (8 * j);
|
||||
out = in & 0xF0F0F0F00F0F0F0FuLL;
|
||||
out |= (in & 0x0F0F0F0F00000000uLL) >> 28;
|
||||
out |= (in & 0x00000000F0F0F0F0uLL) << 28;
|
||||
in = out & 0xCCCC3333CCCC3333uLL;
|
||||
in |= (out & 0x3333000033330000uLL) >> 14;
|
||||
in |= (out & 0x0000CCCC0000CCCCuLL) << 14;
|
||||
out = in & 0xAA55AA55AA55AA55uLL;
|
||||
out |= (in & 0x5500550055005500uLL) >> 7;
|
||||
out |= (in & 0x00AA00AA00AA00AAuLL) << 7;
|
||||
for (j = 0; j < 8; j++) {
|
||||
bits[j] |= (out & 0xFFuLL) << (8 * i);
|
||||
out = out >> 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void BitsToRaw(const u64 bits[8], u8 raw[64])
|
||||
{
|
||||
int i, j;
|
||||
u64 in, out;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
in = 0;
|
||||
for (j = 0; j < 8; j++)
|
||||
in |= ((bits[j] >> (8 * i)) & 0xFFuLL) << (8 * j);
|
||||
out = in & 0xF0F0F0F00F0F0F0FuLL;
|
||||
out |= (in & 0x0F0F0F0F00000000uLL) >> 28;
|
||||
out |= (in & 0x00000000F0F0F0F0uLL) << 28;
|
||||
in = out & 0xCCCC3333CCCC3333uLL;
|
||||
in |= (out & 0x3333000033330000uLL) >> 14;
|
||||
in |= (out & 0x0000CCCC0000CCCCuLL) << 14;
|
||||
out = in & 0xAA55AA55AA55AA55uLL;
|
||||
out |= (in & 0x5500550055005500uLL) >> 7;
|
||||
out |= (in & 0x00AA00AA00AA00AAuLL) << 7;
|
||||
for (j = 0; j < 8; j++) {
|
||||
raw[i * 8 + j] = (u8)out;
|
||||
out = out >> 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void BitsXtime(u64 state[8])
|
||||
{
|
||||
u64 b;
|
||||
|
||||
b = state[7];
|
||||
state[7] = state[6];
|
||||
state[6] = state[5];
|
||||
state[5] = state[4];
|
||||
state[4] = state[3] ^ b;
|
||||
state[3] = state[2] ^ b;
|
||||
state[2] = state[1];
|
||||
state[1] = state[0] ^ b;
|
||||
state[0] = b;
|
||||
}
|
||||
|
||||
/*
|
||||
* This S-box implementation follows a circuit described in
|
||||
* Boyar and Peralta: "A new combinational logic minimization
|
||||
* technique with applications to cryptology."
|
||||
* https://eprint.iacr.org/2009/191.pdf
|
||||
*
|
||||
* The math is similar to above, in that it uses
|
||||
* a tower field of GF(2^2^2^2) but with a different
|
||||
* basis representation, that is better suited to
|
||||
* logic designs.
|
||||
*/
|
||||
static void BitsSub(u64 state[8])
|
||||
{
|
||||
u64 x0, x1, x2, x3, x4, x5, x6, x7;
|
||||
u64 y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11;
|
||||
u64 y12, y13, y14, y15, y16, y17, y18, y19, y20, y21;
|
||||
u64 t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11;
|
||||
u64 t12, t13, t14, t15, t16, t17, t18, t19, t20, t21;
|
||||
u64 t22, t23, t24, t25, t26, t27, t28, t29, t30, t31;
|
||||
u64 t32, t33, t34, t35, t36, t37, t38, t39, t40, t41;
|
||||
u64 t42, t43, t44, t45, t46, t47, t48, t49, t50, t51;
|
||||
u64 t52, t53, t54, t55, t56, t57, t58, t59, t60, t61;
|
||||
u64 t62, t63, t64, t65, t66, t67;
|
||||
u64 z0, z1, z2, z3, z4, z5, z6, z7, z8, z9, z10, z11;
|
||||
u64 z12, z13, z14, z15, z16, z17;
|
||||
u64 s0, s1, s2, s3, s4, s5, s6, s7;
|
||||
|
||||
x7 = state[0];
|
||||
x6 = state[1];
|
||||
x5 = state[2];
|
||||
x4 = state[3];
|
||||
x3 = state[4];
|
||||
x2 = state[5];
|
||||
x1 = state[6];
|
||||
x0 = state[7];
|
||||
y14 = x3 ^ x5;
|
||||
y13 = x0 ^ x6;
|
||||
y9 = x0 ^ x3;
|
||||
y8 = x0 ^ x5;
|
||||
t0 = x1 ^ x2;
|
||||
y1 = t0 ^ x7;
|
||||
y4 = y1 ^ x3;
|
||||
y12 = y13 ^ y14;
|
||||
y2 = y1 ^ x0;
|
||||
y5 = y1 ^ x6;
|
||||
y3 = y5 ^ y8;
|
||||
t1 = x4 ^ y12;
|
||||
y15 = t1 ^ x5;
|
||||
y20 = t1 ^ x1;
|
||||
y6 = y15 ^ x7;
|
||||
y10 = y15 ^ t0;
|
||||
y11 = y20 ^ y9;
|
||||
y7 = x7 ^ y11;
|
||||
y17 = y10 ^ y11;
|
||||
y19 = y10 ^ y8;
|
||||
y16 = t0 ^ y11;
|
||||
y21 = y13 ^ y16;
|
||||
y18 = x0 ^ y16;
|
||||
t2 = y12 & y15;
|
||||
t3 = y3 & y6;
|
||||
t4 = t3 ^ t2;
|
||||
t5 = y4 & x7;
|
||||
t6 = t5 ^ t2;
|
||||
t7 = y13 & y16;
|
||||
t8 = y5 & y1;
|
||||
t9 = t8 ^ t7;
|
||||
t10 = y2 & y7;
|
||||
t11 = t10 ^ t7;
|
||||
t12 = y9 & y11;
|
||||
t13 = y14 & y17;
|
||||
t14 = t13 ^ t12;
|
||||
t15 = y8 & y10;
|
||||
t16 = t15 ^ t12;
|
||||
t17 = t4 ^ t14;
|
||||
t18 = t6 ^ t16;
|
||||
t19 = t9 ^ t14;
|
||||
t20 = t11 ^ t16;
|
||||
t21 = t17 ^ y20;
|
||||
t22 = t18 ^ y19;
|
||||
t23 = t19 ^ y21;
|
||||
t24 = t20 ^ y18;
|
||||
t25 = t21 ^ t22;
|
||||
t26 = t21 & t23;
|
||||
t27 = t24 ^ t26;
|
||||
t28 = t25 & t27;
|
||||
t29 = t28 ^ t22;
|
||||
t30 = t23 ^ t24;
|
||||
t31 = t22 ^ t26;
|
||||
t32 = t31 & t30;
|
||||
t33 = t32 ^ t24;
|
||||
t34 = t23 ^ t33;
|
||||
t35 = t27 ^ t33;
|
||||
t36 = t24 & t35;
|
||||
t37 = t36 ^ t34;
|
||||
t38 = t27 ^ t36;
|
||||
t39 = t29 & t38;
|
||||
t40 = t25 ^ t39;
|
||||
t41 = t40 ^ t37;
|
||||
t42 = t29 ^ t33;
|
||||
t43 = t29 ^ t40;
|
||||
t44 = t33 ^ t37;
|
||||
t45 = t42 ^ t41;
|
||||
z0 = t44 & y15;
|
||||
z1 = t37 & y6;
|
||||
z2 = t33 & x7;
|
||||
z3 = t43 & y16;
|
||||
z4 = t40 & y1;
|
||||
z5 = t29 & y7;
|
||||
z6 = t42 & y11;
|
||||
z7 = t45 & y17;
|
||||
z8 = t41 & y10;
|
||||
z9 = t44 & y12;
|
||||
z10 = t37 & y3;
|
||||
z11 = t33 & y4;
|
||||
z12 = t43 & y13;
|
||||
z13 = t40 & y5;
|
||||
z14 = t29 & y2;
|
||||
z15 = t42 & y9;
|
||||
z16 = t45 & y14;
|
||||
z17 = t41 & y8;
|
||||
t46 = z15 ^ z16;
|
||||
t47 = z10 ^ z11;
|
||||
t48 = z5 ^ z13;
|
||||
t49 = z9 ^ z10;
|
||||
t50 = z2 ^ z12;
|
||||
t51 = z2 ^ z5;
|
||||
t52 = z7 ^ z8;
|
||||
t53 = z0 ^ z3;
|
||||
t54 = z6 ^ z7;
|
||||
t55 = z16 ^ z17;
|
||||
t56 = z12 ^ t48;
|
||||
t57 = t50 ^ t53;
|
||||
t58 = z4 ^ t46;
|
||||
t59 = z3 ^ t54;
|
||||
t60 = t46 ^ t57;
|
||||
t61 = z14 ^ t57;
|
||||
t62 = t52 ^ t58;
|
||||
t63 = t49 ^ t58;
|
||||
t64 = z4 ^ t59;
|
||||
t65 = t61 ^ t62;
|
||||
t66 = z1 ^ t63;
|
||||
s0 = t59 ^ t63;
|
||||
s6 = ~(t56 ^ t62);
|
||||
s7 = ~(t48 ^ t60);
|
||||
t67 = t64 ^ t65;
|
||||
s3 = t53 ^ t66;
|
||||
s4 = t51 ^ t66;
|
||||
s5 = t47 ^ t65;
|
||||
s1 = ~(t64 ^ s3);
|
||||
s2 = ~(t55 ^ t67);
|
||||
state[0] = s7;
|
||||
state[1] = s6;
|
||||
state[2] = s5;
|
||||
state[3] = s4;
|
||||
state[4] = s3;
|
||||
state[5] = s2;
|
||||
state[6] = s1;
|
||||
state[7] = s0;
|
||||
}
|
||||
|
||||
static void BitsShiftRows(u64 state[8])
|
||||
{
|
||||
u64 s, s0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
s = state[i];
|
||||
s0 = s & 0x1111111111111111uLL;
|
||||
s0 |= ((s & 0x2220222022202220uLL) >> 4) | ((s & 0x0002000200020002uLL) << 12);
|
||||
s0 |= ((s & 0x4400440044004400uLL) >> 8) | ((s & 0x0044004400440044uLL) << 8);
|
||||
s0 |= ((s & 0x8000800080008000uLL) >> 12) | ((s & 0x0888088808880888uLL) << 4);
|
||||
state[i] = s0;
|
||||
}
|
||||
}
|
||||
|
||||
static void BitsMixColumns(u64 state[8])
|
||||
{
|
||||
u64 s1, s;
|
||||
u64 s0[8];
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
s1 = state[i];
|
||||
s = s1;
|
||||
s ^= ((s & 0xCCCCCCCCCCCCCCCCuLL) >> 2) | ((s & 0x3333333333333333uLL) << 2);
|
||||
s ^= ((s & 0xAAAAAAAAAAAAAAAAuLL) >> 1) | ((s & 0x5555555555555555uLL) << 1);
|
||||
s ^= s1;
|
||||
s0[i] = s;
|
||||
}
|
||||
BitsXtime(state);
|
||||
for (i = 0; i < 8; i++) {
|
||||
s1 = state[i];
|
||||
s = s0[i];
|
||||
s ^= s1;
|
||||
s ^= ((s1 & 0xEEEEEEEEEEEEEEEEuLL) >> 1) | ((s1 & 0x1111111111111111uLL) << 3);
|
||||
state[i] = s;
|
||||
}
|
||||
}
|
||||
|
||||
static void BitsAddRoundKey(u64 state[8], const u64 key[8])
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
state[i] ^= key[i];
|
||||
}
|
||||
|
||||
void AES_ctr32_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t blocks, const AES_KEY *key,
|
||||
const unsigned char *ivec)
|
||||
{
|
||||
struct {
|
||||
u8 cipher[64];
|
||||
u64 state[8];
|
||||
u64 rd_key[AES_MAXNR + 1][8];
|
||||
} *bs;
|
||||
u32 ctr32;
|
||||
int i;
|
||||
|
||||
ctr32 = GETU32(ivec + 12);
|
||||
if (blocks >= 4
|
||||
&& (bs = OPENSSL_malloc(sizeof(*bs)))) {
|
||||
for (i = 0; i < key->rounds + 1; i++) {
|
||||
memcpy(bs->cipher + 0, &key->rd_key[4 * i], 16);
|
||||
memcpy(bs->cipher + 16, bs->cipher, 16);
|
||||
memcpy(bs->cipher + 32, bs->cipher, 32);
|
||||
RawToBits(bs->cipher, bs->rd_key[i]);
|
||||
}
|
||||
while (blocks) {
|
||||
memcpy(bs->cipher, ivec, 12);
|
||||
PUTU32(bs->cipher + 12, ctr32);
|
||||
ctr32++;
|
||||
memcpy(bs->cipher + 16, ivec, 12);
|
||||
PUTU32(bs->cipher + 28, ctr32);
|
||||
ctr32++;
|
||||
memcpy(bs->cipher + 32, ivec, 12);
|
||||
PUTU32(bs->cipher + 44, ctr32);
|
||||
ctr32++;
|
||||
memcpy(bs->cipher + 48, ivec, 12);
|
||||
PUTU32(bs->cipher + 60, ctr32);
|
||||
ctr32++;
|
||||
RawToBits(bs->cipher, bs->state);
|
||||
BitsAddRoundKey(bs->state, bs->rd_key[0]);
|
||||
for (i = 1; i < key->rounds; i++) {
|
||||
BitsSub(bs->state);
|
||||
BitsShiftRows(bs->state);
|
||||
BitsMixColumns(bs->state);
|
||||
BitsAddRoundKey(bs->state, bs->rd_key[i]);
|
||||
}
|
||||
BitsSub(bs->state);
|
||||
BitsShiftRows(bs->state);
|
||||
BitsAddRoundKey(bs->state, bs->rd_key[key->rounds]);
|
||||
BitsToRaw(bs->state, bs->cipher);
|
||||
for (i = 0; i < 64 && blocks; i++) {
|
||||
out[i] = in[i] ^ bs->cipher[i];
|
||||
if ((i & 15) == 15)
|
||||
blocks--;
|
||||
}
|
||||
in += i;
|
||||
out += i;
|
||||
}
|
||||
OPENSSL_clear_free(bs, sizeof(*bs));
|
||||
} else {
|
||||
unsigned char cipher[16];
|
||||
|
||||
while (blocks) {
|
||||
memcpy(cipher, ivec, 12);
|
||||
PUTU32(cipher + 12, ctr32);
|
||||
AES_encrypt(cipher, cipher, key);
|
||||
for (i = 0; i < 16; i++)
|
||||
out[i] = in[i] ^ cipher[i];
|
||||
in += 16;
|
||||
out += 16;
|
||||
ctr32++;
|
||||
blocks--;
|
||||
}
|
||||
}
|
||||
}
|
||||
# endif
|
||||
#elif !defined(AES_ASM)
|
||||
/*-
|
||||
Te0[x] = S [x].[02, 01, 01, 03];
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -12,11 +12,6 @@
|
||||
#include <openssl/aes.h>
|
||||
#include "aes_local.h"
|
||||
|
||||
#define N_WORDS (AES_BLOCK_SIZE / sizeof(unsigned long))
|
||||
typedef struct {
|
||||
unsigned long data[N_WORDS];
|
||||
} aes_block_t;
|
||||
|
||||
/* XXX: probably some better way to do this */
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
# define UNALIGNED_MEMOPS_ARE_FAST 1
|
||||
@@ -24,6 +19,15 @@ typedef struct {
|
||||
# define UNALIGNED_MEMOPS_ARE_FAST 0
|
||||
#endif
|
||||
|
||||
#define N_WORDS (AES_BLOCK_SIZE / sizeof(unsigned long))
|
||||
typedef struct {
|
||||
unsigned long data[N_WORDS];
|
||||
#if defined(__GNUC__) && UNALIGNED_MEMOPS_ARE_FAST
|
||||
} aes_block_t __attribute((__aligned__(1)));
|
||||
#else
|
||||
} aes_block_t;
|
||||
#endif
|
||||
|
||||
#if UNALIGNED_MEMOPS_ARE_FAST
|
||||
# define load_block(d, s) (d) = *(const aes_block_t *)(s)
|
||||
# define store_block(d, s) *(aes_block_t *)(d) = (s)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -49,6 +49,7 @@ static const ERR_STRING_DATA ASN1_str_functs[] = {
|
||||
"asn1_item_embed_d2i"},
|
||||
{ERR_PACK(ERR_LIB_ASN1, ASN1_F_ASN1_ITEM_EMBED_NEW, 0),
|
||||
"asn1_item_embed_new"},
|
||||
{ERR_PACK(ERR_LIB_ASN1, ASN1_F_ASN1_ITEM_EX_I2D, 0), "ASN1_item_ex_i2d"},
|
||||
{ERR_PACK(ERR_LIB_ASN1, ASN1_F_ASN1_ITEM_FLAGS_I2D, 0),
|
||||
"asn1_item_flags_i2d"},
|
||||
{ERR_PACK(ERR_LIB_ASN1, ASN1_F_ASN1_ITEM_I2D_BIO, 0), "ASN1_item_i2d_bio"},
|
||||
@@ -160,6 +161,7 @@ static const ERR_STRING_DATA ASN1_str_reasons[] = {
|
||||
"asn1 sig parse error"},
|
||||
{ERR_PACK(ERR_LIB_ASN1, 0, ASN1_R_AUX_ERROR), "aux error"},
|
||||
{ERR_PACK(ERR_LIB_ASN1, 0, ASN1_R_BAD_OBJECT_HEADER), "bad object header"},
|
||||
{ERR_PACK(ERR_LIB_ASN1, 0, ASN1_R_BAD_TEMPLATE), "bad template"},
|
||||
{ERR_PACK(ERR_LIB_ASN1, 0, ASN1_R_BMPSTRING_IS_WRONG_LENGTH),
|
||||
"bmpstring is wrong length"},
|
||||
{ERR_PACK(ERR_LIB_ASN1, 0, ASN1_R_BN_LIB), "bn lib"},
|
||||
|
||||
@@ -292,7 +292,12 @@ int ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len_in)
|
||||
}
|
||||
if ((size_t)str->length <= len || str->data == NULL) {
|
||||
c = str->data;
|
||||
#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
/* No NUL terminator in fuzzing builds */
|
||||
str->data = OPENSSL_realloc(c, len);
|
||||
#else
|
||||
str->data = OPENSSL_realloc(c, len + 1);
|
||||
#endif
|
||||
if (str->data == NULL) {
|
||||
ASN1err(ASN1_F_ASN1_STRING_SET, ERR_R_MALLOC_FAILURE);
|
||||
str->data = c;
|
||||
@@ -302,8 +307,13 @@ int ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len_in)
|
||||
str->length = len;
|
||||
if (data != NULL) {
|
||||
memcpy(str->data, data, len);
|
||||
/* an allowance for strings :-) */
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
/*
|
||||
* Add a NUL terminator. This should not be necessary - but we add it as
|
||||
* a safety precaution
|
||||
*/
|
||||
str->data[len] = '\0';
|
||||
#endif
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -56,6 +56,8 @@ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
|
||||
goto err;
|
||||
EVP_PKEY_free(ret);
|
||||
ret = tmp;
|
||||
if (EVP_PKEY_type(type) != EVP_PKEY_base_id(ret))
|
||||
goto err;
|
||||
} else {
|
||||
ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_ASN1_LIB);
|
||||
goto err;
|
||||
|
||||
@@ -38,7 +38,7 @@ int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki)
|
||||
}
|
||||
chal = spki->spkac->challenge;
|
||||
if (chal->length)
|
||||
BIO_printf(out, " Challenge String: %s\n", chal->data);
|
||||
BIO_printf(out, " Challenge String: %.*s\n", chal->length, chal->data);
|
||||
i = OBJ_obj2nid(spki->sig_algor.algorithm);
|
||||
BIO_printf(out, " Signature Algorithm: %s",
|
||||
(i == NID_undef) ? "UNKNOWN" : OBJ_nid2ln(i));
|
||||
|
||||
@@ -182,6 +182,15 @@ static int asn1_item_embed_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
||||
tag, aclass, opt, ctx);
|
||||
|
||||
case ASN1_ITYPE_MSTRING:
|
||||
/*
|
||||
* It never makes sense for multi-strings to have implicit tagging, so
|
||||
* if tag != -1, then this looks like an error in the template.
|
||||
*/
|
||||
if (tag != -1) {
|
||||
ASN1err(ASN1_F_ASN1_ITEM_EMBED_D2I, ASN1_R_BAD_TEMPLATE);
|
||||
goto err;
|
||||
}
|
||||
|
||||
p = *in;
|
||||
/* Just read in tag and class */
|
||||
ret = asn1_check_tlen(NULL, &otag, &oclass, NULL, NULL,
|
||||
@@ -199,6 +208,7 @@ static int asn1_item_embed_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
||||
ASN1err(ASN1_F_ASN1_ITEM_EMBED_D2I, ASN1_R_MSTRING_NOT_UNIVERSAL);
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Check tag matches bit map */
|
||||
if (!(ASN1_tag2bit(otag) & it->utype)) {
|
||||
/* If OPTIONAL, assume this is OK */
|
||||
@@ -215,6 +225,15 @@ static int asn1_item_embed_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
||||
return ef->asn1_ex_d2i(pval, in, len, it, tag, aclass, opt, ctx);
|
||||
|
||||
case ASN1_ITYPE_CHOICE:
|
||||
/*
|
||||
* It never makes sense for CHOICE types to have implicit tagging, so
|
||||
* if tag != -1, then this looks like an error in the template.
|
||||
*/
|
||||
if (tag != -1) {
|
||||
ASN1err(ASN1_F_ASN1_ITEM_EMBED_D2I, ASN1_R_BAD_TEMPLATE);
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it, NULL))
|
||||
goto auxerr;
|
||||
if (*pval) {
|
||||
|
||||
@@ -103,9 +103,25 @@ int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
|
||||
return asn1_i2d_ex_primitive(pval, out, it, tag, aclass);
|
||||
|
||||
case ASN1_ITYPE_MSTRING:
|
||||
/*
|
||||
* It never makes sense for multi-strings to have implicit tagging, so
|
||||
* if tag != -1, then this looks like an error in the template.
|
||||
*/
|
||||
if (tag != -1) {
|
||||
ASN1err(ASN1_F_ASN1_ITEM_EX_I2D, ASN1_R_BAD_TEMPLATE);
|
||||
return -1;
|
||||
}
|
||||
return asn1_i2d_ex_primitive(pval, out, it, -1, aclass);
|
||||
|
||||
case ASN1_ITYPE_CHOICE:
|
||||
/*
|
||||
* It never makes sense for CHOICE types to have implicit tagging, so
|
||||
* if tag != -1, then this looks like an error in the template.
|
||||
*/
|
||||
if (tag != -1) {
|
||||
ASN1err(ASN1_F_ASN1_ITEM_EX_I2D, ASN1_R_BAD_TEMPLATE);
|
||||
return -1;
|
||||
}
|
||||
if (asn1_cb && !asn1_cb(ASN1_OP_I2D_PRE, pval, it, NULL))
|
||||
return 0;
|
||||
i = asn1_get_choice_selector(pval, it);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -92,3 +92,35 @@ int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b)
|
||||
return 0;
|
||||
return ASN1_TYPE_cmp(a->parameter, b->parameter);
|
||||
}
|
||||
|
||||
int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src)
|
||||
{
|
||||
if (src == NULL || dest == NULL)
|
||||
return 0;
|
||||
|
||||
if (dest->algorithm)
|
||||
ASN1_OBJECT_free(dest->algorithm);
|
||||
dest->algorithm = NULL;
|
||||
|
||||
if (dest->parameter)
|
||||
ASN1_TYPE_free(dest->parameter);
|
||||
dest->parameter = NULL;
|
||||
|
||||
if (src->algorithm)
|
||||
if ((dest->algorithm = OBJ_dup(src->algorithm)) == NULL)
|
||||
return 0;
|
||||
|
||||
if (src->parameter) {
|
||||
dest->parameter = ASN1_TYPE_new();
|
||||
if (dest->parameter == NULL)
|
||||
return 0;
|
||||
|
||||
/* Assuming this is also correct for a BOOL.
|
||||
* set does copy as a side effect.
|
||||
*/
|
||||
if (ASN1_TYPE_set1(dest->parameter,
|
||||
src->parameter->type, src->parameter->value.ptr) == 0)
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -635,7 +635,11 @@ fmtfp(char **sbuffer,
|
||||
fvalue = tmpvalue;
|
||||
}
|
||||
ufvalue = abs_val(fvalue);
|
||||
if (ufvalue > ULONG_MAX) {
|
||||
/*
|
||||
* By subtracting 65535 (2^16-1) we cancel the low order 15 bits
|
||||
* of ULONG_MAX to avoid using imprecise floating point values.
|
||||
*/
|
||||
if (ufvalue >= (double)(ULONG_MAX - 65535) + 65536.0) {
|
||||
/* Number too big */
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -434,8 +434,10 @@ static long acpt_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
b->init = 1;
|
||||
} else if (num == 1) {
|
||||
OPENSSL_free(data->param_serv);
|
||||
data->param_serv = BUF_strdup(ptr);
|
||||
b->init = 1;
|
||||
if ((data->param_serv = OPENSSL_strdup(ptr)) == NULL)
|
||||
ret = 0;
|
||||
else
|
||||
b->init = 1;
|
||||
} else if (num == 2) {
|
||||
data->bind_mode |= BIO_SOCK_NONBLOCK;
|
||||
} else if (num == 3) {
|
||||
|
||||
@@ -186,8 +186,17 @@ static int conn_state(BIO *b, BIO_CONNECT *c)
|
||||
|
||||
case BIO_CONN_S_BLOCKED_CONNECT:
|
||||
i = BIO_sock_error(b->num);
|
||||
if (i) {
|
||||
if (i != 0) {
|
||||
BIO_clear_retry_flags(b);
|
||||
if ((c->addr_iter = BIO_ADDRINFO_next(c->addr_iter)) != NULL) {
|
||||
/*
|
||||
* if there are more addresses to try, do that first
|
||||
*/
|
||||
BIO_closesocket(b->num);
|
||||
c->state = BIO_CONN_S_CREATE_SOCKET;
|
||||
ERR_clear_error();
|
||||
break;
|
||||
}
|
||||
SYSerr(SYS_F_CONNECT, i);
|
||||
ERR_add_error_data(4,
|
||||
"hostname=", c->param_hostname,
|
||||
@@ -407,12 +416,13 @@ static long conn_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
case BIO_C_SET_CONNECT:
|
||||
if (ptr != NULL) {
|
||||
b->init = 1;
|
||||
if (num == 0) {
|
||||
if (num == 0) { /* BIO_set_conn_hostname */
|
||||
char *hold_service = data->param_service;
|
||||
/* We affect the hostname regardless. However, the input
|
||||
* string might contain a host:service spec, so we must
|
||||
* parse it, which might or might not affect the service
|
||||
*/
|
||||
|
||||
OPENSSL_free(data->param_hostname);
|
||||
data->param_hostname = NULL;
|
||||
ret = BIO_parse_hostserv(ptr,
|
||||
@@ -421,19 +431,29 @@ static long conn_ctrl(BIO *b, int cmd, long num, void *ptr)
|
||||
BIO_PARSE_PRIO_HOST);
|
||||
if (hold_service != data->param_service)
|
||||
OPENSSL_free(hold_service);
|
||||
} else if (num == 1) {
|
||||
} else if (num == 1) { /* BIO_set_conn_port */
|
||||
OPENSSL_free(data->param_service);
|
||||
data->param_service = BUF_strdup(ptr);
|
||||
} else if (num == 2) {
|
||||
if ((data->param_service = OPENSSL_strdup(ptr)) == NULL)
|
||||
ret = 0;
|
||||
} else if (num == 2) { /* BIO_set_conn_address */
|
||||
const BIO_ADDR *addr = (const BIO_ADDR *)ptr;
|
||||
char *host = BIO_ADDR_hostname_string(addr, 1);
|
||||
char *service = BIO_ADDR_service_string(addr, 1);
|
||||
|
||||
ret = host != NULL && service != NULL;
|
||||
if (ret) {
|
||||
data->param_hostname = BIO_ADDR_hostname_string(addr, 1);
|
||||
data->param_service = BIO_ADDR_service_string(addr, 1);
|
||||
OPENSSL_free(data->param_hostname);
|
||||
data->param_hostname = host;
|
||||
OPENSSL_free(data->param_service);
|
||||
data->param_service = service;
|
||||
BIO_ADDRINFO_free(data->addr_first);
|
||||
data->addr_first = NULL;
|
||||
data->addr_iter = NULL;
|
||||
} else {
|
||||
OPENSSL_free(host);
|
||||
OPENSSL_free(service);
|
||||
}
|
||||
} else if (num == 3) {
|
||||
} else if (num == 3) { /* BIO_set_conn_ip_family */
|
||||
data->connect_family = *(int *)ptr;
|
||||
} else {
|
||||
ret = 0;
|
||||
|
||||
+201
-185
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -10,22 +10,189 @@
|
||||
#include "internal/cryptlib.h"
|
||||
#include "bn_local.h"
|
||||
|
||||
/* solves ax == 1 (mod n) */
|
||||
static BIGNUM *BN_mod_inverse_no_branch(BIGNUM *in,
|
||||
const BIGNUM *a, const BIGNUM *n,
|
||||
BN_CTX *ctx);
|
||||
|
||||
BIGNUM *BN_mod_inverse(BIGNUM *in,
|
||||
const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx)
|
||||
/*
|
||||
* bn_mod_inverse_no_branch is a special version of BN_mod_inverse. It does
|
||||
* not contain branches that may leak sensitive information.
|
||||
*
|
||||
* This is a static function, we ensure all callers in this file pass valid
|
||||
* arguments: all passed pointers here are non-NULL.
|
||||
*/
|
||||
static ossl_inline
|
||||
BIGNUM *bn_mod_inverse_no_branch(BIGNUM *in,
|
||||
const BIGNUM *a, const BIGNUM *n,
|
||||
BN_CTX *ctx, int *pnoinv)
|
||||
{
|
||||
BIGNUM *rv;
|
||||
int noinv;
|
||||
rv = int_bn_mod_inverse(in, a, n, ctx, &noinv);
|
||||
if (noinv)
|
||||
BNerr(BN_F_BN_MOD_INVERSE, BN_R_NO_INVERSE);
|
||||
return rv;
|
||||
BIGNUM *A, *B, *X, *Y, *M, *D, *T, *R = NULL;
|
||||
BIGNUM *ret = NULL;
|
||||
int sign;
|
||||
|
||||
bn_check_top(a);
|
||||
bn_check_top(n);
|
||||
|
||||
BN_CTX_start(ctx);
|
||||
A = BN_CTX_get(ctx);
|
||||
B = BN_CTX_get(ctx);
|
||||
X = BN_CTX_get(ctx);
|
||||
D = BN_CTX_get(ctx);
|
||||
M = BN_CTX_get(ctx);
|
||||
Y = BN_CTX_get(ctx);
|
||||
T = BN_CTX_get(ctx);
|
||||
if (T == NULL)
|
||||
goto err;
|
||||
|
||||
if (in == NULL)
|
||||
R = BN_new();
|
||||
else
|
||||
R = in;
|
||||
if (R == NULL)
|
||||
goto err;
|
||||
|
||||
BN_one(X);
|
||||
BN_zero(Y);
|
||||
if (BN_copy(B, a) == NULL)
|
||||
goto err;
|
||||
if (BN_copy(A, n) == NULL)
|
||||
goto err;
|
||||
A->neg = 0;
|
||||
|
||||
if (B->neg || (BN_ucmp(B, A) >= 0)) {
|
||||
/*
|
||||
* Turn BN_FLG_CONSTTIME flag on, so that when BN_div is invoked,
|
||||
* BN_div_no_branch will be called eventually.
|
||||
*/
|
||||
{
|
||||
BIGNUM local_B;
|
||||
bn_init(&local_B);
|
||||
BN_with_flags(&local_B, B, BN_FLG_CONSTTIME);
|
||||
if (!BN_nnmod(B, &local_B, A, ctx))
|
||||
goto err;
|
||||
/* Ensure local_B goes out of scope before any further use of B */
|
||||
}
|
||||
}
|
||||
sign = -1;
|
||||
/*-
|
||||
* From B = a mod |n|, A = |n| it follows that
|
||||
*
|
||||
* 0 <= B < A,
|
||||
* -sign*X*a == B (mod |n|),
|
||||
* sign*Y*a == A (mod |n|).
|
||||
*/
|
||||
|
||||
while (!BN_is_zero(B)) {
|
||||
BIGNUM *tmp;
|
||||
|
||||
/*-
|
||||
* 0 < B < A,
|
||||
* (*) -sign*X*a == B (mod |n|),
|
||||
* sign*Y*a == A (mod |n|)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Turn BN_FLG_CONSTTIME flag on, so that when BN_div is invoked,
|
||||
* BN_div_no_branch will be called eventually.
|
||||
*/
|
||||
{
|
||||
BIGNUM local_A;
|
||||
bn_init(&local_A);
|
||||
BN_with_flags(&local_A, A, BN_FLG_CONSTTIME);
|
||||
|
||||
/* (D, M) := (A/B, A%B) ... */
|
||||
if (!BN_div(D, M, &local_A, B, ctx))
|
||||
goto err;
|
||||
/* Ensure local_A goes out of scope before any further use of A */
|
||||
}
|
||||
|
||||
/*-
|
||||
* Now
|
||||
* A = D*B + M;
|
||||
* thus we have
|
||||
* (**) sign*Y*a == D*B + M (mod |n|).
|
||||
*/
|
||||
|
||||
tmp = A; /* keep the BIGNUM object, the value does not
|
||||
* matter */
|
||||
|
||||
/* (A, B) := (B, A mod B) ... */
|
||||
A = B;
|
||||
B = M;
|
||||
/* ... so we have 0 <= B < A again */
|
||||
|
||||
/*-
|
||||
* Since the former M is now B and the former B is now A,
|
||||
* (**) translates into
|
||||
* sign*Y*a == D*A + B (mod |n|),
|
||||
* i.e.
|
||||
* sign*Y*a - D*A == B (mod |n|).
|
||||
* Similarly, (*) translates into
|
||||
* -sign*X*a == A (mod |n|).
|
||||
*
|
||||
* Thus,
|
||||
* sign*Y*a + D*sign*X*a == B (mod |n|),
|
||||
* i.e.
|
||||
* sign*(Y + D*X)*a == B (mod |n|).
|
||||
*
|
||||
* So if we set (X, Y, sign) := (Y + D*X, X, -sign), we arrive back at
|
||||
* -sign*X*a == B (mod |n|),
|
||||
* sign*Y*a == A (mod |n|).
|
||||
* Note that X and Y stay non-negative all the time.
|
||||
*/
|
||||
|
||||
if (!BN_mul(tmp, D, X, ctx))
|
||||
goto err;
|
||||
if (!BN_add(tmp, tmp, Y))
|
||||
goto err;
|
||||
|
||||
M = Y; /* keep the BIGNUM object, the value does not
|
||||
* matter */
|
||||
Y = X;
|
||||
X = tmp;
|
||||
sign = -sign;
|
||||
}
|
||||
|
||||
/*-
|
||||
* The while loop (Euclid's algorithm) ends when
|
||||
* A == gcd(a,n);
|
||||
* we have
|
||||
* sign*Y*a == A (mod |n|),
|
||||
* where Y is non-negative.
|
||||
*/
|
||||
|
||||
if (sign < 0) {
|
||||
if (!BN_sub(Y, n, Y))
|
||||
goto err;
|
||||
}
|
||||
/* Now Y*a == A (mod |n|). */
|
||||
|
||||
if (BN_is_one(A)) {
|
||||
/* Y*a == 1 (mod |n|) */
|
||||
if (!Y->neg && BN_ucmp(Y, n) < 0) {
|
||||
if (!BN_copy(R, Y))
|
||||
goto err;
|
||||
} else {
|
||||
if (!BN_nnmod(R, Y, n, ctx))
|
||||
goto err;
|
||||
}
|
||||
} else {
|
||||
*pnoinv = 1;
|
||||
/* caller sets the BN_R_NO_INVERSE error */
|
||||
goto err;
|
||||
}
|
||||
|
||||
ret = R;
|
||||
*pnoinv = 0;
|
||||
|
||||
err:
|
||||
if ((ret == NULL) && (in == NULL))
|
||||
BN_free(R);
|
||||
BN_CTX_end(ctx);
|
||||
bn_check_top(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* This is an internal function, we assume all callers pass valid arguments:
|
||||
* all pointers passed here are assumed non-NULL.
|
||||
*/
|
||||
BIGNUM *int_bn_mod_inverse(BIGNUM *in,
|
||||
const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx,
|
||||
int *pnoinv)
|
||||
@@ -36,17 +203,15 @@ BIGNUM *int_bn_mod_inverse(BIGNUM *in,
|
||||
|
||||
/* This is invalid input so we don't worry about constant time here */
|
||||
if (BN_abs_is_word(n, 1) || BN_is_zero(n)) {
|
||||
if (pnoinv != NULL)
|
||||
*pnoinv = 1;
|
||||
*pnoinv = 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (pnoinv != NULL)
|
||||
*pnoinv = 0;
|
||||
*pnoinv = 0;
|
||||
|
||||
if ((BN_get_flags(a, BN_FLG_CONSTTIME) != 0)
|
||||
|| (BN_get_flags(n, BN_FLG_CONSTTIME) != 0)) {
|
||||
return BN_mod_inverse_no_branch(in, a, n, ctx);
|
||||
return bn_mod_inverse_no_branch(in, a, n, ctx, pnoinv);
|
||||
}
|
||||
|
||||
bn_check_top(a);
|
||||
@@ -332,8 +497,7 @@ BIGNUM *int_bn_mod_inverse(BIGNUM *in,
|
||||
goto err;
|
||||
}
|
||||
} else {
|
||||
if (pnoinv)
|
||||
*pnoinv = 1;
|
||||
*pnoinv = 1;
|
||||
goto err;
|
||||
}
|
||||
ret = R;
|
||||
@@ -345,175 +509,27 @@ BIGNUM *int_bn_mod_inverse(BIGNUM *in,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* BN_mod_inverse_no_branch is a special version of BN_mod_inverse. It does
|
||||
* not contain branches that may leak sensitive information.
|
||||
*/
|
||||
static BIGNUM *BN_mod_inverse_no_branch(BIGNUM *in,
|
||||
const BIGNUM *a, const BIGNUM *n,
|
||||
BN_CTX *ctx)
|
||||
/* solves ax == 1 (mod n) */
|
||||
BIGNUM *BN_mod_inverse(BIGNUM *in,
|
||||
const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx)
|
||||
{
|
||||
BIGNUM *A, *B, *X, *Y, *M, *D, *T, *R = NULL;
|
||||
BIGNUM *ret = NULL;
|
||||
int sign;
|
||||
BN_CTX *new_ctx = NULL;
|
||||
BIGNUM *rv;
|
||||
int noinv = 0;
|
||||
|
||||
bn_check_top(a);
|
||||
bn_check_top(n);
|
||||
|
||||
BN_CTX_start(ctx);
|
||||
A = BN_CTX_get(ctx);
|
||||
B = BN_CTX_get(ctx);
|
||||
X = BN_CTX_get(ctx);
|
||||
D = BN_CTX_get(ctx);
|
||||
M = BN_CTX_get(ctx);
|
||||
Y = BN_CTX_get(ctx);
|
||||
T = BN_CTX_get(ctx);
|
||||
if (T == NULL)
|
||||
goto err;
|
||||
|
||||
if (in == NULL)
|
||||
R = BN_new();
|
||||
else
|
||||
R = in;
|
||||
if (R == NULL)
|
||||
goto err;
|
||||
|
||||
BN_one(X);
|
||||
BN_zero(Y);
|
||||
if (BN_copy(B, a) == NULL)
|
||||
goto err;
|
||||
if (BN_copy(A, n) == NULL)
|
||||
goto err;
|
||||
A->neg = 0;
|
||||
|
||||
if (B->neg || (BN_ucmp(B, A) >= 0)) {
|
||||
/*
|
||||
* Turn BN_FLG_CONSTTIME flag on, so that when BN_div is invoked,
|
||||
* BN_div_no_branch will be called eventually.
|
||||
*/
|
||||
{
|
||||
BIGNUM local_B;
|
||||
bn_init(&local_B);
|
||||
BN_with_flags(&local_B, B, BN_FLG_CONSTTIME);
|
||||
if (!BN_nnmod(B, &local_B, A, ctx))
|
||||
goto err;
|
||||
/* Ensure local_B goes out of scope before any further use of B */
|
||||
if (ctx == NULL) {
|
||||
ctx = new_ctx = BN_CTX_new();
|
||||
if (ctx == NULL) {
|
||||
BNerr(BN_F_BN_MOD_INVERSE, ERR_R_MALLOC_FAILURE);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
sign = -1;
|
||||
/*-
|
||||
* From B = a mod |n|, A = |n| it follows that
|
||||
*
|
||||
* 0 <= B < A,
|
||||
* -sign*X*a == B (mod |n|),
|
||||
* sign*Y*a == A (mod |n|).
|
||||
*/
|
||||
|
||||
while (!BN_is_zero(B)) {
|
||||
BIGNUM *tmp;
|
||||
|
||||
/*-
|
||||
* 0 < B < A,
|
||||
* (*) -sign*X*a == B (mod |n|),
|
||||
* sign*Y*a == A (mod |n|)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Turn BN_FLG_CONSTTIME flag on, so that when BN_div is invoked,
|
||||
* BN_div_no_branch will be called eventually.
|
||||
*/
|
||||
{
|
||||
BIGNUM local_A;
|
||||
bn_init(&local_A);
|
||||
BN_with_flags(&local_A, A, BN_FLG_CONSTTIME);
|
||||
|
||||
/* (D, M) := (A/B, A%B) ... */
|
||||
if (!BN_div(D, M, &local_A, B, ctx))
|
||||
goto err;
|
||||
/* Ensure local_A goes out of scope before any further use of A */
|
||||
}
|
||||
|
||||
/*-
|
||||
* Now
|
||||
* A = D*B + M;
|
||||
* thus we have
|
||||
* (**) sign*Y*a == D*B + M (mod |n|).
|
||||
*/
|
||||
|
||||
tmp = A; /* keep the BIGNUM object, the value does not
|
||||
* matter */
|
||||
|
||||
/* (A, B) := (B, A mod B) ... */
|
||||
A = B;
|
||||
B = M;
|
||||
/* ... so we have 0 <= B < A again */
|
||||
|
||||
/*-
|
||||
* Since the former M is now B and the former B is now A,
|
||||
* (**) translates into
|
||||
* sign*Y*a == D*A + B (mod |n|),
|
||||
* i.e.
|
||||
* sign*Y*a - D*A == B (mod |n|).
|
||||
* Similarly, (*) translates into
|
||||
* -sign*X*a == A (mod |n|).
|
||||
*
|
||||
* Thus,
|
||||
* sign*Y*a + D*sign*X*a == B (mod |n|),
|
||||
* i.e.
|
||||
* sign*(Y + D*X)*a == B (mod |n|).
|
||||
*
|
||||
* So if we set (X, Y, sign) := (Y + D*X, X, -sign), we arrive back at
|
||||
* -sign*X*a == B (mod |n|),
|
||||
* sign*Y*a == A (mod |n|).
|
||||
* Note that X and Y stay non-negative all the time.
|
||||
*/
|
||||
|
||||
if (!BN_mul(tmp, D, X, ctx))
|
||||
goto err;
|
||||
if (!BN_add(tmp, tmp, Y))
|
||||
goto err;
|
||||
|
||||
M = Y; /* keep the BIGNUM object, the value does not
|
||||
* matter */
|
||||
Y = X;
|
||||
X = tmp;
|
||||
sign = -sign;
|
||||
}
|
||||
|
||||
/*-
|
||||
* The while loop (Euclid's algorithm) ends when
|
||||
* A == gcd(a,n);
|
||||
* we have
|
||||
* sign*Y*a == A (mod |n|),
|
||||
* where Y is non-negative.
|
||||
*/
|
||||
|
||||
if (sign < 0) {
|
||||
if (!BN_sub(Y, n, Y))
|
||||
goto err;
|
||||
}
|
||||
/* Now Y*a == A (mod |n|). */
|
||||
|
||||
if (BN_is_one(A)) {
|
||||
/* Y*a == 1 (mod |n|) */
|
||||
if (!Y->neg && BN_ucmp(Y, n) < 0) {
|
||||
if (!BN_copy(R, Y))
|
||||
goto err;
|
||||
} else {
|
||||
if (!BN_nnmod(R, Y, n, ctx))
|
||||
goto err;
|
||||
}
|
||||
} else {
|
||||
BNerr(BN_F_BN_MOD_INVERSE_NO_BRANCH, BN_R_NO_INVERSE);
|
||||
goto err;
|
||||
}
|
||||
ret = R;
|
||||
err:
|
||||
if ((ret == NULL) && (in == NULL))
|
||||
BN_free(R);
|
||||
BN_CTX_end(ctx);
|
||||
bn_check_top(ret);
|
||||
return ret;
|
||||
rv = int_bn_mod_inverse(in, a, n, ctx, &noinv);
|
||||
if (noinv)
|
||||
BNerr(BN_F_BN_MOD_INVERSE, BN_R_NO_INVERSE);
|
||||
BN_CTX_free(new_ctx);
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*-
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -87,6 +87,15 @@ const BIGNUM *BN_value_one(void)
|
||||
return &const_one;
|
||||
}
|
||||
|
||||
/*
|
||||
* Old Visual Studio ARM compiler miscompiles BN_num_bits_word()
|
||||
* https://mta.openssl.org/pipermail/openssl-users/2018-August/008465.html
|
||||
*/
|
||||
#if defined(_MSC_VER) && defined(_ARM_) && defined(_WIN32_WCE) \
|
||||
&& _MSC_VER>=1400 && _MSC_VER<1501
|
||||
# define MS_BROKEN_BN_num_bits_word
|
||||
# pragma optimize("", off)
|
||||
#endif
|
||||
int BN_num_bits_word(BN_ULONG l)
|
||||
{
|
||||
BN_ULONG x, mask;
|
||||
@@ -131,6 +140,9 @@ int BN_num_bits_word(BN_ULONG l)
|
||||
|
||||
return bits;
|
||||
}
|
||||
#ifdef MS_BROKEN_BN_num_bits_word
|
||||
# pragma optimize("", on)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This function still leaks `a->dmax`: it's caller's responsibility to
|
||||
@@ -322,15 +334,19 @@ BIGNUM *BN_dup(const BIGNUM *a)
|
||||
|
||||
BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
|
||||
{
|
||||
int bn_words;
|
||||
|
||||
bn_check_top(b);
|
||||
|
||||
bn_words = BN_get_flags(b, BN_FLG_CONSTTIME) ? b->dmax : b->top;
|
||||
|
||||
if (a == b)
|
||||
return a;
|
||||
if (bn_wexpand(a, b->top) == NULL)
|
||||
if (bn_wexpand(a, bn_words) == NULL)
|
||||
return NULL;
|
||||
|
||||
if (b->top > 0)
|
||||
memcpy(a->d, b->d, sizeof(b->d[0]) * b->top);
|
||||
memcpy(a->d, b->d, sizeof(b->d[0]) * bn_words);
|
||||
|
||||
a->neg = b->neg;
|
||||
a->top = b->top;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -45,7 +45,7 @@ BIGNUM *BN_mpi2bn(const unsigned char *d, int n, BIGNUM *ain)
|
||||
int neg = 0;
|
||||
BIGNUM *a = NULL;
|
||||
|
||||
if (n < 4) {
|
||||
if (n < 4 || (d[0] & 0x80) != 0) {
|
||||
BNerr(BN_F_BN_MPI2BN, BN_R_INVALID_LENGTH);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -14,7 +14,8 @@ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
|
||||
/*
|
||||
* Returns 'ret' such that ret^2 == a (mod p), using the Tonelli/Shanks
|
||||
* algorithm (cf. Henri Cohen, "A Course in Algebraic Computational Number
|
||||
* Theory", algorithm 1.5.1). 'p' must be prime!
|
||||
* Theory", algorithm 1.5.1). 'p' must be prime, otherwise an error or
|
||||
* an incorrect "result" will be returned.
|
||||
*/
|
||||
{
|
||||
BIGNUM *ret = in;
|
||||
@@ -301,18 +302,23 @@ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
|
||||
goto vrfy;
|
||||
}
|
||||
|
||||
/* find smallest i such that b^(2^i) = 1 */
|
||||
i = 1;
|
||||
if (!BN_mod_sqr(t, b, p, ctx))
|
||||
goto end;
|
||||
while (!BN_is_one(t)) {
|
||||
i++;
|
||||
if (i == e) {
|
||||
BNerr(BN_F_BN_MOD_SQRT, BN_R_NOT_A_SQUARE);
|
||||
goto end;
|
||||
/* Find the smallest i, 0 < i < e, such that b^(2^i) = 1. */
|
||||
for (i = 1; i < e; i++) {
|
||||
if (i == 1) {
|
||||
if (!BN_mod_sqr(t, b, p, ctx))
|
||||
goto end;
|
||||
|
||||
} else {
|
||||
if (!BN_mod_mul(t, t, t, p, ctx))
|
||||
goto end;
|
||||
}
|
||||
if (!BN_mod_mul(t, t, t, p, ctx))
|
||||
goto end;
|
||||
if (BN_is_one(t))
|
||||
break;
|
||||
}
|
||||
/* If not found, a is not a square or p is not prime. */
|
||||
if (i >= e) {
|
||||
BNerr(BN_F_BN_MOD_SQRT, BN_R_NOT_A_SQUARE);
|
||||
goto end;
|
||||
}
|
||||
|
||||
/* t := y^2^(e - i - 1) */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -116,11 +116,18 @@ int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen,
|
||||
return 1;
|
||||
}
|
||||
/* Initialise context */
|
||||
if (cipher && !EVP_EncryptInit_ex(ctx->cctx, cipher, impl, NULL, NULL))
|
||||
return 0;
|
||||
if (cipher != NULL) {
|
||||
/* Ensure we can't use this ctx until we also have a key */
|
||||
ctx->nlast_block = -1;
|
||||
if (!EVP_EncryptInit_ex(ctx->cctx, cipher, impl, NULL, NULL))
|
||||
return 0;
|
||||
}
|
||||
/* Non-NULL key means initialisation complete */
|
||||
if (key) {
|
||||
if (key != NULL) {
|
||||
int bl;
|
||||
|
||||
/* If anything fails then ensure we can't use this ctx */
|
||||
ctx->nlast_block = -1;
|
||||
if (!EVP_CIPHER_CTX_cipher(ctx->cctx))
|
||||
return 0;
|
||||
if (!EVP_CIPHER_CTX_set_key_length(ctx->cctx, keylen))
|
||||
@@ -128,7 +135,7 @@ int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen,
|
||||
if (!EVP_EncryptInit_ex(ctx->cctx, NULL, NULL, key, zero_iv))
|
||||
return 0;
|
||||
bl = EVP_CIPHER_CTX_block_size(ctx->cctx);
|
||||
if (!EVP_Cipher(ctx->cctx, ctx->tbl, zero_iv, bl))
|
||||
if (EVP_Cipher(ctx->cctx, ctx->tbl, zero_iv, bl) <= 0)
|
||||
return 0;
|
||||
make_kn(ctx->k1, ctx->tbl, bl);
|
||||
make_kn(ctx->k2, ctx->k1, bl);
|
||||
@@ -166,12 +173,12 @@ int CMAC_Update(CMAC_CTX *ctx, const void *in, size_t dlen)
|
||||
return 1;
|
||||
data += nleft;
|
||||
/* Else not final block so encrypt it */
|
||||
if (!EVP_Cipher(ctx->cctx, ctx->tbl, ctx->last_block, bl))
|
||||
if (EVP_Cipher(ctx->cctx, ctx->tbl, ctx->last_block, bl) <= 0)
|
||||
return 0;
|
||||
}
|
||||
/* Encrypt all but one of the complete blocks left */
|
||||
while (dlen > bl) {
|
||||
if (!EVP_Cipher(ctx->cctx, ctx->tbl, data, bl))
|
||||
if (EVP_Cipher(ctx->cctx, ctx->tbl, data, bl) <= 0)
|
||||
return 0;
|
||||
dlen -= bl;
|
||||
data += bl;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -92,12 +92,13 @@ BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont)
|
||||
|
||||
default:
|
||||
CMSerr(CMS_F_CMS_DATAINIT, CMS_R_UNSUPPORTED_TYPE);
|
||||
return NULL;
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (cmsbio)
|
||||
return BIO_push(cmsbio, cont);
|
||||
|
||||
err:
|
||||
if (!icont)
|
||||
BIO_free(cont);
|
||||
return NULL;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -897,8 +897,10 @@ int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs,
|
||||
ASN1_INTEGER *key = NULL;
|
||||
if (keysize > 0) {
|
||||
key = ASN1_INTEGER_new();
|
||||
if (key == NULL || !ASN1_INTEGER_set(key, keysize))
|
||||
if (key == NULL || !ASN1_INTEGER_set(key, keysize)) {
|
||||
ASN1_INTEGER_free(key);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
alg = X509_ALGOR_new();
|
||||
if (alg == NULL) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -376,11 +376,13 @@ static int def_load_bio(CONF *conf, BIO *in, long *line)
|
||||
if (biosk == NULL) {
|
||||
if ((biosk = sk_BIO_new_null()) == NULL) {
|
||||
CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);
|
||||
BIO_free(next);
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
if (!sk_BIO_push(biosk, in)) {
|
||||
CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);
|
||||
BIO_free(next);
|
||||
goto err;
|
||||
}
|
||||
/* continue with reading from the included BIO */
|
||||
|
||||
@@ -1517,9 +1517,9 @@ ecp_nistz256_point_add:
|
||||
ldr $t2,[sp,#32*18+12] @ ~is_equal(S1,S2)
|
||||
mvn $t0,$t0 @ -1/0 -> 0/-1
|
||||
mvn $t1,$t1 @ -1/0 -> 0/-1
|
||||
orr $a0,$t0
|
||||
orr $a0,$t1
|
||||
orrs $a0,$t2 @ set flags
|
||||
orr $a0,$a0,$t0
|
||||
orr $a0,$a0,$t1
|
||||
orrs $a0,$a0,$t2 @ set flags
|
||||
|
||||
@ if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2))
|
||||
bne .Ladd_proceed
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -23,7 +23,7 @@ static int ecdh_cms_decrypt(CMS_RecipientInfo *ri);
|
||||
static int ecdh_cms_encrypt(CMS_RecipientInfo *ri);
|
||||
#endif
|
||||
|
||||
static int eckey_param2type(int *pptype, void **ppval, EC_KEY *ec_key)
|
||||
static int eckey_param2type(int *pptype, void **ppval, const EC_KEY *ec_key)
|
||||
{
|
||||
const EC_GROUP *group;
|
||||
int nid;
|
||||
@@ -35,7 +35,14 @@ static int eckey_param2type(int *pptype, void **ppval, EC_KEY *ec_key)
|
||||
&& (nid = EC_GROUP_get_curve_name(group)))
|
||||
/* we have a 'named curve' => just set the OID */
|
||||
{
|
||||
*ppval = OBJ_nid2obj(nid);
|
||||
ASN1_OBJECT *asn1obj = OBJ_nid2obj(nid);
|
||||
|
||||
if (asn1obj == NULL || OBJ_length(asn1obj) == 0) {
|
||||
ASN1_OBJECT_free(asn1obj);
|
||||
ECerr(EC_F_ECKEY_PARAM2TYPE, EC_R_MISSING_OID);
|
||||
return 0;
|
||||
}
|
||||
*ppval = asn1obj;
|
||||
*pptype = V_ASN1_OBJECT;
|
||||
} else { /* explicit parameters */
|
||||
|
||||
@@ -43,7 +50,17 @@ static int eckey_param2type(int *pptype, void **ppval, EC_KEY *ec_key)
|
||||
pstr = ASN1_STRING_new();
|
||||
if (pstr == NULL)
|
||||
return 0;
|
||||
pstr->length = i2d_ECParameters(ec_key, &pstr->data);
|
||||
|
||||
/*
|
||||
* The cast in the following line is intentional as the
|
||||
* `i2d_ECParameters` signature can't be constified (see discussion at
|
||||
* https://github.com/openssl/openssl/pull/9347 where related and
|
||||
* required constification backports were rejected).
|
||||
*
|
||||
* This cast should be safe anyway, because we can expect
|
||||
* `i2d_ECParameters()` to treat the first argument as if it was const.
|
||||
*/
|
||||
pstr->length = i2d_ECParameters((EC_KEY *)ec_key, &pstr->data);
|
||||
if (pstr->length <= 0) {
|
||||
ASN1_STRING_free(pstr);
|
||||
ECerr(EC_F_ECKEY_PARAM2TYPE, ERR_R_EC_LIB);
|
||||
@@ -57,7 +74,7 @@ static int eckey_param2type(int *pptype, void **ppval, EC_KEY *ec_key)
|
||||
|
||||
static int eckey_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey)
|
||||
{
|
||||
EC_KEY *ec_key = pkey->pkey.ec;
|
||||
const EC_KEY *ec_key = pkey->pkey.ec;
|
||||
void *pval = NULL;
|
||||
int ptype;
|
||||
unsigned char *penc = NULL, *p;
|
||||
|
||||
@@ -137,6 +137,12 @@ struct ec_parameters_st {
|
||||
ASN1_INTEGER *cofactor;
|
||||
} /* ECPARAMETERS */ ;
|
||||
|
||||
typedef enum {
|
||||
ECPKPARAMETERS_TYPE_NAMED = 0,
|
||||
ECPKPARAMETERS_TYPE_EXPLICIT,
|
||||
ECPKPARAMETERS_TYPE_IMPLICIT
|
||||
} ecpk_parameters_type_t;
|
||||
|
||||
struct ecpk_parameters_st {
|
||||
int type;
|
||||
union {
|
||||
@@ -535,9 +541,10 @@ ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group,
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
if (ret->type == 0)
|
||||
if (ret->type == ECPKPARAMETERS_TYPE_NAMED)
|
||||
ASN1_OBJECT_free(ret->value.named_curve);
|
||||
else if (ret->type == 1 && ret->value.parameters)
|
||||
else if (ret->type == ECPKPARAMETERS_TYPE_EXPLICIT
|
||||
&& ret->value.parameters != NULL)
|
||||
ECPARAMETERS_free(ret->value.parameters);
|
||||
}
|
||||
|
||||
@@ -547,15 +554,22 @@ ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group,
|
||||
*/
|
||||
tmp = EC_GROUP_get_curve_name(group);
|
||||
if (tmp) {
|
||||
ret->type = 0;
|
||||
if ((ret->value.named_curve = OBJ_nid2obj(tmp)) == NULL)
|
||||
ASN1_OBJECT *asn1obj = OBJ_nid2obj(tmp);
|
||||
|
||||
if (asn1obj == NULL || OBJ_length(asn1obj) == 0) {
|
||||
ASN1_OBJECT_free(asn1obj);
|
||||
ECerr(EC_F_EC_GROUP_GET_ECPKPARAMETERS, EC_R_MISSING_OID);
|
||||
ok = 0;
|
||||
} else {
|
||||
ret->type = ECPKPARAMETERS_TYPE_NAMED;
|
||||
ret->value.named_curve = asn1obj;
|
||||
}
|
||||
} else
|
||||
/* we don't know the nid => ERROR */
|
||||
ok = 0;
|
||||
} else {
|
||||
/* use the ECPARAMETERS structure */
|
||||
ret->type = 1;
|
||||
ret->type = ECPKPARAMETERS_TYPE_EXPLICIT;
|
||||
if ((ret->value.parameters =
|
||||
EC_GROUP_get_ecparameters(group, NULL)) == NULL)
|
||||
ok = 0;
|
||||
@@ -747,7 +761,10 @@ EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params)
|
||||
ret->seed_len = params->curve->seed->length;
|
||||
}
|
||||
|
||||
if (!params->order || !params->base || !params->base->data) {
|
||||
if (params->order == NULL
|
||||
|| params->base == NULL
|
||||
|| params->base->data == NULL
|
||||
|| params->base->length == 0) {
|
||||
ECerr(EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS, EC_R_ASN1_ERROR);
|
||||
goto err;
|
||||
}
|
||||
@@ -894,7 +911,8 @@ EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (params->type == 0) { /* the curve is given by an OID */
|
||||
if (params->type == ECPKPARAMETERS_TYPE_NAMED) {
|
||||
/* the curve is given by an OID */
|
||||
tmp = OBJ_obj2nid(params->value.named_curve);
|
||||
if ((ret = EC_GROUP_new_by_curve_name(tmp)) == NULL) {
|
||||
ECerr(EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS,
|
||||
@@ -902,15 +920,16 @@ EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params)
|
||||
return NULL;
|
||||
}
|
||||
EC_GROUP_set_asn1_flag(ret, OPENSSL_EC_NAMED_CURVE);
|
||||
} else if (params->type == 1) { /* the parameters are given by a
|
||||
* ECPARAMETERS structure */
|
||||
} else if (params->type == ECPKPARAMETERS_TYPE_EXPLICIT) {
|
||||
/* the parameters are given by an ECPARAMETERS structure */
|
||||
ret = EC_GROUP_new_from_ecparameters(params->value.parameters);
|
||||
if (!ret) {
|
||||
ECerr(EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS, ERR_R_EC_LIB);
|
||||
return NULL;
|
||||
}
|
||||
EC_GROUP_set_asn1_flag(ret, OPENSSL_EC_EXPLICIT_CURVE);
|
||||
} else if (params->type == 2) { /* implicitlyCA */
|
||||
} else if (params->type == ECPKPARAMETERS_TYPE_IMPLICIT) {
|
||||
/* implicit parameters inherited from CA - unsupported */
|
||||
return NULL;
|
||||
} else {
|
||||
ECerr(EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS, EC_R_ASN1_ERROR);
|
||||
@@ -940,6 +959,9 @@ EC_GROUP *d2i_ECPKParameters(EC_GROUP **a, const unsigned char **in, long len)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (params->type == ECPKPARAMETERS_TYPE_EXPLICIT)
|
||||
group->decoded_from_explicit_params = 1;
|
||||
|
||||
if (a) {
|
||||
EC_GROUP_free(*a);
|
||||
*a = group;
|
||||
@@ -991,6 +1013,9 @@ EC_KEY *d2i_ECPrivateKey(EC_KEY **a, const unsigned char **in, long len)
|
||||
if (priv_key->parameters) {
|
||||
EC_GROUP_free(ret->group);
|
||||
ret->group = EC_GROUP_new_from_ecpkparameters(priv_key->parameters);
|
||||
if (ret->group != NULL
|
||||
&& priv_key->parameters->type == ECPKPARAMETERS_TYPE_EXPLICIT)
|
||||
ret->group->decoded_from_explicit_params = 1;
|
||||
}
|
||||
|
||||
if (ret->group == NULL) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -341,6 +341,7 @@ static const ERR_STRING_DATA EC_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_EC, 0, EC_R_LADDER_POST_FAILURE), "ladder post failure"},
|
||||
{ERR_PACK(ERR_LIB_EC, 0, EC_R_LADDER_PRE_FAILURE), "ladder pre failure"},
|
||||
{ERR_PACK(ERR_LIB_EC, 0, EC_R_LADDER_STEP_FAILURE), "ladder step failure"},
|
||||
{ERR_PACK(ERR_LIB_EC, 0, EC_R_MISSING_OID), "missing OID"},
|
||||
{ERR_PACK(ERR_LIB_EC, 0, EC_R_MISSING_PARAMETERS), "missing parameters"},
|
||||
{ERR_PACK(ERR_LIB_EC, 0, EC_R_MISSING_PRIVATE_KEY), "missing private key"},
|
||||
{ERR_PACK(ERR_LIB_EC, 0, EC_R_NEED_NEW_SETUP_VALUES),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "internal/refcount.h"
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/engine.h>
|
||||
#include "crypto/bn.h"
|
||||
|
||||
EC_KEY *EC_KEY_new(void)
|
||||
{
|
||||
@@ -416,17 +417,86 @@ const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key)
|
||||
|
||||
int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *priv_key)
|
||||
{
|
||||
int fixed_top;
|
||||
const BIGNUM *order = NULL;
|
||||
BIGNUM *tmp_key = NULL;
|
||||
|
||||
if (key->group == NULL || key->group->meth == NULL)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Not only should key->group be set, but it should also be in a valid
|
||||
* fully initialized state.
|
||||
*
|
||||
* Specifically, to operate in constant time, we need that the group order
|
||||
* is set, as we use its length as the fixed public size of any scalar used
|
||||
* as an EC private key.
|
||||
*/
|
||||
order = EC_GROUP_get0_order(key->group);
|
||||
if (order == NULL || BN_is_zero(order))
|
||||
return 0; /* This should never happen */
|
||||
|
||||
if (key->group->meth->set_private != NULL
|
||||
&& key->group->meth->set_private(key, priv_key) == 0)
|
||||
return 0;
|
||||
if (key->meth->set_private != NULL
|
||||
&& key->meth->set_private(key, priv_key) == 0)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* We should never leak the bit length of the secret scalar in the key,
|
||||
* so we always set the `BN_FLG_CONSTTIME` flag on the internal `BIGNUM`
|
||||
* holding the secret scalar.
|
||||
*
|
||||
* This is important also because `BN_dup()` (and `BN_copy()`) do not
|
||||
* propagate the `BN_FLG_CONSTTIME` flag from the source `BIGNUM`, and
|
||||
* this brings an extra risk of inadvertently losing the flag, even when
|
||||
* the caller specifically set it.
|
||||
*
|
||||
* The propagation has been turned on and off a few times in the past
|
||||
* years because in some conditions has shown unintended consequences in
|
||||
* some code paths, so at the moment we can't fix this in the BN layer.
|
||||
*
|
||||
* In `EC_KEY_set_private_key()` we can work around the propagation by
|
||||
* manually setting the flag after `BN_dup()` as we know for sure that
|
||||
* inside the EC module the `BN_FLG_CONSTTIME` is always treated
|
||||
* correctly and should not generate unintended consequences.
|
||||
*
|
||||
* Setting the BN_FLG_CONSTTIME flag alone is never enough, we also have
|
||||
* to preallocate the BIGNUM internal buffer to a fixed public size big
|
||||
* enough that operations performed during the processing never trigger
|
||||
* a realloc which would leak the size of the scalar through memory
|
||||
* accesses.
|
||||
*
|
||||
* Fixed Length
|
||||
* ------------
|
||||
*
|
||||
* The order of the large prime subgroup of the curve is our choice for
|
||||
* a fixed public size, as that is generally the upper bound for
|
||||
* generating a private key in EC cryptosystems and should fit all valid
|
||||
* secret scalars.
|
||||
*
|
||||
* For preallocating the BIGNUM storage we look at the number of "words"
|
||||
* required for the internal representation of the order, and we
|
||||
* preallocate 2 extra "words" in case any of the subsequent processing
|
||||
* might temporarily overflow the order length.
|
||||
*/
|
||||
tmp_key = BN_dup(priv_key);
|
||||
if (tmp_key == NULL)
|
||||
return 0;
|
||||
|
||||
BN_set_flags(tmp_key, BN_FLG_CONSTTIME);
|
||||
|
||||
fixed_top = bn_get_top(order) + 2;
|
||||
if (bn_wexpand(tmp_key, fixed_top) == NULL) {
|
||||
BN_clear_free(tmp_key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BN_clear_free(key->priv_key);
|
||||
key->priv_key = BN_dup(priv_key);
|
||||
return (key->priv_key == NULL) ? 0 : 1;
|
||||
key->priv_key = tmp_key;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key)
|
||||
@@ -494,6 +564,13 @@ void EC_KEY_clear_flags(EC_KEY *key, int flags)
|
||||
key->flags &= ~flags;
|
||||
}
|
||||
|
||||
int EC_KEY_decoded_from_explicit_params(const EC_KEY *key)
|
||||
{
|
||||
if (key == NULL || key->group == NULL)
|
||||
return -1;
|
||||
return key->group->decoded_from_explicit_params;
|
||||
}
|
||||
|
||||
size_t EC_KEY_key2buf(const EC_KEY *key, point_conversion_form_t form,
|
||||
unsigned char **pbuf, BN_CTX *ctx)
|
||||
{
|
||||
|
||||
@@ -211,6 +211,7 @@ int EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src)
|
||||
|
||||
dest->asn1_flag = src->asn1_flag;
|
||||
dest->asn1_form = src->asn1_form;
|
||||
dest->decoded_from_explicit_params = src->decoded_from_explicit_params;
|
||||
|
||||
if (src->seed) {
|
||||
OPENSSL_free(dest->seed);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
@@ -209,6 +209,8 @@ struct ec_group_st {
|
||||
BIGNUM *order, *cofactor;
|
||||
int curve_name; /* optional NID for named curve */
|
||||
int asn1_flag; /* flag to control the asn1 encoding */
|
||||
int decoded_from_explicit_params; /* set if decoded from explicit
|
||||
* curve parameters encoding */
|
||||
point_conversion_form_t asn1_form;
|
||||
unsigned char *seed; /* optional seed for parameters (appears in
|
||||
* ASN1) */
|
||||
|
||||
@@ -72,6 +72,7 @@ typedef uint64_t u64;
|
||||
*/
|
||||
|
||||
typedef uint64_t limb;
|
||||
typedef uint64_t limb_aX __attribute((__aligned__(1)));
|
||||
typedef uint128_t widelimb;
|
||||
|
||||
typedef limb felem[4];
|
||||
@@ -307,10 +308,10 @@ const EC_METHOD *EC_GFp_nistp224_method(void)
|
||||
*/
|
||||
static void bin28_to_felem(felem out, const u8 in[28])
|
||||
{
|
||||
out[0] = *((const uint64_t *)(in)) & 0x00ffffffffffffff;
|
||||
out[1] = (*((const uint64_t *)(in + 7))) & 0x00ffffffffffffff;
|
||||
out[2] = (*((const uint64_t *)(in + 14))) & 0x00ffffffffffffff;
|
||||
out[3] = (*((const uint64_t *)(in+20))) >> 8;
|
||||
out[0] = *((const limb *)(in)) & 0x00ffffffffffffff;
|
||||
out[1] = (*((const limb_aX *)(in + 7))) & 0x00ffffffffffffff;
|
||||
out[2] = (*((const limb_aX *)(in + 14))) & 0x00ffffffffffffff;
|
||||
out[3] = (*((const limb_aX *)(in + 20))) >> 8;
|
||||
}
|
||||
|
||||
static void felem_to_bin28(u8 out[28], const felem in)
|
||||
|
||||
@@ -128,6 +128,7 @@ static const felem_bytearray nistp521_curve_params[5] = {
|
||||
# define NLIMBS 9
|
||||
|
||||
typedef uint64_t limb;
|
||||
typedef limb limb_aX __attribute((__aligned__(1)));
|
||||
typedef limb felem[NLIMBS];
|
||||
typedef uint128_t largefelem[NLIMBS];
|
||||
|
||||
@@ -141,14 +142,14 @@ static const limb bottom58bits = 0x3ffffffffffffff;
|
||||
static void bin66_to_felem(felem out, const u8 in[66])
|
||||
{
|
||||
out[0] = (*((limb *) & in[0])) & bottom58bits;
|
||||
out[1] = (*((limb *) & in[7]) >> 2) & bottom58bits;
|
||||
out[2] = (*((limb *) & in[14]) >> 4) & bottom58bits;
|
||||
out[3] = (*((limb *) & in[21]) >> 6) & bottom58bits;
|
||||
out[4] = (*((limb *) & in[29])) & bottom58bits;
|
||||
out[5] = (*((limb *) & in[36]) >> 2) & bottom58bits;
|
||||
out[6] = (*((limb *) & in[43]) >> 4) & bottom58bits;
|
||||
out[7] = (*((limb *) & in[50]) >> 6) & bottom58bits;
|
||||
out[8] = (*((limb *) & in[58])) & bottom57bits;
|
||||
out[1] = (*((limb_aX *) & in[7]) >> 2) & bottom58bits;
|
||||
out[2] = (*((limb_aX *) & in[14]) >> 4) & bottom58bits;
|
||||
out[3] = (*((limb_aX *) & in[21]) >> 6) & bottom58bits;
|
||||
out[4] = (*((limb_aX *) & in[29])) & bottom58bits;
|
||||
out[5] = (*((limb_aX *) & in[36]) >> 2) & bottom58bits;
|
||||
out[6] = (*((limb_aX *) & in[43]) >> 4) & bottom58bits;
|
||||
out[7] = (*((limb_aX *) & in[50]) >> 6) & bottom58bits;
|
||||
out[8] = (*((limb_aX *) & in[58])) & bottom57bits;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -159,14 +160,14 @@ static void felem_to_bin66(u8 out[66], const felem in)
|
||||
{
|
||||
memset(out, 0, 66);
|
||||
(*((limb *) & out[0])) = in[0];
|
||||
(*((limb *) & out[7])) |= in[1] << 2;
|
||||
(*((limb *) & out[14])) |= in[2] << 4;
|
||||
(*((limb *) & out[21])) |= in[3] << 6;
|
||||
(*((limb *) & out[29])) = in[4];
|
||||
(*((limb *) & out[36])) |= in[5] << 2;
|
||||
(*((limb *) & out[43])) |= in[6] << 4;
|
||||
(*((limb *) & out[50])) |= in[7] << 6;
|
||||
(*((limb *) & out[58])) = in[8];
|
||||
(*((limb_aX *) & out[7])) |= in[1] << 2;
|
||||
(*((limb_aX *) & out[14])) |= in[2] << 4;
|
||||
(*((limb_aX *) & out[21])) |= in[3] << 6;
|
||||
(*((limb_aX *) & out[29])) = in[4];
|
||||
(*((limb_aX *) & out[36])) |= in[5] << 2;
|
||||
(*((limb_aX *) & out[43])) |= in[6] << 4;
|
||||
(*((limb_aX *) & out[50])) |= in[7] << 6;
|
||||
(*((limb_aX *) & out[58])) = in[8];
|
||||
}
|
||||
|
||||
/* BN_to_felem converts an OpenSSL BIGNUM into an felem */
|
||||
|
||||
@@ -929,207 +929,6 @@ __owur static int ecp_nistz256_mult_precompute(EC_GROUP *group, BN_CTX *ctx)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Note that by default ECP_NISTZ256_AVX2 is undefined. While it's great
|
||||
* code processing 4 points in parallel, corresponding serial operation
|
||||
* is several times slower, because it uses 29x29=58-bit multiplication
|
||||
* as opposite to 64x64=128-bit in integer-only scalar case. As result
|
||||
* it doesn't provide *significant* performance improvement. Note that
|
||||
* just defining ECP_NISTZ256_AVX2 is not sufficient to make it work,
|
||||
* you'd need to compile even asm/ecp_nistz256-avx.pl module.
|
||||
*/
|
||||
#if defined(ECP_NISTZ256_AVX2)
|
||||
# if !(defined(__x86_64) || defined(__x86_64__) || \
|
||||
defined(_M_AMD64) || defined(_M_X64)) || \
|
||||
!(defined(__GNUC__) || defined(_MSC_VER)) /* this is for ALIGN32 */
|
||||
# undef ECP_NISTZ256_AVX2
|
||||
# else
|
||||
/* Constant time access, loading four values, from four consecutive tables */
|
||||
void ecp_nistz256_avx2_multi_gather_w7(void *result, const void *in,
|
||||
int index0, int index1, int index2,
|
||||
int index3);
|
||||
void ecp_nistz256_avx2_transpose_convert(void *RESULTx4, const void *in);
|
||||
void ecp_nistz256_avx2_convert_transpose_back(void *result, const void *Ax4);
|
||||
void ecp_nistz256_avx2_point_add_affine_x4(void *RESULTx4, const void *Ax4,
|
||||
const void *Bx4);
|
||||
void ecp_nistz256_avx2_point_add_affines_x4(void *RESULTx4, const void *Ax4,
|
||||
const void *Bx4);
|
||||
void ecp_nistz256_avx2_to_mont(void *RESULTx4, const void *Ax4);
|
||||
void ecp_nistz256_avx2_from_mont(void *RESULTx4, const void *Ax4);
|
||||
void ecp_nistz256_avx2_set1(void *RESULTx4);
|
||||
int ecp_nistz_avx2_eligible(void);
|
||||
|
||||
static void booth_recode_w7(unsigned char *sign,
|
||||
unsigned char *digit, unsigned char in)
|
||||
{
|
||||
unsigned char s, d;
|
||||
|
||||
s = ~((in >> 7) - 1);
|
||||
d = (1 << 8) - in - 1;
|
||||
d = (d & s) | (in & ~s);
|
||||
d = (d >> 1) + (d & 1);
|
||||
|
||||
*sign = s & 1;
|
||||
*digit = d;
|
||||
}
|
||||
|
||||
/*
|
||||
* ecp_nistz256_avx2_mul_g performs multiplication by G, using only the
|
||||
* precomputed table. It does 4 affine point additions in parallel,
|
||||
* significantly speeding up point multiplication for a fixed value.
|
||||
*/
|
||||
static void ecp_nistz256_avx2_mul_g(P256_POINT *r,
|
||||
unsigned char p_str[33],
|
||||
const P256_POINT_AFFINE(*preComputedTable)[64])
|
||||
{
|
||||
const unsigned int window_size = 7;
|
||||
const unsigned int mask = (1 << (window_size + 1)) - 1;
|
||||
unsigned int wvalue;
|
||||
/* Using 4 windows at a time */
|
||||
unsigned char sign0, digit0;
|
||||
unsigned char sign1, digit1;
|
||||
unsigned char sign2, digit2;
|
||||
unsigned char sign3, digit3;
|
||||
unsigned int idx = 0;
|
||||
BN_ULONG tmp[P256_LIMBS];
|
||||
int i;
|
||||
|
||||
ALIGN32 BN_ULONG aX4[4 * 9 * 3] = { 0 };
|
||||
ALIGN32 BN_ULONG bX4[4 * 9 * 2] = { 0 };
|
||||
ALIGN32 P256_POINT_AFFINE point_arr[4];
|
||||
ALIGN32 P256_POINT res_point_arr[4];
|
||||
|
||||
/* Initial four windows */
|
||||
wvalue = *((u16 *) & p_str[0]);
|
||||
wvalue = (wvalue << 1) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign0, &digit0, wvalue);
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign1, &digit1, wvalue);
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign2, &digit2, wvalue);
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign3, &digit3, wvalue);
|
||||
|
||||
ecp_nistz256_avx2_multi_gather_w7(point_arr, preComputedTable[0],
|
||||
digit0, digit1, digit2, digit3);
|
||||
|
||||
ecp_nistz256_neg(tmp, point_arr[0].Y);
|
||||
copy_conditional(point_arr[0].Y, tmp, sign0);
|
||||
ecp_nistz256_neg(tmp, point_arr[1].Y);
|
||||
copy_conditional(point_arr[1].Y, tmp, sign1);
|
||||
ecp_nistz256_neg(tmp, point_arr[2].Y);
|
||||
copy_conditional(point_arr[2].Y, tmp, sign2);
|
||||
ecp_nistz256_neg(tmp, point_arr[3].Y);
|
||||
copy_conditional(point_arr[3].Y, tmp, sign3);
|
||||
|
||||
ecp_nistz256_avx2_transpose_convert(aX4, point_arr);
|
||||
ecp_nistz256_avx2_to_mont(aX4, aX4);
|
||||
ecp_nistz256_avx2_to_mont(&aX4[4 * 9], &aX4[4 * 9]);
|
||||
ecp_nistz256_avx2_set1(&aX4[4 * 9 * 2]);
|
||||
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign0, &digit0, wvalue);
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign1, &digit1, wvalue);
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign2, &digit2, wvalue);
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign3, &digit3, wvalue);
|
||||
|
||||
ecp_nistz256_avx2_multi_gather_w7(point_arr, preComputedTable[4 * 1],
|
||||
digit0, digit1, digit2, digit3);
|
||||
|
||||
ecp_nistz256_neg(tmp, point_arr[0].Y);
|
||||
copy_conditional(point_arr[0].Y, tmp, sign0);
|
||||
ecp_nistz256_neg(tmp, point_arr[1].Y);
|
||||
copy_conditional(point_arr[1].Y, tmp, sign1);
|
||||
ecp_nistz256_neg(tmp, point_arr[2].Y);
|
||||
copy_conditional(point_arr[2].Y, tmp, sign2);
|
||||
ecp_nistz256_neg(tmp, point_arr[3].Y);
|
||||
copy_conditional(point_arr[3].Y, tmp, sign3);
|
||||
|
||||
ecp_nistz256_avx2_transpose_convert(bX4, point_arr);
|
||||
ecp_nistz256_avx2_to_mont(bX4, bX4);
|
||||
ecp_nistz256_avx2_to_mont(&bX4[4 * 9], &bX4[4 * 9]);
|
||||
/* Optimized when both inputs are affine */
|
||||
ecp_nistz256_avx2_point_add_affines_x4(aX4, aX4, bX4);
|
||||
|
||||
for (i = 2; i < 9; i++) {
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign0, &digit0, wvalue);
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign1, &digit1, wvalue);
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign2, &digit2, wvalue);
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
booth_recode_w7(&sign3, &digit3, wvalue);
|
||||
|
||||
ecp_nistz256_avx2_multi_gather_w7(point_arr,
|
||||
preComputedTable[4 * i],
|
||||
digit0, digit1, digit2, digit3);
|
||||
|
||||
ecp_nistz256_neg(tmp, point_arr[0].Y);
|
||||
copy_conditional(point_arr[0].Y, tmp, sign0);
|
||||
ecp_nistz256_neg(tmp, point_arr[1].Y);
|
||||
copy_conditional(point_arr[1].Y, tmp, sign1);
|
||||
ecp_nistz256_neg(tmp, point_arr[2].Y);
|
||||
copy_conditional(point_arr[2].Y, tmp, sign2);
|
||||
ecp_nistz256_neg(tmp, point_arr[3].Y);
|
||||
copy_conditional(point_arr[3].Y, tmp, sign3);
|
||||
|
||||
ecp_nistz256_avx2_transpose_convert(bX4, point_arr);
|
||||
ecp_nistz256_avx2_to_mont(bX4, bX4);
|
||||
ecp_nistz256_avx2_to_mont(&bX4[4 * 9], &bX4[4 * 9]);
|
||||
|
||||
ecp_nistz256_avx2_point_add_affine_x4(aX4, aX4, bX4);
|
||||
}
|
||||
|
||||
ecp_nistz256_avx2_from_mont(&aX4[4 * 9 * 0], &aX4[4 * 9 * 0]);
|
||||
ecp_nistz256_avx2_from_mont(&aX4[4 * 9 * 1], &aX4[4 * 9 * 1]);
|
||||
ecp_nistz256_avx2_from_mont(&aX4[4 * 9 * 2], &aX4[4 * 9 * 2]);
|
||||
|
||||
ecp_nistz256_avx2_convert_transpose_back(res_point_arr, aX4);
|
||||
/* Last window is performed serially */
|
||||
wvalue = *((u16 *) & p_str[(idx - 1) / 8]);
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
booth_recode_w7(&sign0, &digit0, wvalue);
|
||||
ecp_nistz256_gather_w7((P256_POINT_AFFINE *)r,
|
||||
preComputedTable[36], digit0);
|
||||
ecp_nistz256_neg(tmp, r->Y);
|
||||
copy_conditional(r->Y, tmp, sign0);
|
||||
memcpy(r->Z, ONE, sizeof(ONE));
|
||||
/* Sum the four windows */
|
||||
ecp_nistz256_point_add(r, r, &res_point_arr[0]);
|
||||
ecp_nistz256_point_add(r, r, &res_point_arr[1]);
|
||||
ecp_nistz256_point_add(r, r, &res_point_arr[2]);
|
||||
ecp_nistz256_point_add(r, r, &res_point_arr[3]);
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
__owur static int ecp_nistz256_set_from_affine(EC_POINT *out, const EC_GROUP *group,
|
||||
const P256_POINT_AFFINE *in,
|
||||
BN_CTX *ctx)
|
||||
@@ -1219,6 +1018,8 @@ __owur static int ecp_nistz256_points_mul(const EC_GROUP *group,
|
||||
}
|
||||
|
||||
if (preComputedTable) {
|
||||
BN_ULONG infty;
|
||||
|
||||
if ((BN_num_bits(scalar) > 256)
|
||||
|| BN_is_negative(scalar)) {
|
||||
if ((tmp_scalar = BN_CTX_get(ctx)) == NULL)
|
||||
@@ -1250,67 +1051,58 @@ __owur static int ecp_nistz256_points_mul(const EC_GROUP *group,
|
||||
for (; i < 33; i++)
|
||||
p_str[i] = 0;
|
||||
|
||||
#if defined(ECP_NISTZ256_AVX2)
|
||||
if (ecp_nistz_avx2_eligible()) {
|
||||
ecp_nistz256_avx2_mul_g(&p.p, p_str, preComputedTable);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
BN_ULONG infty;
|
||||
/* First window */
|
||||
wvalue = (p_str[0] << 1) & mask;
|
||||
idx += window_size;
|
||||
|
||||
/* First window */
|
||||
wvalue = (p_str[0] << 1) & mask;
|
||||
wvalue = _booth_recode_w7(wvalue);
|
||||
|
||||
ecp_nistz256_gather_w7(&p.a, preComputedTable[0],
|
||||
wvalue >> 1);
|
||||
|
||||
ecp_nistz256_neg(p.p.Z, p.p.Y);
|
||||
copy_conditional(p.p.Y, p.p.Z, wvalue & 1);
|
||||
|
||||
/*
|
||||
* Since affine infinity is encoded as (0,0) and
|
||||
* Jacobian is (,,0), we need to harmonize them
|
||||
* by assigning "one" or zero to Z.
|
||||
*/
|
||||
infty = (p.p.X[0] | p.p.X[1] | p.p.X[2] | p.p.X[3] |
|
||||
p.p.Y[0] | p.p.Y[1] | p.p.Y[2] | p.p.Y[3]);
|
||||
if (P256_LIMBS == 8)
|
||||
infty |= (p.p.X[4] | p.p.X[5] | p.p.X[6] | p.p.X[7] |
|
||||
p.p.Y[4] | p.p.Y[5] | p.p.Y[6] | p.p.Y[7]);
|
||||
|
||||
infty = 0 - is_zero(infty);
|
||||
infty = ~infty;
|
||||
|
||||
p.p.Z[0] = ONE[0] & infty;
|
||||
p.p.Z[1] = ONE[1] & infty;
|
||||
p.p.Z[2] = ONE[2] & infty;
|
||||
p.p.Z[3] = ONE[3] & infty;
|
||||
if (P256_LIMBS == 8) {
|
||||
p.p.Z[4] = ONE[4] & infty;
|
||||
p.p.Z[5] = ONE[5] & infty;
|
||||
p.p.Z[6] = ONE[6] & infty;
|
||||
p.p.Z[7] = ONE[7] & infty;
|
||||
}
|
||||
|
||||
for (i = 1; i < 37; i++) {
|
||||
unsigned int off = (idx - 1) / 8;
|
||||
wvalue = p_str[off] | p_str[off + 1] << 8;
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
|
||||
wvalue = _booth_recode_w7(wvalue);
|
||||
|
||||
ecp_nistz256_gather_w7(&p.a, preComputedTable[0],
|
||||
wvalue >> 1);
|
||||
ecp_nistz256_gather_w7(&t.a,
|
||||
preComputedTable[i], wvalue >> 1);
|
||||
|
||||
ecp_nistz256_neg(p.p.Z, p.p.Y);
|
||||
copy_conditional(p.p.Y, p.p.Z, wvalue & 1);
|
||||
ecp_nistz256_neg(t.p.Z, t.a.Y);
|
||||
copy_conditional(t.a.Y, t.p.Z, wvalue & 1);
|
||||
|
||||
/*
|
||||
* Since affine infinity is encoded as (0,0) and
|
||||
* Jacobian ias (,,0), we need to harmonize them
|
||||
* by assigning "one" or zero to Z.
|
||||
*/
|
||||
infty = (p.p.X[0] | p.p.X[1] | p.p.X[2] | p.p.X[3] |
|
||||
p.p.Y[0] | p.p.Y[1] | p.p.Y[2] | p.p.Y[3]);
|
||||
if (P256_LIMBS == 8)
|
||||
infty |= (p.p.X[4] | p.p.X[5] | p.p.X[6] | p.p.X[7] |
|
||||
p.p.Y[4] | p.p.Y[5] | p.p.Y[6] | p.p.Y[7]);
|
||||
|
||||
infty = 0 - is_zero(infty);
|
||||
infty = ~infty;
|
||||
|
||||
p.p.Z[0] = ONE[0] & infty;
|
||||
p.p.Z[1] = ONE[1] & infty;
|
||||
p.p.Z[2] = ONE[2] & infty;
|
||||
p.p.Z[3] = ONE[3] & infty;
|
||||
if (P256_LIMBS == 8) {
|
||||
p.p.Z[4] = ONE[4] & infty;
|
||||
p.p.Z[5] = ONE[5] & infty;
|
||||
p.p.Z[6] = ONE[6] & infty;
|
||||
p.p.Z[7] = ONE[7] & infty;
|
||||
}
|
||||
|
||||
for (i = 1; i < 37; i++) {
|
||||
unsigned int off = (idx - 1) / 8;
|
||||
wvalue = p_str[off] | p_str[off + 1] << 8;
|
||||
wvalue = (wvalue >> ((idx - 1) % 8)) & mask;
|
||||
idx += window_size;
|
||||
|
||||
wvalue = _booth_recode_w7(wvalue);
|
||||
|
||||
ecp_nistz256_gather_w7(&t.a,
|
||||
preComputedTable[i], wvalue >> 1);
|
||||
|
||||
ecp_nistz256_neg(t.p.Z, t.a.Y);
|
||||
copy_conditional(t.a.Y, t.p.Z, wvalue & 1);
|
||||
|
||||
ecp_nistz256_point_add_affine(&p.p, &p.p, &t.a);
|
||||
}
|
||||
ecp_nistz256_point_add_affine(&p.p, &p.p, &t.a);
|
||||
}
|
||||
} else {
|
||||
p_is_infinity = 1;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -171,6 +171,7 @@ void engine_cleanup_int(void)
|
||||
cleanup_stack = NULL;
|
||||
}
|
||||
CRYPTO_THREAD_lock_free(global_engine_lock);
|
||||
global_engine_lock = NULL;
|
||||
}
|
||||
|
||||
/* Now the "ex_data" support */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
# Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the OpenSSL license (the "License"). You may not use
|
||||
# this file except in compliance with the License. You can obtain a copy
|
||||
@@ -36,6 +36,7 @@ ASN1_F_ASN1_ITEM_D2I_FP:206:ASN1_item_d2i_fp
|
||||
ASN1_F_ASN1_ITEM_DUP:191:ASN1_item_dup
|
||||
ASN1_F_ASN1_ITEM_EMBED_D2I:120:asn1_item_embed_d2i
|
||||
ASN1_F_ASN1_ITEM_EMBED_NEW:121:asn1_item_embed_new
|
||||
ASN1_F_ASN1_ITEM_EX_I2D:144:ASN1_item_ex_i2d
|
||||
ASN1_F_ASN1_ITEM_FLAGS_I2D:118:asn1_item_flags_i2d
|
||||
ASN1_F_ASN1_ITEM_I2D_BIO:192:ASN1_item_i2d_bio
|
||||
ASN1_F_ASN1_ITEM_I2D_FP:193:ASN1_item_i2d_fp
|
||||
@@ -934,6 +935,8 @@ PEM_F_PEM_READ_PRIVATEKEY:124:PEM_read_PrivateKey
|
||||
PEM_F_PEM_SIGNFINAL:112:PEM_SignFinal
|
||||
PEM_F_PEM_WRITE:113:PEM_write
|
||||
PEM_F_PEM_WRITE_BIO:114:PEM_write_bio
|
||||
PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL:147:\
|
||||
PEM_write_bio_PrivateKey_traditional
|
||||
PEM_F_PEM_WRITE_PRIVATEKEY:139:PEM_write_PrivateKey
|
||||
PEM_F_PEM_X509_INFO_READ:115:PEM_X509_INFO_read
|
||||
PEM_F_PEM_X509_INFO_READ_BIO:116:PEM_X509_INFO_read_bio
|
||||
@@ -1742,6 +1745,7 @@ X509_F_X509_NAME_PRINT:117:X509_NAME_print
|
||||
X509_F_X509_OBJECT_NEW:150:X509_OBJECT_new
|
||||
X509_F_X509_PRINT_EX_FP:118:X509_print_ex_fp
|
||||
X509_F_X509_PUBKEY_DECODE:148:x509_pubkey_decode
|
||||
X509_F_X509_PUBKEY_GET:161:X509_PUBKEY_get
|
||||
X509_F_X509_PUBKEY_GET0:119:X509_PUBKEY_get0
|
||||
X509_F_X509_PUBKEY_SET:120:X509_PUBKEY_set
|
||||
X509_F_X509_REQ_CHECK_PRIVATE_KEY:144:X509_REQ_check_private_key
|
||||
@@ -1768,6 +1772,7 @@ ASN1_R_ASN1_PARSE_ERROR:203:asn1 parse error
|
||||
ASN1_R_ASN1_SIG_PARSE_ERROR:204:asn1 sig parse error
|
||||
ASN1_R_AUX_ERROR:100:aux error
|
||||
ASN1_R_BAD_OBJECT_HEADER:102:bad object header
|
||||
ASN1_R_BAD_TEMPLATE:230:bad template
|
||||
ASN1_R_BMPSTRING_IS_WRONG_LENGTH:214:bmpstring is wrong length
|
||||
ASN1_R_BN_LIB:105:bn lib
|
||||
ASN1_R_BOOLEAN_IS_WRONG_LENGTH:106:boolean is wrong length
|
||||
@@ -2164,6 +2169,7 @@ EC_R_KEYS_NOT_SET:140:keys not set
|
||||
EC_R_LADDER_POST_FAILURE:136:ladder post failure
|
||||
EC_R_LADDER_PRE_FAILURE:153:ladder pre failure
|
||||
EC_R_LADDER_STEP_FAILURE:162:ladder step failure
|
||||
EC_R_MISSING_OID:167:missing OID
|
||||
EC_R_MISSING_PARAMETERS:124:missing parameters
|
||||
EC_R_MISSING_PRIVATE_KEY:125:missing private key
|
||||
EC_R_NEED_NEW_SETUP_VALUES:157:need new setup values
|
||||
@@ -2277,6 +2283,7 @@ EVP_R_ONLY_ONESHOT_SUPPORTED:177:only oneshot supported
|
||||
EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE:150:\
|
||||
operation not supported for this keytype
|
||||
EVP_R_OPERATON_NOT_INITIALIZED:151:operaton not initialized
|
||||
EVP_R_OUTPUT_WOULD_OVERFLOW:184:output would overflow
|
||||
EVP_R_PARTIALLY_OVERLAPPING:162:partially overlapping buffers
|
||||
EVP_R_PBKDF2_ERROR:181:pbkdf2 error
|
||||
EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED:179:\
|
||||
@@ -2398,6 +2405,7 @@ PEM_R_UNEXPECTED_DEK_IV:130:unexpected dek iv
|
||||
PEM_R_UNSUPPORTED_CIPHER:113:unsupported cipher
|
||||
PEM_R_UNSUPPORTED_ENCRYPTION:114:unsupported encryption
|
||||
PEM_R_UNSUPPORTED_KEY_COMPONENTS:126:unsupported key components
|
||||
PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE:110:unsupported public key type
|
||||
PKCS12_R_CANT_PACK_STRUCTURE:100:cant pack structure
|
||||
PKCS12_R_CONTENT_TYPE_NOT_DATA:121:content type not data
|
||||
PKCS12_R_DECODE_ERROR:101:decode error
|
||||
|
||||
@@ -130,11 +130,6 @@ void bsaes_xts_decrypt(const unsigned char *inp, unsigned char *out,
|
||||
size_t len, const AES_KEY *key1,
|
||||
const AES_KEY *key2, const unsigned char iv[16]);
|
||||
#endif
|
||||
#if !defined(AES_ASM) && !defined(AES_CTR_ASM) \
|
||||
&& defined(OPENSSL_AES_CONST_TIME) \
|
||||
&& !defined(OPENSSL_SMALL_FOOTPRINT)
|
||||
# define AES_CTR_ASM
|
||||
#endif
|
||||
#ifdef AES_CTR_ASM
|
||||
void AES_ctr32_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t blocks, const AES_KEY *key,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -423,7 +423,7 @@ static int evp_decodeblock_int(EVP_ENCODE_CTX *ctx, unsigned char *t,
|
||||
table = data_ascii2bin;
|
||||
|
||||
/* trim white space from the start of the line. */
|
||||
while ((conv_ascii2bin(*f, table) == B64_WS) && (n > 0)) {
|
||||
while ((n > 0) && (conv_ascii2bin(*f, table) == B64_WS)) {
|
||||
f++;
|
||||
n--;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#include <assert.h>
|
||||
#include "internal/cryptlib.h"
|
||||
#include <openssl/evp.h>
|
||||
@@ -355,6 +356,19 @@ static int evp_EncryptDecryptUpdate(EVP_CIPHER_CTX *ctx,
|
||||
return 1;
|
||||
} else {
|
||||
j = bl - i;
|
||||
|
||||
/*
|
||||
* Once we've processed the first j bytes from in, the amount of
|
||||
* data left that is a multiple of the block length is:
|
||||
* (inl - j) & ~(bl - 1)
|
||||
* We must ensure that this amount of data, plus the one block that
|
||||
* we process from ctx->buf does not exceed INT_MAX
|
||||
*/
|
||||
if (((inl - j) & ~(bl - 1)) > INT_MAX - bl) {
|
||||
EVPerr(EVP_F_EVP_ENCRYPTDECRYPTUPDATE,
|
||||
EVP_R_OUTPUT_WOULD_OVERFLOW);
|
||||
return 0;
|
||||
}
|
||||
memcpy(&(ctx->buf[i]), in, j);
|
||||
inl -= j;
|
||||
in += j;
|
||||
@@ -502,6 +516,19 @@ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
|
||||
EVPerr(EVP_F_EVP_DECRYPTUPDATE, EVP_R_PARTIALLY_OVERLAPPING);
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* final_used is only ever set if buf_len is 0. Therefore the maximum
|
||||
* length output we will ever see from evp_EncryptDecryptUpdate is
|
||||
* the maximum multiple of the block length that is <= inl, or just:
|
||||
* inl & ~(b - 1)
|
||||
* Since final_used has been set then the final output length is:
|
||||
* (inl & ~(b - 1)) + b
|
||||
* This must never exceed INT_MAX
|
||||
*/
|
||||
if ((inl & ~(b - 1)) > INT_MAX - b) {
|
||||
EVPerr(EVP_F_EVP_DECRYPTUPDATE, EVP_R_OUTPUT_WOULD_OVERFLOW);
|
||||
return 0;
|
||||
}
|
||||
memcpy(out, ctx->final, b);
|
||||
out += b;
|
||||
fix_len = 1;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -239,6 +239,8 @@ static const ERR_STRING_DATA EVP_str_reasons[] = {
|
||||
"operation not supported for this keytype"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_OPERATON_NOT_INITIALIZED),
|
||||
"operaton not initialized"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_OUTPUT_WOULD_OVERFLOW),
|
||||
"output would overflow"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_PARTIALLY_OVERLAPPING),
|
||||
"partially overlapping buffers"},
|
||||
{ERR_PACK(ERR_LIB_EVP, 0, EVP_R_PBKDF2_ERROR), "pbkdf2 error"},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2004-2014, Akamai Technologies. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
@@ -502,7 +502,7 @@ static void sh_done(void)
|
||||
OPENSSL_free(sh.freelist);
|
||||
OPENSSL_free(sh.bittable);
|
||||
OPENSSL_free(sh.bitmalloc);
|
||||
if (sh.map_result != NULL && sh.map_size)
|
||||
if (sh.map_result != MAP_FAILED && sh.map_size)
|
||||
munmap(sh.map_result, sh.map_size);
|
||||
memset(&sh, 0, sizeof(sh));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -15,6 +15,12 @@
|
||||
# define STRICT_ALIGNMENT 0
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && !STRICT_ALIGNMENT
|
||||
typedef size_t size_t_aX __attribute((__aligned__(1)));
|
||||
#else
|
||||
typedef size_t size_t_aX;
|
||||
#endif
|
||||
|
||||
void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t len, const void *key,
|
||||
unsigned char ivec[16], block128_f block)
|
||||
@@ -40,8 +46,8 @@ void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
} else {
|
||||
while (len >= 16) {
|
||||
for (n = 0; n < 16; n += sizeof(size_t))
|
||||
*(size_t *)(out + n) =
|
||||
*(size_t *)(in + n) ^ *(size_t *)(iv + n);
|
||||
*(size_t_aX *)(out + n) =
|
||||
*(size_t_aX *)(in + n) ^ *(size_t_aX *)(iv + n);
|
||||
(*block) (out, out, key);
|
||||
iv = out;
|
||||
len -= 16;
|
||||
@@ -96,7 +102,8 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out,
|
||||
}
|
||||
} else if (16 % sizeof(size_t) == 0) { /* always true */
|
||||
while (len >= 16) {
|
||||
size_t *out_t = (size_t *)out, *iv_t = (size_t *)iv;
|
||||
size_t_aX *out_t = (size_t_aX *)out;
|
||||
size_t_aX *iv_t = (size_t_aX *)iv;
|
||||
|
||||
(*block) (in, out, key);
|
||||
for (n = 0; n < 16 / sizeof(size_t); n++)
|
||||
@@ -125,8 +132,10 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out,
|
||||
}
|
||||
} else if (16 % sizeof(size_t) == 0) { /* always true */
|
||||
while (len >= 16) {
|
||||
size_t c, *out_t = (size_t *)out, *ivec_t = (size_t *)ivec;
|
||||
const size_t *in_t = (const size_t *)in;
|
||||
size_t c;
|
||||
size_t_aX *out_t = (size_t_aX *)out;
|
||||
size_t_aX *ivec_t = (size_t_aX *)ivec;
|
||||
const size_t_aX *in_t = (const size_t_aX *)in;
|
||||
|
||||
(*block) (in, tmp.c, key);
|
||||
for (n = 0; n < 16 / sizeof(size_t); n++) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2011-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -11,6 +11,14 @@
|
||||
#include "modes_local.h"
|
||||
#include <string.h>
|
||||
|
||||
#ifndef STRICT_ALIGNMENT
|
||||
# ifdef __GNUC__
|
||||
typedef u64 u64_a1 __attribute((__aligned__(1)));
|
||||
# else
|
||||
typedef u64 u64_a1;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* First you setup M and L parameters and pass the key schedule. This is
|
||||
* called once per session setup...
|
||||
@@ -170,8 +178,8 @@ int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx,
|
||||
ctx->cmac.u[0] ^= temp.u[0];
|
||||
ctx->cmac.u[1] ^= temp.u[1];
|
||||
#else
|
||||
ctx->cmac.u[0] ^= ((u64 *)inp)[0];
|
||||
ctx->cmac.u[1] ^= ((u64 *)inp)[1];
|
||||
ctx->cmac.u[0] ^= ((u64_a1 *)inp)[0];
|
||||
ctx->cmac.u[1] ^= ((u64_a1 *)inp)[1];
|
||||
#endif
|
||||
(*block) (ctx->cmac.c, ctx->cmac.c, key);
|
||||
(*block) (ctx->nonce.c, scratch.c, key);
|
||||
@@ -181,8 +189,8 @@ int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx,
|
||||
temp.u[1] ^= scratch.u[1];
|
||||
memcpy(out, temp.c, 16);
|
||||
#else
|
||||
((u64 *)out)[0] = scratch.u[0] ^ ((u64 *)inp)[0];
|
||||
((u64 *)out)[1] = scratch.u[1] ^ ((u64 *)inp)[1];
|
||||
((u64_a1 *)out)[0] = scratch.u[0] ^ ((u64_a1 *)inp)[0];
|
||||
((u64_a1 *)out)[1] = scratch.u[1] ^ ((u64_a1 *)inp)[1];
|
||||
#endif
|
||||
inp += 16;
|
||||
out += 16;
|
||||
@@ -254,8 +262,10 @@ int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx,
|
||||
ctx->cmac.u[1] ^= (scratch.u[1] ^= temp.u[1]);
|
||||
memcpy(out, scratch.c, 16);
|
||||
#else
|
||||
ctx->cmac.u[0] ^= (((u64 *)out)[0] = scratch.u[0] ^ ((u64 *)inp)[0]);
|
||||
ctx->cmac.u[1] ^= (((u64 *)out)[1] = scratch.u[1] ^ ((u64 *)inp)[1]);
|
||||
ctx->cmac.u[0] ^= (((u64_a1 *)out)[0]
|
||||
= scratch.u[0] ^ ((u64_a1 *)inp)[0]);
|
||||
ctx->cmac.u[1] ^= (((u64_a1 *)out)[1]
|
||||
= scratch.u[1] ^ ((u64_a1 *)inp)[1]);
|
||||
#endif
|
||||
(*block) (ctx->cmac.c, ctx->cmac.c, key);
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -11,6 +11,12 @@
|
||||
#include "modes_local.h"
|
||||
#include <string.h>
|
||||
|
||||
#if defined(__GNUC__) && !defined(STRICT_ALIGNMENT)
|
||||
typedef size_t size_t_aX __attribute((__aligned__(1)));
|
||||
#else
|
||||
typedef size_t size_t_aX;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The input and output encrypted as though 128bit cfb mode is being used.
|
||||
* The extra state information to record how much of the 128bit block we have
|
||||
@@ -43,8 +49,9 @@ void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
while (len >= 16) {
|
||||
(*block) (ivec, ivec, key);
|
||||
for (; n < 16; n += sizeof(size_t)) {
|
||||
*(size_t *)(out + n) =
|
||||
*(size_t *)(ivec + n) ^= *(size_t *)(in + n);
|
||||
*(size_t_aX *)(out + n) =
|
||||
*(size_t_aX *)(ivec + n)
|
||||
^= *(size_t_aX *)(in + n);
|
||||
}
|
||||
len -= 16;
|
||||
out += 16;
|
||||
@@ -92,9 +99,10 @@ void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
while (len >= 16) {
|
||||
(*block) (ivec, ivec, key);
|
||||
for (; n < 16; n += sizeof(size_t)) {
|
||||
size_t t = *(size_t *)(in + n);
|
||||
*(size_t *)(out + n) = *(size_t *)(ivec + n) ^ t;
|
||||
*(size_t *)(ivec + n) = t;
|
||||
size_t t = *(size_t_aX *)(in + n);
|
||||
*(size_t_aX *)(out + n)
|
||||
= *(size_t_aX *)(ivec + n) ^ t;
|
||||
*(size_t_aX *)(ivec + n) = t;
|
||||
}
|
||||
len -= 16;
|
||||
out += 16;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -11,6 +11,12 @@
|
||||
#include "modes_local.h"
|
||||
#include <string.h>
|
||||
|
||||
#if defined(__GNUC__) && !defined(STRICT_ALIGNMENT)
|
||||
typedef size_t size_t_aX __attribute((__aligned__(1)));
|
||||
#else
|
||||
typedef size_t size_t_aX;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* NOTE: the IV/counter CTR mode is big-endian. The code itself is
|
||||
* endian-neutral.
|
||||
@@ -97,8 +103,9 @@ void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
(*block) (ivec, ecount_buf, key);
|
||||
ctr128_inc_aligned(ivec);
|
||||
for (n = 0; n < 16; n += sizeof(size_t))
|
||||
*(size_t *)(out + n) =
|
||||
*(size_t *)(in + n) ^ *(size_t *)(ecount_buf + n);
|
||||
*(size_t_aX *)(out + n) =
|
||||
*(size_t_aX *)(in + n)
|
||||
^ *(size_t_aX *)(ecount_buf + n);
|
||||
len -= 16;
|
||||
out += 16;
|
||||
in += 16;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -11,6 +11,12 @@
|
||||
#include "modes_local.h"
|
||||
#include <string.h>
|
||||
|
||||
#if defined(__GNUC__) && !defined(STRICT_ALIGNMENT)
|
||||
typedef size_t size_t_aX __attribute((__aligned__(1)));
|
||||
#else
|
||||
typedef size_t size_t_aX;
|
||||
#endif
|
||||
|
||||
#if defined(BSWAP4) && defined(STRICT_ALIGNMENT)
|
||||
/* redefine, because alignment is ensured */
|
||||
# undef GETU32
|
||||
@@ -1080,8 +1086,8 @@ int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx,
|
||||
size_t j = GHASH_CHUNK;
|
||||
|
||||
while (j) {
|
||||
size_t *out_t = (size_t *)out;
|
||||
const size_t *in_t = (const size_t *)in;
|
||||
size_t_aX *out_t = (size_t_aX *)out;
|
||||
const size_t_aX *in_t = (const size_t_aX *)in;
|
||||
|
||||
(*block) (ctx->Yi.c, ctx->EKi.c, key);
|
||||
++ctr;
|
||||
@@ -1107,8 +1113,8 @@ int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx,
|
||||
size_t j = i;
|
||||
|
||||
while (len >= 16) {
|
||||
size_t *out_t = (size_t *)out;
|
||||
const size_t *in_t = (const size_t *)in;
|
||||
size_t_aX *out_t = (size_t_aX *)out;
|
||||
const size_t_aX *in_t = (const size_t_aX *)in;
|
||||
|
||||
(*block) (ctx->Yi.c, ctx->EKi.c, key);
|
||||
++ctr;
|
||||
@@ -1318,8 +1324,8 @@ int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx,
|
||||
|
||||
GHASH(ctx, in, GHASH_CHUNK);
|
||||
while (j) {
|
||||
size_t *out_t = (size_t *)out;
|
||||
const size_t *in_t = (const size_t *)in;
|
||||
size_t_aX *out_t = (size_t_aX *)out;
|
||||
const size_t_aX *in_t = (const size_t_aX *)in;
|
||||
|
||||
(*block) (ctx->Yi.c, ctx->EKi.c, key);
|
||||
++ctr;
|
||||
@@ -1343,8 +1349,8 @@ int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx,
|
||||
if ((i = (len & (size_t)-16))) {
|
||||
GHASH(ctx, in, i);
|
||||
while (len >= 16) {
|
||||
size_t *out_t = (size_t *)out;
|
||||
const size_t *in_t = (const size_t *)in;
|
||||
size_t_aX *out_t = (size_t_aX *)out;
|
||||
const size_t_aX *in_t = (const size_t_aX *)in;
|
||||
|
||||
(*block) (ctx->Yi.c, ctx->EKi.c, key);
|
||||
++ctr;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -37,6 +37,14 @@ typedef unsigned char u8;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef STRICT_ALIGNMENT
|
||||
# ifdef __GNUC__
|
||||
typedef u32 u32_a1 __attribute((__aligned__(1)));
|
||||
# else
|
||||
typedef u32 u32_a1;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(PEDANTIC) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
|
||||
# if defined(__GNUC__) && __GNUC__>=2
|
||||
# if defined(__x86_64) || defined(__x86_64__)
|
||||
@@ -86,8 +94,8 @@ _asm mov eax, val _asm bswap eax}
|
||||
# endif
|
||||
#endif
|
||||
#if defined(BSWAP4) && !defined(STRICT_ALIGNMENT)
|
||||
# define GETU32(p) BSWAP4(*(const u32 *)(p))
|
||||
# define PUTU32(p,v) *(u32 *)(p) = BSWAP4(v)
|
||||
# define GETU32(p) BSWAP4(*(const u32_a1 *)(p))
|
||||
# define PUTU32(p,v) *(u32_a1 *)(p) = BSWAP4(v)
|
||||
#else
|
||||
# define GETU32(p) ((u32)(p)[0]<<24|(u32)(p)[1]<<16|(u32)(p)[2]<<8|(u32)(p)[3])
|
||||
# define PUTU32(p,v) ((p)[0]=(u8)((v)>>24),(p)[1]=(u8)((v)>>16),(p)[2]=(u8)((v)>>8),(p)[3]=(u8)(v))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -11,6 +11,12 @@
|
||||
#include "modes_local.h"
|
||||
#include <string.h>
|
||||
|
||||
#if defined(__GNUC__) && !defined(STRICT_ALIGNMENT)
|
||||
typedef size_t size_t_aX __attribute((__aligned__(1)));
|
||||
#else
|
||||
typedef size_t size_t_aX;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The input and output encrypted as though 128bit ofb mode is being used.
|
||||
* The extra state information to record how much of the 128bit block we have
|
||||
@@ -41,8 +47,9 @@ void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
while (len >= 16) {
|
||||
(*block) (ivec, ivec, key);
|
||||
for (; n < 16; n += sizeof(size_t))
|
||||
*(size_t *)(out + n) =
|
||||
*(size_t *)(in + n) ^ *(size_t *)(ivec + n);
|
||||
*(size_t_aX *)(out + n) =
|
||||
*(size_t_aX *)(in + n)
|
||||
^ *(size_t_aX *)(ivec + n);
|
||||
len -= 16;
|
||||
out += 16;
|
||||
in += 16;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -11,6 +11,14 @@
|
||||
#include "modes_local.h"
|
||||
#include <string.h>
|
||||
|
||||
#ifndef STRICT_ALIGNMENT
|
||||
# ifdef __GNUC__
|
||||
typedef u64 u64_a1 __attribute((__aligned__(1)));
|
||||
# else
|
||||
typedef u64 u64_a1;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx,
|
||||
const unsigned char iv[16],
|
||||
const unsigned char *inp, unsigned char *out,
|
||||
@@ -45,8 +53,8 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx,
|
||||
scratch.u[0] ^= tweak.u[0];
|
||||
scratch.u[1] ^= tweak.u[1];
|
||||
#else
|
||||
scratch.u[0] = ((u64 *)inp)[0] ^ tweak.u[0];
|
||||
scratch.u[1] = ((u64 *)inp)[1] ^ tweak.u[1];
|
||||
scratch.u[0] = ((u64_a1 *)inp)[0] ^ tweak.u[0];
|
||||
scratch.u[1] = ((u64_a1 *)inp)[1] ^ tweak.u[1];
|
||||
#endif
|
||||
(*ctx->block1) (scratch.c, scratch.c, ctx->key1);
|
||||
#if defined(STRICT_ALIGNMENT)
|
||||
@@ -54,8 +62,8 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx,
|
||||
scratch.u[1] ^= tweak.u[1];
|
||||
memcpy(out, scratch.c, 16);
|
||||
#else
|
||||
((u64 *)out)[0] = scratch.u[0] ^= tweak.u[0];
|
||||
((u64 *)out)[1] = scratch.u[1] ^= tweak.u[1];
|
||||
((u64_a1 *)out)[0] = scratch.u[0] ^= tweak.u[0];
|
||||
((u64_a1 *)out)[1] = scratch.u[1] ^= tweak.u[1];
|
||||
#endif
|
||||
inp += 16;
|
||||
out += 16;
|
||||
@@ -128,8 +136,8 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx,
|
||||
scratch.u[0] ^= tweak1.u[0];
|
||||
scratch.u[1] ^= tweak1.u[1];
|
||||
#else
|
||||
scratch.u[0] = ((u64 *)inp)[0] ^ tweak1.u[0];
|
||||
scratch.u[1] = ((u64 *)inp)[1] ^ tweak1.u[1];
|
||||
scratch.u[0] = ((u64_a1 *)inp)[0] ^ tweak1.u[0];
|
||||
scratch.u[1] = ((u64_a1 *)inp)[1] ^ tweak1.u[1];
|
||||
#endif
|
||||
(*ctx->block1) (scratch.c, scratch.c, ctx->key1);
|
||||
scratch.u[0] ^= tweak1.u[0];
|
||||
@@ -148,8 +156,8 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx,
|
||||
scratch.u[1] ^= tweak.u[1];
|
||||
memcpy(out, scratch.c, 16);
|
||||
#else
|
||||
((u64 *)out)[0] = scratch.u[0] ^ tweak.u[0];
|
||||
((u64 *)out)[1] = scratch.u[1] ^ tweak.u[1];
|
||||
((u64_a1 *)out)[0] = scratch.u[0] ^ tweak.u[0];
|
||||
((u64_a1 *)out)[1] = scratch.u[1] ^ tweak.u[1];
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2003-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2003-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -220,7 +220,7 @@ char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len)
|
||||
|
||||
int openssl_strerror_r(int errnum, char *buf, size_t buflen)
|
||||
{
|
||||
#if defined(_MSC_VER) && _MSC_VER>=1400
|
||||
#if defined(_MSC_VER) && _MSC_VER>=1400 && !defined(_WIN32_WCE)
|
||||
return !strerror_s(buf, buflen, errnum);
|
||||
#elif defined(_GNU_SOURCE)
|
||||
char *err;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -41,7 +41,7 @@ struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result)
|
||||
if (gmtime_r(timer, result) == NULL)
|
||||
return NULL;
|
||||
ts = result;
|
||||
#elif defined (OPENSSL_SYS_WINDOWS) && defined(_MSC_VER) && _MSC_VER >= 1400
|
||||
#elif defined (OPENSSL_SYS_WINDOWS) && defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(_WIN32_WCE)
|
||||
if (gmtime_s(result, timer))
|
||||
return NULL;
|
||||
ts = result;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -60,6 +60,8 @@ static const ERR_STRING_DATA PEM_str_functs[] = {
|
||||
{ERR_PACK(ERR_LIB_PEM, PEM_F_PEM_SIGNFINAL, 0), "PEM_SignFinal"},
|
||||
{ERR_PACK(ERR_LIB_PEM, PEM_F_PEM_WRITE, 0), "PEM_write"},
|
||||
{ERR_PACK(ERR_LIB_PEM, PEM_F_PEM_WRITE_BIO, 0), "PEM_write_bio"},
|
||||
{ERR_PACK(ERR_LIB_PEM, PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL, 0),
|
||||
"PEM_write_bio_PrivateKey_traditional"},
|
||||
{ERR_PACK(ERR_LIB_PEM, PEM_F_PEM_WRITE_PRIVATEKEY, 0),
|
||||
"PEM_write_PrivateKey"},
|
||||
{ERR_PACK(ERR_LIB_PEM, PEM_F_PEM_X509_INFO_READ, 0), "PEM_X509_INFO_read"},
|
||||
@@ -109,6 +111,8 @@ static const ERR_STRING_DATA PEM_str_reasons[] = {
|
||||
"unsupported encryption"},
|
||||
{ERR_PACK(ERR_LIB_PEM, 0, PEM_R_UNSUPPORTED_KEY_COMPONENTS),
|
||||
"unsupported key components"},
|
||||
{ERR_PACK(ERR_LIB_PEM, 0, PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE),
|
||||
"unsupported public key type"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -332,7 +332,7 @@ int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp,
|
||||
}
|
||||
}
|
||||
|
||||
if ((dsize = i2d(x, NULL)) < 0) {
|
||||
if ((dsize = i2d(x, NULL)) <= 0) {
|
||||
PEMerr(PEM_F_PEM_ASN1_WRITE_BIO, ERR_R_ASN1_LIB);
|
||||
dsize = 0;
|
||||
goto err;
|
||||
@@ -791,7 +791,7 @@ static int get_header_and_data(BIO *bp, BIO **header, BIO **data, char *name,
|
||||
{
|
||||
BIO *tmp = *header;
|
||||
char *linebuf, *p;
|
||||
int len, line, ret = 0, end = 0;
|
||||
int len, line, ret = 0, end = 0, prev_partial_line_read = 0, partial_line_read = 0;
|
||||
/* 0 if not seen (yet), 1 if reading header, 2 if finished header */
|
||||
enum header_status got_header = MAYBE_HEADER;
|
||||
unsigned int flags_mask;
|
||||
@@ -809,10 +809,18 @@ static int get_header_and_data(BIO *bp, BIO **header, BIO **data, char *name,
|
||||
flags_mask = ~0u;
|
||||
len = BIO_gets(bp, linebuf, LINESIZE);
|
||||
if (len <= 0) {
|
||||
PEMerr(PEM_F_GET_HEADER_AND_DATA, PEM_R_SHORT_HEADER);
|
||||
PEMerr(PEM_F_GET_HEADER_AND_DATA, PEM_R_BAD_END_LINE);
|
||||
goto err;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if line has been read completely or if only part of the line
|
||||
* has been read. Keep the previous value to ignore newlines that
|
||||
* appear due to reading a line up until the char before the newline.
|
||||
*/
|
||||
prev_partial_line_read = partial_line_read;
|
||||
partial_line_read = len == LINESIZE-1 && linebuf[LINESIZE-2] != '\n';
|
||||
|
||||
if (got_header == MAYBE_HEADER) {
|
||||
if (memchr(linebuf, ':', len) != NULL)
|
||||
got_header = IN_HEADER;
|
||||
@@ -823,13 +831,19 @@ static int get_header_and_data(BIO *bp, BIO **header, BIO **data, char *name,
|
||||
|
||||
/* Check for end of header. */
|
||||
if (linebuf[0] == '\n') {
|
||||
if (got_header == POST_HEADER) {
|
||||
/* Another blank line is an error. */
|
||||
PEMerr(PEM_F_GET_HEADER_AND_DATA, PEM_R_BAD_END_LINE);
|
||||
goto err;
|
||||
/*
|
||||
* If previous line has been read only partially this newline is a
|
||||
* regular newline at the end of a line and not an empty line.
|
||||
*/
|
||||
if (!prev_partial_line_read) {
|
||||
if (got_header == POST_HEADER) {
|
||||
/* Another blank line is an error. */
|
||||
PEMerr(PEM_F_GET_HEADER_AND_DATA, PEM_R_BAD_END_LINE);
|
||||
goto err;
|
||||
}
|
||||
got_header = POST_HEADER;
|
||||
tmp = *data;
|
||||
}
|
||||
got_header = POST_HEADER;
|
||||
tmp = *data;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -108,6 +108,12 @@ int PEM_write_bio_PrivateKey_traditional(BIO *bp, EVP_PKEY *x,
|
||||
pem_password_cb *cb, void *u)
|
||||
{
|
||||
char pem_str[80];
|
||||
|
||||
if (x->ameth == NULL || x->ameth->old_priv_encode == NULL) {
|
||||
PEMerr(PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL,
|
||||
PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE);
|
||||
return 0;
|
||||
}
|
||||
BIO_snprintf(pem_str, 80, "%s PRIVATE KEY", x->ameth->pem_str);
|
||||
return PEM_ASN1_write_bio((i2d_of_void *)i2d_PrivateKey,
|
||||
pem_str, bp, x, enc, kstr, klen, cb, u);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2005-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -29,10 +29,10 @@ static unsigned int read_ledword(const unsigned char **in)
|
||||
{
|
||||
const unsigned char *p = *in;
|
||||
unsigned int ret;
|
||||
ret = *p++;
|
||||
ret |= (*p++ << 8);
|
||||
ret |= (*p++ << 16);
|
||||
ret |= (*p++ << 24);
|
||||
ret = (unsigned int)*p++;
|
||||
ret |= (unsigned int)*p++ << 8;
|
||||
ret |= (unsigned int)*p++ << 16;
|
||||
ret |= (unsigned int)*p++ << 24;
|
||||
*in = p;
|
||||
return ret;
|
||||
}
|
||||
@@ -875,9 +875,9 @@ int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel,
|
||||
wrlen = BIO_write(out, tmp, outlen);
|
||||
OPENSSL_free(tmp);
|
||||
if (wrlen == outlen) {
|
||||
PEMerr(PEM_F_I2B_PVK_BIO, PEM_R_BIO_WRITE_FAILURE);
|
||||
return outlen;
|
||||
}
|
||||
PEMerr(PEM_F_I2B_PVK_BIO, PEM_R_BIO_WRITE_FAILURE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
Loaded 100 of 1578 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user