Skip to content

Commit 12baef1

Browse files
allisonkarlitskayacgwalters
authored andcommitted
image: substantial API cleanup/rework
Try to make the handling of directories a bit less ad-hoc. Add lots of docs. Signed-off-by: Allison Karlitskaya <[email protected]>
1 parent b3c0ae2 commit 12baef1

File tree

7 files changed

+305
-152
lines changed

7 files changed

+305
-152
lines changed

src/dumpfile.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ impl<'a, W: Write> DumpfileWriter<'a, W> {
226226
fn write_dir(&mut self, path: &mut PathBuf, dir: &Directory) -> Result<()> {
227227
// nlink is 2 + number of subdirectories
228228
// this is also true for the root dir since '..' is another self-ref
229-
let nlink = dir.entries.values().fold(2, |count, inode| {
229+
let nlink = dir.inodes().fold(2, |count, inode| {
230230
count + {
231231
match inode {
232232
Inode::Directory(..) => 1,
@@ -239,8 +239,8 @@ impl<'a, W: Write> DumpfileWriter<'a, W> {
239239
write_directory(fmt, path, &dir.stat, nlink)
240240
})?;
241241

242-
for (name, inode) in &dir.entries {
243-
path.push(name.as_ref());
242+
for (name, inode) in dir.sorted_entries() {
243+
path.push(name);
244244

245245
match inode {
246246
Inode::Directory(ref dir) => {

src/erofs/writer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@ impl<'a> InodeCollector<'a> {
485485

486486
let mut entries = vec![];
487487

488-
for (name, inode) in &dir.entries {
488+
for (name, inode) in dir.sorted_entries() {
489489
let child = match inode {
490490
image::Inode::Directory(dir) => self.collect_dir(dir, me),
491491
image::Inode::Leaf(leaf) => self.collect_leaf(leaf),

src/fs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ fn write_leaf(leaf: &Leaf, dirfd: &OwnedFd, name: &OsStr, repo: &Repository) ->
112112
}
113113

114114
fn write_directory_contents(dir: &Directory, fd: &OwnedFd, repo: &Repository) -> Result<()> {
115-
for (name, inode) in &dir.entries {
115+
for (name, inode) in dir.entries() {
116116
match inode {
117117
Inode::Directory(ref dir) => write_directory(dir, fd, name, repo),
118118
Inode::Leaf(ref leaf) => write_leaf(leaf, fd, name, repo),

0 commit comments

Comments
 (0)