diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-09-08 18:49:54 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-09-08 18:49:54 +0200 |
commit | d5e2c6a3146c20354ab11f1dae48ab755996fa96 (patch) | |
tree | 02b766305a0636fb81dbb2f18320cae2fa0d828e /lib/sqfs/src/io/unix.c | |
parent | 4955f80f2fdc6ffeda77e0d569e9a010642772d2 (diff) |
libsqfs: bring sqfs_file_t in line with stream API
Rename the open function to sqfs_file_open, use an argument for the
return pointer and pass back and error number on failure. Also add
an inermediate function to open an sqfs_file_t using a handle, similar
to the stream API. The get_file_size function is moved to the native
wrappers and some of the implementation is cleaned up a little.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/sqfs/src/io/unix.c')
-rw-r--r-- | lib/sqfs/src/io/unix.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/sqfs/src/io/unix.c b/lib/sqfs/src/io/unix.c index 2e97394..cac8e55 100644 --- a/lib/sqfs/src/io/unix.c +++ b/lib/sqfs/src/io/unix.c @@ -10,6 +10,7 @@ #include "sqfs/io.h" #include "sqfs/error.h" +#include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> @@ -85,3 +86,16 @@ int sqfs_native_file_seek(sqfs_file_handle_t fd, return 0; } + +int sqfs_native_file_get_size(sqfs_file_handle_t hnd, sqfs_u64 *out) +{ + struct stat sb; + + if (fstat(hnd, &sb)) { + *out = 0; + return SQFS_ERROR_IO; + } + + *out = sb.st_size; + return 0; +} |