]> Sergey Matveev's repositories - godlighty.git/blobdiff - mtime.go
Use mtime instead of ctime
[godlighty.git] / mtime.go
similarity index 75%
rename from ctime.go
rename to mtime.go
index 72047e6a4cf67a5d5a8bf86c6a37e3ff086c149f..35afa482946cbaf52b049807e757087d53d19914 100644 (file)
--- a/ctime.go
+++ b/mtime.go
@@ -19,19 +19,17 @@ import (
        "encoding/base64"
        "encoding/binary"
        "os"
-
-       "golang.org/x/sys/unix"
 )
 
-func ctimeETag(fd *os.File) (string, error) {
-       var stat unix.Stat_t
-       err := unix.Fstat(int(fd.Fd()), &stat)
+func mtimeETag(fd *os.File) (string, error) {
+       fi, err := fd.Stat()
        if err != nil {
                return "", err
        }
-       sec, nsec := stat.Ctim.Unix()
-       buf := make([]byte, 8*2)
-       binary.BigEndian.PutUint64(buf[:8], uint64(sec))
-       binary.BigEndian.PutUint64(buf[8:], uint64(nsec))
+       mtime := fi.ModTime()
+       buf := make([]byte, 8*3)
+       binary.BigEndian.PutUint64(buf[:8], uint64(fi.Size()))
+       binary.BigEndian.PutUint64(buf[8:16], uint64(mtime.Unix()))
+       binary.BigEndian.PutUint64(buf[16:], uint64(mtime.Nanosecond()))
        return `"` + base64.RawURLEncoding.EncodeToString(buf) + `"`, nil
 }