diff options
| author | 2025-03-09 17:47:56 +0100 | |
|---|---|---|
| committer | 2025-12-01 22:08:04 +0100 | |
| commit | b1af8fd87760b34e3ff2fd3bda38f211815a0473 (patch) | |
| tree | 9317fad1a7ec298d7a8d2678e4e422953bbc6f33 /vendor/github.com/tdewolff/parse/v2/binary_unix.go | |
| parent | [chore] update URLs to forked source (diff) | |
| download | gotosocial-b1af8fd87760b34e3ff2fd3bda38f211815a0473.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 | 103 |
1 files changed, 0 insertions, 103 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 25ec83dbc..000000000 --- a/vendor/github.com/tdewolff/parse/v2/binary_unix.go +++ /dev/null @@ -1,103 +0,0 @@ -//go:build unix - -package parse - -import ( - "errors" - "fmt" - "io" - "os" - "syscall" -) - -type binaryReaderMmap struct { - data []byte - size int64 -} - -func newBinaryReaderMmap(filename string) (*binaryReaderMmap, error) { - f, err := os.Open(filename) - if err != nil { - return nil, err - } - defer f.Close() - - info, err := f.Stat() - if err != nil { - return nil, err - } else if !info.Mode().IsRegular() { - return nil, fmt.Errorf("mmap: not a regular file: %v", filename) - } - - size := info.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 %s has negative size", filename) - } else if size != int64(int(size)) { - return nil, fmt.Errorf("mmap: file %s 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, size} - //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() int64 { - return r.size -} - -func (r *binaryReaderMmap) Bytes(b []byte, n, off int64) ([]byte, error) { - var err error - if r.data == nil { - return nil, errors.New("mmap: closed") - } else if off < 0 || n < 0 { - return nil, fmt.Errorf("mmap: invalid range %d--%d", off, off+n) - } else if int64(len(r.data)) <= off { - return nil, io.EOF - } else if int64(len(r.data))-off <= n { - n = int64(len(r.data)) - off - err = io.EOF - } - - data := r.data[off : off+n : off+n] - if b == nil { - return data, err - } - copy(b, data) - return b[:len(data)], err -} - -func NewBinaryReaderMmap(filename string) (*BinaryReader, error) { - f, err := newBinaryReaderMmap(filename) - if err != nil { - return nil, err - } - return NewBinaryReader(f), nil -} |
