mufs: embed struct mufs_dtree in struct mufs_dentry and clean up code

tags/0.1.0
S.J.R. van Schaik 7 years ago
parent 0bc9c6fc7a
commit 89ec3a94c0
  1. 21
      source/fs/mufs/dir.c
  2. 8
      source/fs/mufs/dir.h

@ -1,3 +1,4 @@
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
@ -216,21 +217,15 @@ static size_t read_dirent(struct mufs *fs, struct mufs_tree *tree,
dirent->tree.fs = fs;
dirent->tree.va = dirent->tree.va << dev->log2_block_size;
/* TODO: get a proper offset to the tree. */
dirent->tree.va += 1;
dirent->tree.va += offsetof(struct mufs_dentry, tree);
dirent->tree.va += base & ((UINT32_C(1) << dev->log2_block_size) - 1);
dirent->tree.file_size = entry.file_size;
dirent->tree.root = entry.root;
dirent->tree.depth = entry.depth;
dirent->tree.file_size = entry.tree.file_size;
dirent->tree.root = entry.tree.root;
dirent->tree.depth = entry.tree.depth;
return ret;
}
struct mufs_dtree {
uint32_t file_size;
uint32_t root;
uint8_t depth;
} __attribute__((packed));
static size_t write_dirent(struct mufs_tree *tree,
uint32_t va, struct mufs_dirent *dirent)
{
@ -238,9 +233,9 @@ static size_t write_dirent(struct mufs_tree *tree,
struct mufs_dentry entry;
entry.type = dirent->type;
entry.file_size = dirent->tree.file_size;
entry.root = dirent->tree.root;
entry.depth = dirent->tree.depth;
entry.tree.file_size = dirent->tree.file_size;
entry.tree.root = dirent->tree.root;
entry.tree.depth = dirent->tree.depth;
entry.path_len = strlen(dirent->path);
if (mufs_write(tree, dirent->path, va + sizeof entry,

@ -1,10 +1,14 @@
#pragma once
struct mufs_dentry {
uint8_t type;
struct mufs_dtree {
uint32_t file_size;
uint32_t root;
uint8_t depth;
} __attribute__((packed));
struct mufs_dentry {
uint8_t type;
struct mufs_dtree tree;
uint16_t path_len;
} __attribute__((packed));

Loading…
Cancel
Save