Implemented open() and openat() on Horizon

This commit is contained in:
2022-01-06 11:37:23 +00:00
parent 27933e1a79
commit 7f04b67582
2 changed files with 27 additions and 13 deletions

View File

@@ -2,6 +2,30 @@
#include <errno.h>
#include <mio/fs.h>
int open(const char *pathname, int flags, ...)
{
int ret = mio_open(pathname, flags);
if (ret < 0) {
__set_errno(-ret);
return -1;
}
__set_errno(0);
return ret;
}
int openat(int dirfd, const char *pathname, int flags, ...)
{
int ret = mio_openat(dirfd, pathname, flags);
if (ret < 0) {
__set_errno(-ret);
return -1;
}
__set_errno(0);
return ret;
}
ssize_t read(int fd, void *buf, size_t count)
{
ssize_t ret = mio_read(fd, buf, count);
@@ -26,18 +50,6 @@ ssize_t write(int fd, const void *buf, size_t count)
return ret;
}
int open(const char *pathname, int flags)
{
int ret = mio_open(pathname, flags);
if (ret < 0) {
__set_errno(-ret);
return -1;
}
__set_errno(0);
return ret;
}
int close(int fd)
{
int ret = mio_close(fd);

View File

@@ -9,9 +9,11 @@
struct stat;
struct pollfd;
extern int open(const char *pathname, int flags, ...);
extern int openat(int dirfd, const char *pathname, int flags, ...);
extern ssize_t read(int fd, void *buf, size_t count);
extern ssize_t write(int fd, const void *buf, size_t count);
extern int open(const char *pathname, int flags);
extern int close(int fd);
#endif