acid/firmware2/src/ffi/inout/mod.rs

101 lines
2 KiB
Rust
Raw Normal View History

2026-01-05 04:16:08 +01:00
//! This would've been called `io`, but rust-analyzer refuses to see
//! the submodules of this module when it's named `io`.
2026-01-06 22:52:41 +01:00
#![allow(unused_variables)]
use core::ffi::{VaList, c_char, c_int, c_long, c_size_t, c_void};
2026-01-05 04:16:08 +01:00
use log::info;
2026-01-06 22:52:41 +01:00
use crate::ffi::inout::file::{FILE, STDERR, STDOUT};
2026-01-05 04:16:08 +01:00
2026-01-06 22:52:41 +01:00
pub mod dir;
pub mod file;
2026-01-05 04:16:08 +01:00
// File management
#[unsafe(no_mangle)]
2026-01-06 22:52:41 +01:00
pub unsafe extern "C" fn __xkbc_fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE {
2026-01-05 04:16:08 +01:00
todo!()
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn __xkbc_fclose(file: *mut FILE) -> c_int {
todo!()
}
#[unsafe(no_mangle)]
2026-01-06 22:52:41 +01:00
pub unsafe extern "C" fn __xkbc_fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int {
2026-01-05 04:16:08 +01:00
todo!()
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn __xkbc_ftell(stream: *mut FILE) -> c_long {
todo!()
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn __xkbc_fread(
ptr: *mut c_void,
size: c_size_t,
nobj: c_size_t,
stream: *mut FILE,
) -> c_size_t {
todo!()
}
// Printing
#[unsafe(no_mangle)]
pub unsafe extern "C" fn __xkbc_fprintf(
stream: *mut FILE,
format: *const c_char,
mut args: ...
) -> c_int {
unsafe { __xkbc_vfprintf(stream, format, args.as_va_list()) }
}
#[unsafe(no_mangle)]
2026-01-06 22:52:41 +01:00
pub unsafe extern "C" fn __xkbc_vfprintf(
stream: *mut FILE,
format: *const c_char,
ap: VaList,
) -> c_int {
2026-01-05 04:16:08 +01:00
if stream == STDOUT || stream == STDERR {
let string = ::alloc::format!("vfprintf({:?}, {:?}, {:?})", stream, format, ap);
info!("{}", string);
string.len() as c_int
} else {
-1
}
}
#[unsafe(no_mangle)]
2026-01-06 22:52:41 +01:00
pub unsafe extern "C" fn __xkbc_vasprintf(
strp: *mut *mut c_char,
fmt: *const c_char,
ap: VaList,
) -> c_int {
2026-01-05 04:16:08 +01:00
todo!()
}
#[unsafe(no_mangle)]
2026-01-06 22:52:41 +01:00
pub unsafe extern "C" fn __xkbc_vsnprintf(
string: *mut c_char,
size: c_size_t,
format: *const c_char,
ap: VaList,
) -> c_int {
2026-01-05 04:16:08 +01:00
todo!()
}
#[unsafe(no_mangle)]
pub unsafe extern "C" fn __xkbc_snprintf(
s: *mut c_char,
n: c_size_t,
format: *const c_char,
...
) -> c_int {
todo!()
}