diff --git a/src/pxar/decoder.rs b/src/pxar/decoder.rs index e7e2713a..8ebf530b 100644 --- a/src/pxar/decoder.rs +++ b/src/pxar/decoder.rs @@ -43,19 +43,17 @@ impl Result<(), Error>> Decoder { }) } - pub fn root(&self) -> DirectoryEntry { - DirectoryEntry { + pub fn root(&mut self) -> Result { + self.seek(SeekFrom::Start(0))?; + let header: PxarHeader = self.inner.read_item()?; + check_ca_header::(&header, PXAR_ENTRY)?; + let entry: PxarEntry = self.inner.read_item()?; + Ok(DirectoryEntry { start: self.root_start, end: self.root_end, filename: OsString::new(), // Empty - entry: PxarEntry { - mode: 0, - flags: 0, - uid: 0, - gid: 0, - mtime: 0, - } - } + entry: entry, + }) } fn seek(&mut self, pos: SeekFrom) -> Result {