system/Open: add OpenWriteOnly(), OpenDirectory()

This commit is contained in:
Max Kellermann 2019-02-19 12:16:41 +01:00
parent 5965f62b56
commit db144a43ad
2 changed files with 48 additions and 0 deletions

View File

@ -43,6 +43,30 @@ OpenReadOnly(const char *path)
return fd;
}
UniqueFileDescriptor
OpenWriteOnly(const char *path, int flags)
{
UniqueFileDescriptor fd;
if (!fd.Open(path, O_WRONLY|flags))
throw FormatErrno("Failed to open '%s'", path);
return fd;
}
#ifndef _WIN32
UniqueFileDescriptor
OpenDirectory(const char *path, int flags)
{
UniqueFileDescriptor fd;
if (!fd.Open(path, O_DIRECTORY|O_RDONLY|flags))
throw FormatErrno("Failed to open '%s'", path);
return fd;
}
#endif
#ifdef __linux__
UniqueFileDescriptor
@ -75,6 +99,16 @@ OpenReadOnly(FileDescriptor directory, const char *name, int flags)
return fd;
}
UniqueFileDescriptor
OpenWriteOnly(FileDescriptor directory, const char *name, int flags)
{
UniqueFileDescriptor fd;
if (!fd.Open(directory, name, O_WRONLY|flags))
throw FormatErrno("Failed to open '%s'", name);
return fd;
}
UniqueFileDescriptor
OpenDirectory(FileDescriptor directory, const char *name, int flags)
{

View File

@ -36,6 +36,17 @@ class UniqueFileDescriptor;
UniqueFileDescriptor
OpenReadOnly(const char *path);
UniqueFileDescriptor
OpenWriteOnly(const char *path, int flags=0);
#ifndef _WIN32
UniqueFileDescriptor
OpenDirectory(const char *name, int flags=0);
#endif
#ifdef __linux__
UniqueFileDescriptor
@ -47,6 +58,9 @@ OpenPath(FileDescriptor directory, const char *name, int flags=0);
UniqueFileDescriptor
OpenReadOnly(FileDescriptor directory, const char *name, int flags=0);
UniqueFileDescriptor
OpenWriteOnly(FileDescriptor directory, const char *name, int flags=0);
UniqueFileDescriptor
OpenDirectory(FileDescriptor directory, const char *name, int flags=0);