Documentation ¶
Index ¶
- Constants
- Variables
- type DirEntry
- type ExtractionOptions
- type FS
- func (f FS) ExtractSymlink(folder string) error
- func (f FS) ExtractTo(folder string) error
- func (f FS) ExtractWithOptions(folder string, op ExtractionOptions) error
- func (f FS) Glob(pattern string) (out []string, err error)
- func (f FS) Open(name string) (fs.File, error)
- func (f FS) ReadDir(name string) ([]fs.DirEntry, error)
- func (f FS) ReadFile(name string) ([]byte, error)
- func (f FS) Stat(name string) (fs.FileInfo, error)
- func (f FS) Sub(dir string) (fs.FS, error)
- type File
- func (f *File) Close() error
- func (f File) ExtractSymlink(folder string) error
- func (f File) ExtractTo(folder string) error
- func (f File) ExtractWithOptions(folder string, op ExtractionOptions) error
- func (f File) FS() (*FS, error)
- func (f File) GetSymlinkFile() *File
- func (f File) IsDir() bool
- func (f File) IsRegular() bool
- func (f File) IsSymlink() bool
- func (f File) Read(p []byte) (int, error)
- func (f File) ReadDir(n int) ([]fs.DirEntry, error)
- func (f File) Stat() (fs.FileInfo, error)
- func (f File) SymlinkPath() string
- func (f File) WriteTo(w io.Writer) (int64, error)
- type FileInfo
- type Reader
- type SuperblockFlags
- type Writer
- func (w *Writer) AddFile(file *os.File) error
- func (w *Writer) AddFileTo(filepath string, file *os.File) error
- func (w *Writer) AddFileToFolder(folder string, file *os.File) error
- func (w *Writer) AddFolderTo(folderpath string, permission fs.FileMode) error
- func (w *Writer) AddReaderTo(filepath string, reader io.Reader, size uint64) error
- func (w *Writer) Contains(filepath string) bool
- func (w *Writer) FixSymlinks() (errs []error, problems bool)
- func (w *Writer) Remove(filepath string) bool
- func (w *Writer) WriteTo(write io.WriterAt) (int64, error)
- func (w *Writer) WriteToFilename(filepath string) error
Constants ¶
const ( GzipCompression = 1 + iota LzmaCompression LzoCompression XzCompression Lz4Compression ZstdCompression )
The types of compression supported by squashfs.
Variables ¶
var DefaultFlags = SuperblockFlags{ RemoveDuplicates: true, Exportable: true, }
DefaultFlags are the default SuperblockFlags that are used.
var ( //ErrOptions is returned when compression options that I haven't tested is set. When this is returned, the Reader is also returned. ErrOptions = errors.New("possibly incompatible compressor options") )
Functions ¶
This section is empty.
Types ¶
type DirEntry ¶
type DirEntry struct {
// contains filtered or unexported fields
}
DirEntry is a child of a directory.
type ExtractionOptions ¶
type ExtractionOptions struct { DereferenceSymlink bool //Replace symlinks with the target file UnbreakSymlink bool //Try to make sure symlinks remain unbroken when extracted, without changing the symlink Verbose bool //Prints extra info to log on an error FolderPerm fs.FileMode //The permissions used when creating the extraction folder // contains filtered or unexported fields }
ExtractionOptions are available options on how to extract.
func DefaultOptions ¶
func DefaultOptions() ExtractionOptions
DefaultOptions is the default ExtractionOptions.
type FS ¶
type FS struct {
// contains filtered or unexported fields
}
FS is a fs.FS representation of a squashfs directory. Implements fs.GlobFS, fs.ReadDirFS, fs.ReadFileFS, fs.StatFS, and fs.SubFS
func (FS) ExtractSymlink ¶
ExtractSymlink extracts the File to the folder with the DereferenceSymlink option. It extracts the directory's contents to the folder.
func (FS) ExtractTo ¶
ExtractTo extracts the File to the given folder with the default options. It extracts the directory's contents to the folder.
func (FS) ExtractWithOptions ¶
func (f FS) ExtractWithOptions(folder string, op ExtractionOptions) error
ExtractWithOptions extracts the File to the given folder with the given ExtrationOptions. It extracts the directory's contents to the folder.
func (FS) Glob ¶
Glob returns the name of the files at the given pattern. All paths are relative to the FS.
func (FS) ReadDir ¶
ReadDir returns all the DirEntry returns all DirEntry's for the directory at name. If name is not a directory, returns an error.
type File ¶
type File struct {
// contains filtered or unexported fields
}
File represents a file inside a squashfs archive.
func (File) ExtractSymlink ¶
ExtractSymlink extracts the File to the folder with the DereferenceSymlink option. If the File is a directory, it instead extracts the directory's contents to the folder.
func (File) ExtractTo ¶
ExtractTo extracts the File to the given folder with the default options. If the File is a directory, it instead extracts the directory's contents to the folder.
func (File) ExtractWithOptions ¶
func (f File) ExtractWithOptions(folder string, op ExtractionOptions) error
ExtractWithOptions extracts the File to the given folder with the given ExtrationOptions. If the File is a directory, it instead extracts the directory's contents to the folder.
func (File) GetSymlinkFile ¶
GetSymlinkFile returns the File the symlink is pointing to. If not a symlink, or the target is unobtainable (such as it being outside the archive or it's absolute) returns nil
func (File) ReadDir ¶
ReadDir returns n fs.DirEntry's that's contained in the File (if it's a directory). If n <= 0 all fs.DirEntry's are returned.
func (File) SymlinkPath ¶
SymlinkPath returns the symlink's target path. Is the File isn't a symlink, returns an empty string.
type FileInfo ¶
type FileInfo struct {
// contains filtered or unexported fields
}
FileInfo is a fs.FileInfo for a file.
func (FileInfo) File ¶
File creates a File from the FileInfo. *File satisfies fs.File and fs.ReadDirFile.
type Reader ¶
type Reader struct { FS // contains filtered or unexported fields }
Reader processes and reads a squashfs archive.
func NewSquashfsReader ¶
NewSquashfsReader returns a new squashfs.Reader from an io.ReaderAt
type SuperblockFlags ¶
type SuperblockFlags struct { //If true, inodes are stored uncompressed. UncompressedInodes bool //If true, data is stored uncompressed. UncompressedData bool //If true, fragments are stored uncompressed. UncompressedFragments bool //If true, ALL data is stored in sequential data blocks instead of utilizing fragments. NoFragments bool //If true, the last block of data will always be stored as a fragment if it's less then the block size. AlwaysFragment bool //If true, duplicate files are only stored once. (Currently unsupported) RemoveDuplicates bool //If true, the export table is populated. (Currently unsupported) Exportable bool //If true, the xattr table is uncompressed. (Currently unsupported) UncompressedXattr bool //If true, the xattr table is not populated. (Currently unsupported) NoXattr bool //If true, the UID/GID table is stored uncompressed. UncompressedIDs bool // contains filtered or unexported fields }
SuperblockFlags is the series of flags describing how a squashfs archive is packed.
func (*SuperblockFlags) ToUint ¶
func (s *SuperblockFlags) ToUint() uint16
ToUint returns the uint16 representation of the given SuperblockFlags
type Writer ¶
type Writer struct { //BlockSize is how large the data blocks are. Can be between 4096 (4KB) and 1048576 (1 MB). //If BlockSize is not inside that range, it will be set to within the range before writing. //Default is 1048576. BlockSize uint32 //Flags are the SuperblockFlags used when writing the archive. //Currently Duplicates, Exportable, UncompressedXattr, NoXattr values are ignored Flags SuperblockFlags // contains filtered or unexported fields }
Writer is used to creaste squashfs archives. Currently unusable. TODO: Make usable
func NewWriter ¶
NewWriter creates a new with the default options (Gzip compression and allow errors)
func NewWriterWithOptions ¶
NewWriterWithOptions creates a new squashfs.Writer with the given options. compressionType can be of any types, except LZO (which this library doesn't have support for yet) allowErrors determines, when adding folders, if it allows errors encountered with it's sub-directories and instead just logs the errors.
func (*Writer) AddFileTo ¶
AddFileTo adds the given file to the squashfs archive at the given filepath.
func (*Writer) AddFileToFolder ¶
AddFileToFolder adds the given file to the squashfs archive, placing it inside the given folder.
func (*Writer) AddFolderTo ¶
AddFolderTo adds a folder at the given path. IF the folder is already present, it sets the folder's permissions. If the path points to a non-folder (such as a file or symlink), an error is returned
func (*Writer) AddReaderTo ¶
AddReaderTo adds the data from the given reader to the archive as a file located at the given filepath. Data from the reader is not read until the squashfs archive is writen. If the given reader implements io.Closer, it will be closed after it is fully read.
func (*Writer) FixSymlinks ¶
FixSymlinks will scan through the squashfs archive and try to find broken symlinks and fix them. This done by replacing the symlink with the target file and then pointing other symlinks to that file. If all symlinks can be resolved, the error slice will be nil, and the bool false, otherwise all errors occured will be in the slice.
func (*Writer) Remove ¶
Remove tries to remove the file(s) at the given filepath. If wildcards are used, it will remove all files that match. Returns true if one or more files are removed.
func (*Writer) WriteTo ¶
WriteTo attempts to write the archive to the given io.WriterAt.
Not working. Yet.
func (*Writer) WriteToFilename ¶
WriteToFilename creates the squashfs archive with the given filepath.