mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-18 08:06:32 +00:00
部分完成了readdir
This commit is contained in:
57
user/libs/libc/dirent.h
Normal file
57
user/libs/libc/dirent.h
Normal 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);
|
Reference in New Issue
Block a user