diff --git a/internal/inode/process.go b/internal/inode/process.go index 7a7da6c..2b2098c 100644 --- a/internal/inode/process.go +++ b/internal/inode/process.go @@ -11,8 +11,8 @@ import ( // //Info holds the actual Inode. Due to each inode type being a different type, it's store as an interface{} type Inode struct { - Info interface{} //Info is the parsed specific data. It's type is defined by Type. Header + Info interface{} //Info is the parsed specific data. It's type is defined by Type. } //ProcessInode tries to read an inode from the BlockReader diff --git a/writer.go b/writer.go index bd6e568..ae7fbc4 100644 --- a/writer.go +++ b/writer.go @@ -25,6 +25,7 @@ type Writer struct { uidGUIDTable []int frags []fragment superblock superblock + rootInode inode.Inode //since we need some information from the actually compressed and writen data for tables //we need to write the data FIRST, but make sure there's enough space for the tables. dataOffset int diff --git a/writer_inodes.go b/writer_inodes.go index 6e0ec50..109a586 100644 --- a/writer_inodes.go +++ b/writer_inodes.go @@ -3,6 +3,8 @@ package squashfs import ( "encoding/binary" "io" + + "github.com/CalebQ42/squashfs/internal/inode" ) func (w *Writer) countInodes() (out uint32) { @@ -13,14 +15,10 @@ func (w *Writer) countInodes() (out uint32) { return } -func (w *Writer) calculateInodeTableSize() (out int, err error) { - for _, files := range w.structure { - for i := range files { - _ = i - //set up each file's inode and add it's binary.size to out - out += binary.Size(files[i].inode) - } - } +func (w *Writer) setupInodes() (size int, err error) { + w.rootInode.Type = inode.DirType + //setup + size += binary.Size(w.rootInode) return } diff --git a/writer_write.go b/writer_write.go index 21f5d61..ecfea0a 100644 --- a/writer_write.go +++ b/writer_write.go @@ -45,7 +45,8 @@ func (w *Writer) WriteTo(write io.WriterAt) (int64, error) { } w.dataOffset = 96 //superblock size //write compression options - w.calculateInodeTableSize() + //write/calculate compressed data sizes + return 0, errors.New("i said don't") }