1#include "include/pw.h"
2#include "include/pwlib/file.h"
3
4#include <libpussy/alignment.h>
5
6[[nodiscard]] bool _pw_file_open(PwValuePtr file_name, int flags, mode_t mode, PwValuePtr result)
7{
8 PwBufferedFileCtorArgs args = {
9 .type_id = PwTypeId_BufferedFile,
10 .read_bufsize = sys_page_size(),
11 .write_bufsize = sys_page_size()
12 };
13 if (!pw_create2(PwTypeId_BufferedFile, &args, result)) {
14 return false;
15 }
16 return pw_call(File, open, result, file_name, flags, mode);
17}
18
19[[nodiscard]] bool pw_file_from_fd(int fd, bool take_ownership, PwValuePtr result)
20{
21 PwBufferedFileCtorArgs args = {
22 .type_id = PwTypeId_BufferedFile,
23 .read_bufsize = sys_page_size(),
24 .write_bufsize = sys_page_size()
25 };
26 if (!pw_create2(PwTypeId_BufferedFile, &args, result)) {
27 return false;
28 }
29 return pw_call(Fd, set_fd, result, fd, take_ownership);
30}