From 29f329aedcdcf4e07a6dc3d9161439dd35ecfe11 Mon Sep 17 00:00:00 2001 From: Jeff Halter <868228+jhalter@users.noreply.github.com> Date: Wed, 25 May 2022 17:44:55 -0700 Subject: Add partial support for file create/modify timestamps This replaces hardcoded placeholder create/modify timestamps with the real times, mostly. Create time is OS specific, so for now I'm ignoring it at using the modify time as a stand-in. --- hotline/time.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 hotline/time.go (limited to 'hotline/time.go') diff --git a/hotline/time.go b/hotline/time.go new file mode 100644 index 0000000..3b87864 --- /dev/null +++ b/hotline/time.go @@ -0,0 +1,25 @@ +package hotline + +import ( + "encoding/binary" + "time" +) + +// toHotlineTime converts a time.Time to the 8 byte Hotline time format: +// Year (2 bytes), milliseconds (2 bytes) and seconds (4 bytes) +func toHotlineTime(t time.Time) (b []byte) { + yearBytes := make([]byte, 2) + secondBytes := make([]byte, 4) + + // Get a time.Time for January 1st 00:00 from t so we can calculate the difference in seconds from t + startOfYear := time.Date(t.Year(), time.January, 1, 0, 0, 0, 0, time.Local) + + binary.BigEndian.PutUint16(yearBytes, uint16(t.Year())) + binary.BigEndian.PutUint32(secondBytes, uint32(t.Sub(startOfYear).Seconds())) + + b = append(b, yearBytes...) + b = append(b, []byte{0, 0}...) + b = append(b, secondBytes...) + + return b +} -- cgit