github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/kbfs/libfuse/archive_reltime_file.go (about) 1 // Copyright 2018 Keybase Inc. All rights reserved. 2 // Use of this source code is governed by a BSD 3 // license that can be found in the LICENSE file. 4 // 5 //go:build !windows 6 // +build !windows 7 8 package libfuse 9 10 import ( 11 "time" 12 13 "github.com/keybase/client/go/kbfs/libfs" 14 "github.com/keybase/client/go/kbfs/tlfhandle" 15 "golang.org/x/net/context" 16 ) 17 18 // NewArchiveRelTimeFile returns a special read file that contains a 19 // by-revision directory name that corresponds to the given relative 20 // time string for the given folder. 21 func NewArchiveRelTimeFile( 22 fs *FS, handle *tlfhandle.Handle, filename string, 23 entryValid *time.Duration) *SpecialReadFile { 24 *entryValid = 0 25 return &SpecialReadFile{ 26 read: func(ctx context.Context) ([]byte, time.Time, error) { 27 data, isRel, err := libfs.FileDataFromRelativeTimeString( 28 ctx, fs.config, handle, filename) 29 if err != nil { 30 return nil, time.Time{}, err 31 } 32 if !isRel { 33 panic("ArchiveRelTimeFile should only be used with " + 34 "reltime file names") 35 } 36 return data, time.Time{}, nil 37 }, 38 } 39 }