Rename squashfs/squashfs to squashfs/low

squashfs/low library name is now squashfslow
This commit is contained in:
Caleb Gardner
2023-12-27 23:25:49 -06:00
parent 17d45eea50
commit bfba5d5b60
21 changed files with 49 additions and 49 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
A PURE Go library to read squashfs. There is currently no plans to add archive creation support as it will almost always be better to just call `mksquashfs`. I could see some possible use cases, but probably won't spend time on it unless it's requested (open a discussion if you want this feature).
The library has two parts with this `github.com/CalebQ42/squashfs` being easy to use as it implements `io/fs` interfaces and doesn't expose unnecessary information. 95% this is the library you want. If you need lower level access to the information, use `github.com/CalebQ42/squashfs/squashfs` where far more information is exposed.
The library has two parts with this `github.com/CalebQ42/squashfs` being easy to use as it implements `io/fs` interfaces and doesn't expose unnecessary information. 95% this is the library you want. If you need lower level access to the information, use `github.com/CalebQ42/squashfs/low` where far more information is exposed.
Currently has support for reading squashfs files and extracting files and folders.
+14 -14
View File
@@ -12,14 +12,14 @@ import (
"strconv"
"github.com/CalebQ42/squashfs/internal/routinemanager"
"github.com/CalebQ42/squashfs/squashfs"
"github.com/CalebQ42/squashfs/squashfs/data"
"github.com/CalebQ42/squashfs/squashfs/inode"
squashfslow "github.com/CalebQ42/squashfs/low"
"github.com/CalebQ42/squashfs/low/data"
"github.com/CalebQ42/squashfs/low/inode"
)
// File represents a file inside a squashfs archive.
type File struct {
b *squashfs.Base
b *squashfslow.Base
full *data.FullReader
rdr *data.Reader
parent *FS
@@ -28,7 +28,7 @@ type File struct {
}
// Creates a new *File from the given *squashfs.Base
func (r *Reader) FileFromBase(b *squashfs.Base, parent *FS) *File {
func (r *Reader) FileFromBase(b *squashfslow.Base, parent *FS) *File {
return &File{
b: b,
parent: parent,
@@ -40,7 +40,7 @@ func (f *File) FS() (*FS, error) {
if !f.IsDir() {
return nil, errors.New("not a directory")
}
d, err := f.b.ToDir(f.r.r)
d, err := f.b.ToDir(f.r.Low)
if err != nil {
return nil, err
}
@@ -114,7 +114,7 @@ func (f *File) ReadDir(n int) ([]fs.DirEntry, error) {
if !f.IsDir() {
return nil, errors.New("file is not a directory")
}
d, err := f.b.ToDir(f.r.r)
d, err := f.b.ToDir(f.r.Low)
if err != nil {
return nil, err
}
@@ -173,7 +173,7 @@ func (f *File) WriteTo(w io.Writer) (int64, error) {
func (f *File) initializeReaders() error {
var err error
f.rdr, f.full, err = f.b.GetRegFileReaders(f.r.r)
f.rdr, f.full, err = f.b.GetRegFileReaders(f.r.Low)
return err
}
@@ -218,7 +218,7 @@ func (f *File) ExtractWithOptions(path string, op *ExtractionOptions) error {
}
switch f.b.Inode.Type {
case inode.Dir, inode.EDir:
d, err := f.b.ToDir(f.r.r)
d, err := f.b.ToDir(f.r.Low)
if err != nil {
if op.Verbose {
log.Println("Failed to create squashfs.Directory for", path)
@@ -227,14 +227,14 @@ func (f *File) ExtractWithOptions(path string, op *ExtractionOptions) error {
}
errChan := make(chan error, len(d.Entries))
for i := range d.Entries {
b, err := f.r.r.BaseFromEntry(d.Entries[i])
b, err := f.r.Low.BaseFromEntry(d.Entries[i])
if err != nil {
if op.Verbose {
log.Println("Failed to get squashfs.Base from entry for", path)
}
return errors.Join(errors.New("failed to get base from entry: "+path), err)
}
go func(b *squashfs.Base, path string) {
go func(b *squashfslow.Base, path string) {
i := op.manager.Lock()
if b.IsDir() {
extDir := filepath.Join(path, b.Name)
@@ -285,7 +285,7 @@ func (f *File) ExtractWithOptions(path string, op *ExtractionOptions) error {
return errors.Join(errors.New("failed to create file: "+path), err)
}
defer outFil.Close()
full, err := f.b.GetFullReader(f.r.r)
full, err := f.b.GetFullReader(f.r.Low)
if err != nil {
if op.Verbose {
log.Println("Failed to create full reader for", path)
@@ -406,7 +406,7 @@ func (f *File) ExtractWithOptions(path string, op *ExtractionOptions) error {
if op.IgnorePerm {
return nil
}
uid, err := f.b.Uid(f.r.r)
uid, err := f.b.Uid(f.r.Low)
if err != nil {
if op.Verbose {
log.Println("Failed to get uid for", path)
@@ -414,7 +414,7 @@ func (f *File) ExtractWithOptions(path string, op *ExtractionOptions) error {
}
return nil
}
gid, err := f.b.Gid(f.r.r)
gid, err := f.b.Gid(f.r.Low)
if err != nil {
if op.Verbose {
log.Println("Failed to get gid for", path)
+3 -3
View File
@@ -4,8 +4,8 @@ import (
"io/fs"
"time"
"github.com/CalebQ42/squashfs/squashfs/directory"
"github.com/CalebQ42/squashfs/squashfs/inode"
"github.com/CalebQ42/squashfs/low/directory"
"github.com/CalebQ42/squashfs/low/inode"
)
type fileInfo struct {
@@ -17,7 +17,7 @@ type fileInfo struct {
}
func (r Reader) newFileInfo(e directory.Entry) (fileInfo, error) {
i, err := r.r.InodeFromEntry(e)
i, err := r.Low.InodeFromEntry(e)
if err != nil {
return fileInfo{}, err
}
+6 -6
View File
@@ -8,20 +8,20 @@ import (
"slices"
"strings"
"github.com/CalebQ42/squashfs/squashfs"
"github.com/CalebQ42/squashfs/squashfs/directory"
squashfslow "github.com/CalebQ42/squashfs/low"
"github.com/CalebQ42/squashfs/low/directory"
)
// FS is a fs.FS representation of a squashfs directory.
// Implements fs.GlobFS, fs.ReadDirFS, fs.ReadFileFS, fs.StatFS, and fs.SubFS
type FS struct {
d *squashfs.Directory
d *squashfslow.Directory
r *Reader
parent *FS
}
// Creates a new *FS from the given squashfs.directory
func (r *Reader) FSFromDirectory(d *squashfs.Directory, parent *FS) *FS {
func (r *Reader) FSFromDirectory(d *squashfslow.Directory, parent *FS) *FS {
return &FS{
d: d,
r: r,
@@ -124,7 +124,7 @@ func (f *FS) Open(name string) (fs.File, error) {
Err: fs.ErrNotExist,
}
}
b, err := f.r.r.BaseFromEntry(f.d.Entries[i])
b, err := f.r.Low.BaseFromEntry(f.d.Entries[i])
if err != nil {
return nil, err
}
@@ -142,7 +142,7 @@ func (f *FS) Open(name string) (fs.File, error) {
Err: fs.ErrNotExist,
}
}
d, err := b.ToDir(f.r.r)
d, err := b.ToDir(f.r.Low)
if err != nil {
return nil, err
}
+4 -4
View File
@@ -1,4 +1,4 @@
package squashfs
package squashfslow
import (
"errors"
@@ -6,9 +6,9 @@ import (
"github.com/CalebQ42/squashfs/internal/metadata"
"github.com/CalebQ42/squashfs/internal/toreader"
"github.com/CalebQ42/squashfs/squashfs/data"
"github.com/CalebQ42/squashfs/squashfs/directory"
"github.com/CalebQ42/squashfs/squashfs/inode"
"github.com/CalebQ42/squashfs/low/data"
"github.com/CalebQ42/squashfs/low/directory"
"github.com/CalebQ42/squashfs/low/inode"
)
type Base struct {
+3 -3
View File
@@ -1,4 +1,4 @@
package squashfs
package squashfslow
import (
"errors"
@@ -9,8 +9,8 @@ import (
"github.com/CalebQ42/squashfs/internal/metadata"
"github.com/CalebQ42/squashfs/internal/toreader"
"github.com/CalebQ42/squashfs/squashfs/directory"
"github.com/CalebQ42/squashfs/squashfs/inode"
"github.com/CalebQ42/squashfs/low/directory"
"github.com/CalebQ42/squashfs/low/inode"
)
type Directory struct {
+1 -1
View File
@@ -1,4 +1,4 @@
package squashfs
package squashfslow
type fragEntry struct {
Start uint64
+3 -3
View File
@@ -1,10 +1,10 @@
package squashfs
package squashfslow
import (
"github.com/CalebQ42/squashfs/internal/metadata"
"github.com/CalebQ42/squashfs/internal/toreader"
"github.com/CalebQ42/squashfs/squashfs/directory"
"github.com/CalebQ42/squashfs/squashfs/inode"
"github.com/CalebQ42/squashfs/low/directory"
"github.com/CalebQ42/squashfs/low/inode"
)
func (r *Reader) InodeFromRef(ref uint64) (*inode.Inode, error) {
+2 -2
View File
@@ -1,4 +1,4 @@
package squashfs
package squashfslow
import (
"encoding/binary"
@@ -9,7 +9,7 @@ import (
"github.com/CalebQ42/squashfs/internal/decompress"
"github.com/CalebQ42/squashfs/internal/metadata"
"github.com/CalebQ42/squashfs/internal/toreader"
"github.com/CalebQ42/squashfs/squashfs/inode"
"github.com/CalebQ42/squashfs/low/inode"
)
// The types of compression supported by squashfs
@@ -1,4 +1,4 @@
package squashfs_test
package squashfslow_test
import (
"fmt"
@@ -9,7 +9,7 @@ import (
"path/filepath"
"testing"
"github.com/CalebQ42/squashfs/squashfs"
squashfslow "github.com/CalebQ42/squashfs/low"
)
const (
@@ -57,7 +57,7 @@ func TestReader(t *testing.T) {
t.Fatal(err)
}
defer fil.Close()
rdr, err := squashfs.NewReader(fil)
rdr, err := squashfslow.NewReader(fil)
if err != nil {
t.Fatal(err)
}
@@ -77,7 +77,7 @@ func TestSingleFile(t *testing.T) {
t.Fatal(err)
}
defer fil.Close()
rdr, err := squashfs.NewReader(fil)
rdr, err := squashfslow.NewReader(fil)
if err != nil {
t.Fatal(err)
}
@@ -92,7 +92,7 @@ func TestSingleFile(t *testing.T) {
t.Fatal(err)
}
func extractToDir(rdr *squashfs.Reader, b *squashfs.Base, folder string) error {
func extractToDir(rdr *squashfslow.Reader, b *squashfslow.Base, folder string) error {
path := filepath.Join(folder, b.Name)
if b.IsDir() {
d, err := b.ToDir(rdr)
@@ -103,7 +103,7 @@ func extractToDir(rdr *squashfs.Reader, b *squashfs.Base, folder string) error {
if err != nil {
return err
}
var nestBast *squashfs.Base
var nestBast *squashfslow.Base
for _, e := range d.Entries {
nestBast, err = rdr.BaseFromEntry(e)
if err != nil {
+1 -1
View File
@@ -1,4 +1,4 @@
package squashfs
package squashfslow
import "math"
+5 -5
View File
@@ -4,21 +4,21 @@ import (
"io"
"time"
"github.com/CalebQ42/squashfs/squashfs"
squashfslow "github.com/CalebQ42/squashfs/low"
)
type Reader struct {
*FS
r *squashfs.Reader
Low *squashfslow.Reader
}
func NewReader(r io.ReaderAt) (*Reader, error) {
rdr, err := squashfs.NewReader(r)
rdr, err := squashfslow.NewReader(r)
if err != nil {
return nil, err
}
out := &Reader{
r: rdr,
Low: rdr,
}
out.FS = &FS{
d: rdr.Root,
@@ -28,5 +28,5 @@ func NewReader(r io.ReaderAt) (*Reader, error) {
}
func (r *Reader) ModTime() time.Time {
return time.Unix(int64(r.r.Superblock.ModTime), 0)
return time.Unix(int64(r.Low.Superblock.ModTime), 0)
}