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}