mirror of
https://git.planet-casio.com/Vhex-Kernel-Core/fxlibc.git
synced 2024-12-28 04:23:38 +01:00
unistd, dirent: definitions for directory functions
This commit is contained in:
parent
c2feb94710
commit
e479393a9c
6 changed files with 83 additions and 0 deletions
60
include/dirent.h
Normal file
60
include/dirent.h
Normal file
|
@ -0,0 +1,60 @@
|
|||
#ifndef __DIRENT_H__
|
||||
# define __DIRENT_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <bits/types/DIR.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#define DT_UNKNOWN 0 /* Unknown type */
|
||||
#define DT_REG 1 /* Regular file */
|
||||
#define DT_DIR 2 /* Directory */
|
||||
|
||||
/* In gint d_ino is unused; but it's required by POSIX.1. */
|
||||
struct dirent {
|
||||
/* Inode number */
|
||||
ino_t d_ino;
|
||||
/* Type, to avoid doing an additional stat() on the file */
|
||||
unsigned char d_type;
|
||||
/* NUL-terminated file name */
|
||||
char d_name[];
|
||||
};
|
||||
|
||||
/* The underlying syscall to access directory entries is getdents(2). But it
|
||||
has no unified interface and no glibc wrapper on Linux; it's basically
|
||||
hidden. So we define the API directly at the level of readdir(3). gint does
|
||||
not implement any lower-level interface and directly associates a DIR * with
|
||||
a directory file descriptor. */
|
||||
|
||||
/* Open a directory to inspect its contents. */
|
||||
extern DIR *opendir(const char *__name);
|
||||
|
||||
/* Get the directory file descriptory associated with __dp. */
|
||||
extern int dirfd(DIR *__dp);
|
||||
|
||||
/* Open a directory file descriptor to use as a directory stream. */
|
||||
extern DIR *fdopendir(int __fd);
|
||||
|
||||
/* Read an entry from an open directory. */
|
||||
extern struct dirent *readdir(DIR *__dp);
|
||||
|
||||
/* Get the current position within the directory. The particular value should
|
||||
not be interpreted; it is just suitable to use in seekdir(). */
|
||||
extern long telldir(DIR *__dp);
|
||||
|
||||
/* Seek into the directory; __pos should have been returned by telldir(). */
|
||||
extern void seekdir(DIR *__dp, long __pos);
|
||||
|
||||
/* Rewind a directory to its start. */
|
||||
extern void rewinddir(DIR *__dp);
|
||||
|
||||
/* Close an open directory. */
|
||||
extern int closedir(DIR *__dp);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*__DIRENT_H__*/
|
|
@ -23,6 +23,8 @@ extern int errno;
|
|||
#define ENOTSUP 12 /* Operation not supported. */
|
||||
#define EBADF 13 /* Invalid file descriptor. */
|
||||
#define ESPIPE 14 /* File descriptor is unable to seek. */
|
||||
#define EISDIR 15 /* File descriptor is a directory. */
|
||||
#define ENOTDIR 16 /* File descriptor is not a directory. */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ typedef int32_t pid_t;
|
|||
typedef int16_t mode_t;
|
||||
typedef uint16_t dev_t;
|
||||
typedef uint16_t umode_t;
|
||||
typedef uint32_t ino_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
12
include/target/gint/bits/types/DIR.h
Normal file
12
include/target/gint/bits/types/DIR.h
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef __BITS_TYPES_DIR_H__
|
||||
# define __BITS_TYPES_DIR_H__
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct {
|
||||
/* Associated directory descriptor */
|
||||
int fd;
|
||||
} DIR;
|
||||
|
||||
#endif /*__BITS_TYPES_DIR_H__*/
|
|
@ -35,6 +35,12 @@ extern int close(int __fd);
|
|||
/* Remove a file. */
|
||||
extern int unlink(const char *__path);
|
||||
|
||||
/* Create a directory. */
|
||||
extern int mkdir(const char *__path, mode_t __mode);
|
||||
|
||||
/* Remove an empty directory. */
|
||||
extern int rmdir(const char *__path);
|
||||
|
||||
|
||||
/* Kernel-style functions supported only by Vhex. */
|
||||
|
||||
|
|
|
@ -17,6 +17,8 @@ static char *errno_strings [] = {
|
|||
[ENOTSUP] = "Operation not supported",
|
||||
[EBADF] = "Bad file descriptor",
|
||||
[ESPIPE] = "Illegal seek",
|
||||
[EISDIR] = "Is a directory",
|
||||
[ENOTDIR] = "Not a directory",
|
||||
};
|
||||
|
||||
char *strerror(int e)
|
||||
|
|
Loading…
Reference in a new issue