Files
kaguya 9a9b91c940 user: implement mlibc as the libc, finally.
It's finally done..

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-05-02 03:31:49 -04:00

85 lines
1.8 KiB
C++

#include <mlibc/file-io.hpp>
#include <stdio_ext.h>
#include <bits/ensure.h>
#include <mlibc/debug.hpp>
size_t __fbufsize(FILE *) {
__ensure(!"Not implemented");
__builtin_unreachable();
}
size_t __fpending(FILE *file_base) {
__ensure(file_base->__dirty_end >= file_base->__dirty_begin);
return file_base->__dirty_end - file_base->__dirty_begin;
}
int __flbf(FILE *) {
__ensure(!"Not implemented");
__builtin_unreachable();
}
int __freadable(FILE *) {
__ensure(!"Not implemented");
__builtin_unreachable();
}
int __fwritable(FILE *) {
__ensure(!"Not implemented");
__builtin_unreachable();
}
int __freading(FILE *file_base) {
return file_base->__io_mode == 0;
}
int __fwriting(FILE *file_base) {
return file_base->__io_mode == 1;
}
int __fsetlocking(FILE *file_base, int state) {
auto file = static_cast<mlibc::abstract_file *>(file_base);
bool oldstate = file->_lock.uselock;
if (state != FSETLOCKING_QUERY) {
if (state == FSETLOCKING_BYCALLER) {
file->_lock.uselock = false;
} else {
file->_lock.uselock = true;
}
}
if (oldstate) {
return FSETLOCKING_INTERNAL;
} else {
return FSETLOCKING_BYCALLER;
}
}
void _flushlbf(void) {
__ensure(!"Not implemented");
__builtin_unreachable();
}
// The following functions are defined by musl.
size_t __freadahead(FILE *file_base) {
if(file_base->__io_mode != 0) {
mlibc::infoLogger() << "mlibc: __freadahead() called but file is not open for reading" << frg::endlog;
return 0;
}
return file_base->__valid_limit - file_base->__offset;
}
const char *__freadptr(FILE *, size_t *) {
__ensure(!"Not implemented");
__builtin_unreachable();
}
void __freadptrinc(FILE *, size_t) {
__ensure(!"Not implemented");
__builtin_unreachable();
}
void __fseterr(FILE *) {
__ensure(!"Not implemented");
__builtin_unreachable();
}