1 // go.cypherpunks.ru/tai64n -- Pure Go TAI64/TAI64N implementation
2 // Copyright (C) 2020-2024 Sergey Matveev <stargrave@stargrave.org>
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, version 3 of the License.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program. If not, see <http://www.gnu.org/licenses/>.
27 "go.cypherpunks.ru/tai64n/v2"
34 flag.CommandLine.Output(),
35 "Replace \"@HEX(TAI64)\"-prefixed line with human readable UTC.\n",
39 leapsecs := flag.Bool("leapsecs", false, "Take leap seconds into account: honest TAI->UTC")
40 db := flag.String("leapsecsdb", "", "Use that leapsecs.dat leap seconds database")
44 buf, err := os.ReadFile(*db)
48 tai64n.LeapsecsDBLoad(buf)
51 scanner := bufio.NewScanner(os.Stdin)
58 if err = scanner.Err(); err != nil {
65 os.Stdout.WriteString(s + "\n")
68 sep = strings.IndexByte(s, byte(' '))
70 os.Stdout.WriteString(s + "\n")
73 t, err = tai64n.Decode(s[1:sep])
78 t = tai64n.LeapsecsSub(t)
80 os.Stdout.WriteString(t.Format(tai64n.LocalFmt) + s[sep:] + "\n")