部分完成了readdir

This commit is contained in:
fslongjin
2022-05-27 13:41:10 +08:00
parent 156c2c2389
commit a4157bb4a7
10 changed files with 385 additions and 12 deletions

57
user/libs/libc/dirent.h Normal file
View File

@ -0,0 +1,57 @@
#pragma once
#include <libc/sys/types.h>
#define DIR_BUF_SIZE 256
/**
* @brief 文件夹结构体
*
*/
struct DIR
{
int fd;
int buf_pos;
int buf_len;
char buf[DIR_BUF_SIZE];
// todo: 加一个指向dirent结构体的指针
};
struct dirent
{
ino_t d_ino; // 文件序列号
off_t d_off; // dir偏移量
unsigned short d_reclen; // 目录下的记录数
unsigned char d_type; // entry的类型
char d_name[256]; // 文件entry的名字
};
/**
* @brief 打开文件夹
*
* @param dirname
* @return DIR*
*/
struct DIR *opendir(const char *dirname);
/**
* @brief 关闭文件夹
*
* @param dirp DIR结构体指针
* @return int 成功0 失败:-1
+--------+--------------------------------+
| errno | 描述 |
+--------+--------------------------------+
| 0 | 成功 |
| -EBADF | 当前dirp不指向一个打开了的目录 |
| -EINTR | 函数执行期间被信号打断 |
+--------+--------------------------------+
*/
int closedir(struct DIR *dirp);
/**
* @brief 从目录中读取数据
*
* @param dir
* @return struct dirent*
*/
struct dirent* reaaddir(struct DIR* dir);