#ifndef _KERNEL_FS_TARFS_H #define _KERNEL_FS_TARFS_H #include #include #include #include #include #include #include struct tar_header { char filename[100]; uint8_t mode[8]; uint8_t uid[8]; uint8_t gid[8]; uint8_t size[12]; uint8_t mtime[12]; uint8_t checksum[8]; uint8_t type_flag; } PACKED; struct tar_file { struct tar_header* header; uint8_t* content; size_t size; }; #define TARFS_FILES_MAX 128 struct tarfs { struct tar_file tarfs_files[TARFS_FILES_MAX]; uint8_t* buffer; }; struct vfs_volume; DEFINE_VFS_MOUNT (tarfs_mount); DEFINE_VFS_FORMAT (tarfs_format); DEFINE_VFS_DESCRIBE (tarfs_describe); DEFINE_VFS_READ_FILE (tarfs_read_file); DEFINE_VFS_WRITE_FILE (tarfs_write_file); DEFINE_VFS_READ_DIR_ENTRY (tarfs_read_dir_entry); DEFINE_VFS_CREATE_FILE (tarfs_create_file); DEFINE_VFS_CREATE_DIR (tarfs_create_dir); DEFINE_VFS_REMOVE (tarfs_remove); #endif // _KERNEL_FS_TARFS_H