diff options
author | 2025-03-09 17:47:56 +0100 | |
---|---|---|
committer | 2025-03-10 01:59:49 +0100 | |
commit | 3ac1ee16f377d31a0fb80c8dae28b6239ac4229e (patch) | |
tree | f61faa581feaaeaba2542b9f2b8234a590684413 /vendor/github.com/tdewolff/parse/v2/binary_unix.go | |
parent | [chore] update URLs to forked source (diff) | |
download | gotosocial-3ac1ee16f377d31a0fb80c8dae28b6239ac4229e.tar.xz |
[chore] remove vendor
Diffstat (limited to 'vendor/github.com/tdewolff/parse/v2/binary_unix.go')
-rw-r--r-- | vendor/github.com/tdewolff/parse/v2/binary_unix.go | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/vendor/github.com/tdewolff/parse/v2/binary_unix.go b/vendor/github.com/tdewolff/parse/v2/binary_unix.go deleted file mode 100644 index 4a7218690..000000000 --- a/vendor/github.com/tdewolff/parse/v2/binary_unix.go +++ /dev/null @@ -1,91 +0,0 @@ -//go:build unix - -package parse - -import ( - "errors" - "fmt" - "io" - "os" - "runtime" - "syscall" -) - -type binaryReaderMmap struct { - data []byte -} - -func newBinaryReaderMmap(filename string) (*binaryReaderMmap, error) { - f, err := os.Open(filename) - if err != nil { - return nil, err - } - defer f.Close() - - fi, err := f.Stat() - if err != nil { - return nil, err - } - - size := fi.Size() - if size == 0 { - // Treat (size == 0) as a special case, avoiding the syscall, since - // "man 2 mmap" says "the length... must be greater than 0". - // - // As we do not call syscall.Mmap, there is no need to call - // runtime.SetFinalizer to enforce a balancing syscall.Munmap. - return &binaryReaderMmap{ - data: make([]byte, 0), - }, nil - } else if size < 0 { - return nil, fmt.Errorf("mmap: file %q has negative size", filename) - } else if size != int64(int(size)) { - return nil, fmt.Errorf("mmap: file %q is too large", filename) - } - - data, err := syscall.Mmap(int(f.Fd()), 0, int(size), syscall.PROT_READ, syscall.MAP_SHARED) - if err != nil { - return nil, err - } - r := &binaryReaderMmap{data} - runtime.SetFinalizer(r, (*binaryReaderMmap).Close) - return r, nil -} - -// Close closes the reader. -func (r *binaryReaderMmap) Close() error { - if r.data == nil { - return nil - } else if len(r.data) == 0 { - r.data = nil - return nil - } - data := r.data - r.data = nil - runtime.SetFinalizer(r, nil) - return syscall.Munmap(data) -} - -// Len returns the length of the underlying memory-mapped file. -func (r *binaryReaderMmap) Len() int { - return len(r.data) -} - -func (r *binaryReaderMmap) Bytes(n int, off int64) ([]byte, error) { - if r.data == nil { - return nil, errors.New("mmap: closed") - } else if off < 0 || int64(len(r.data)) < off { - return nil, fmt.Errorf("mmap: invalid offset %d", off) - } else if int64(len(r.data)-n) < off { - return r.data[off:len(r.data):len(r.data)], io.EOF - } - return r.data[off : off+int64(n) : off+int64(n)], nil -} - -func NewBinaryReader2Mmap(filename string) (*BinaryReader2, error) { - f, err := newBinaryReaderMmap(filename) - if err != nil { - return nil, err - } - return NewBinaryReader2(f), nil -} |