Commit db144a43 authored by Max Kellermann's avatar Max Kellermann

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

parent 5965f62b
...@@ -43,6 +43,30 @@ OpenReadOnly(const char *path) ...@@ -43,6 +43,30 @@ OpenReadOnly(const char *path)
return fd; 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__ #ifdef __linux__
UniqueFileDescriptor UniqueFileDescriptor
...@@ -76,6 +100,16 @@ OpenReadOnly(FileDescriptor directory, const char *name, int flags) ...@@ -76,6 +100,16 @@ OpenReadOnly(FileDescriptor directory, const char *name, int flags)
} }
UniqueFileDescriptor 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) OpenDirectory(FileDescriptor directory, const char *name, int flags)
{ {
UniqueFileDescriptor fd; UniqueFileDescriptor fd;
......
...@@ -36,6 +36,17 @@ class UniqueFileDescriptor; ...@@ -36,6 +36,17 @@ class UniqueFileDescriptor;
UniqueFileDescriptor UniqueFileDescriptor
OpenReadOnly(const char *path); 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__ #ifdef __linux__
UniqueFileDescriptor UniqueFileDescriptor
...@@ -48,6 +59,9 @@ UniqueFileDescriptor ...@@ -48,6 +59,9 @@ UniqueFileDescriptor
OpenReadOnly(FileDescriptor directory, const char *name, int flags=0); OpenReadOnly(FileDescriptor directory, const char *name, int flags=0);
UniqueFileDescriptor UniqueFileDescriptor
OpenWriteOnly(FileDescriptor directory, const char *name, int flags=0);
UniqueFileDescriptor
OpenDirectory(FileDescriptor directory, const char *name, int flags=0); OpenDirectory(FileDescriptor directory, const char *name, int flags=0);
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment