Working filesystem.
[pintos-anon] / src / filesys / directory.h
diff --git a/src/filesys/directory.h b/src/filesys/directory.h
new file mode 100644 (file)
index 0000000..fe7f333
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef HEADER_DIRECTORY_H
+#define HEADER_DIRECTORY_H 1
+
+#include <stdbool.h>
+#include <stddef.h>
+#include "disk.h"
+
+/* Maximum length of a filename.
+   This is the traditional UNIX maximum. */
+#define FILENAME_LEN_MAX 14
+
+struct dir_entry 
+  {
+    bool in_use;
+    char name[FILENAME_LEN_MAX + 1];
+    disk_sector_no filehdr_sector;
+  };
+
+struct dir 
+  {
+    size_t entry_cnt;
+    struct dir_entry *entries;
+  };
+
+struct file;
+bool dir_init (struct dir *, size_t entry_cnt);
+void dir_destroy (struct dir *);
+void dir_read (struct dir *, struct file *);
+void dir_write (struct dir *, struct file *);
+bool dir_lookup (const struct dir *, const char *name, disk_sector_no *);
+bool dir_add (struct dir *, const char *name, disk_sector_no);
+bool dir_remove (struct dir *, const char *name);
+void dir_list (const struct dir *);
+void dir_print (const struct dir *);
+
+#endif /* directory.h */