Back to

Package embedbin

Latest Go to latest
Published: Jun 24, 2020 | License: Apache-2.0 | Module:


Package Files


var (
	// ErrNoSuchFile is returned when the embedbin does not contain an
	// embedded file with the requested name.
	ErrNoSuchFile = errors.New("embedded file does not exist")
	// ErrCorruptedImage is returned when the embedbin image has been
	// corrupted.
	ErrCorruptedImage = errors.New("corrupted embedbin image")

func Sniff

func Sniff(r io.ReaderAt, size int64) (offset int64, err error)

Sniff sniffs a binary's embedbin offset. Sniff returns errors returned by the provided reader, or ErrCorruptedImage if the binary is identified as an embedbin image with a checksum mismatch.

type Info

type Info struct {
	Name string
	Size int64

Info provides information for an embedded file.

func (Info) String

func (info Info) String() string

type Reader

type Reader struct {
	// contains filtered or unexported fields

Reader reads images from an embedbin.

func NewReader

func NewReader(r io.ReaderAt, embedOffset, totalSize int64) (*Reader, error)

NewReader returns a new embedbin reader from the provided reader.

func OpenFile

func OpenFile(r io.ReaderAt, size int64) (*Reader, error)

OpenFile parses the provided ReaderAt with the provided size. The file's contents are parsed to determine the offset of the embedbin's archive. OpenFile returns an error if the file is not an embedbin.

func Self

func Self() (*Reader, error)

Self reads the currently executing binary image as an embedbin and returns a reader to it.

func (*Reader) List

func (r *Reader) List() []Info

List returns information about embedded files.

func (*Reader) Open

func (r *Reader) Open(name string) (io.ReadCloser, error)

Open returns a ReadCloser for the named embedded file. Open returns ErrNoSuchImage if the embedbin does not contain the file.

func (*Reader) OpenBase

func (r *Reader) OpenBase() (io.ReadCloser, error)

Open returns a ReadCloser for the original executable, without appended embedded files.

func (*Reader) Stat

func (r *Reader) Stat(name string) (info Info, ok bool)

Stat returns the information for the named embedded file. It returns a boolean indicating whether the requested file was found.

func (*Reader) StatBase

func (r *Reader) StatBase() Info

StatBase returns the information for the base image.

type WriteOpt

type WriteOpt func(*Writer)

WriteOpt is an option to NewWriter.

var Deflate WriteOpt = func(w *Writer) {
	w.embedMethod = zip.Deflate

Deflate compresses embedded files.

type Writer

type Writer struct {
	// contains filtered or unexported fields

Writer is used to append embedbin files to an existing binary.

func NewFileWriter

func NewFileWriter(file *os.File) (*Writer, error)

NewFileWriter returns a writer that can be used to append embedbin files to the binary represented by the provided file. NewFileWriter removes any existing embedbin files that may be attached to the binary. It relies on content sniffing (see Sniff) to determine its offset.

func NewWriter

func NewWriter(w io.Writer, embedOffset int64, opts ...WriteOpt) *Writer

NewWriter returns a writer that may be used to append embedbin files to the writer w. The writer should be positioned at the end of the base binary image.

func (*Writer) Close

func (w *Writer) Close() error

Close should be called after all embedded files have been written. No more files can be written after a call to Close.

func (*Writer) Create

func (w *Writer) Create(name string) (io.Writer, error)

Create returns a Writer into which the named file should be written. The image's contents must be written before the next call to Create or Close.

func (*Writer) Flush

func (w *Writer) Flush() error

Flush flushes the unwritten data to the underlying file.

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier