diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-06-12 23:17:49 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-06-15 13:38:25 +0200 |
commit | 89cdef0859259fdea0165b0d3918777d1ed42955 (patch) | |
tree | 1773321fd7d1c718b89fe0face92c9c7cdafc2f4 /lib/io/src/unix | |
parent | 043495538ebaf02adba6d40764fb3e6def65cb09 (diff) |
libsquashfs: Add sqfs_open_native_file function
Having a function to interpret the flags and open a native file handle
simplifies the istream/ostream/file code which shares that decoding
part, particularly on windows where the character set needs to be
transformed.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/io/src/unix')
-rw-r--r-- | lib/io/src/unix/istream.c | 5 | ||||
-rw-r--r-- | lib/io/src/unix/ostream.c | 9 |
2 files changed, 6 insertions, 8 deletions
diff --git a/lib/io/src/unix/istream.c b/lib/io/src/unix/istream.c index 39d570f..ca9a183 100644 --- a/lib/io/src/unix/istream.c +++ b/lib/io/src/unix/istream.c @@ -144,11 +144,10 @@ fail_free: sqfs_istream_t *istream_open_file(const char *path) { + sqfs_file_handle_t fd; sqfs_istream_t *out; - int fd; - fd = open(path, O_RDONLY); - if (fd < 0) { + if (sqfs_open_native_file(&fd, path, SQFS_FILE_OPEN_READ_ONLY)) { perror(path); return NULL; } diff --git a/lib/io/src/unix/ostream.c b/lib/io/src/unix/ostream.c index 0e95167..52a566a 100644 --- a/lib/io/src/unix/ostream.c +++ b/lib/io/src/unix/ostream.c @@ -177,13 +177,12 @@ fail_free: sqfs_ostream_t *ostream_open_file(const char *path, int flags) { + sqfs_file_handle_t fd; sqfs_ostream_t *out; - int fd; - if (flags & SQFS_FILE_OPEN_OVERWRITE) { - fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - } else { - fd = open(path, O_WRONLY | O_CREAT | O_EXCL, 0644); + if (sqfs_open_native_file(&fd, path, flags)) { + perror(path); + return NULL; } out = ostream_open_handle(path, fd, flags); |