os/core

sourceos/core.sx

getenv

pub extern (C) fn getenv(name: ref u8) ref u8 = trust { ... } = "getenv"

mkdir

pub extern (C) fn mkdir(path: ref u8, mode: u32) i32 = trust { ... } = "mkdir"

rmdir

pub extern (C) fn rmdir(path: ref u8) i32 = trust { ... } = "rmdir"

opendir

pub extern (C) fn opendir(path: ref u8) ref void = trust { ... } = "opendir"

closedir

pub extern (C) fn closedir(dir: ref void) i32 = trust { ... } = "closedir"

readdir

pub extern (C) fn readdir(dir: ref void) ref Dirent = trust { ... } = "readdir"

exit

pub extern (C) fn exit(code: i64) void = trust { ... } = "exit"

fopen

private
extern (C) fn fopen(path: ref u8, mode: ref u8) ref void = trust { ... } = "fopen"

fclose

private
extern (C) fn fclose(file: ref void) i32 = trust { ... } = "fclose"

fread

private
extern (C) fn fread(ptr: ref void, size: i64, nmemb: i64, file: ref void) i64 = trust { ... } = "fread"

fwrite

private
extern (C) fn fwrite(ptr: ref void, size: i64, nmemb: i64, file: ref void) i64 = trust { ... } = "fwrite"

remove

private
extern (C) fn remove(path: ref u8) i32 = trust { ... } = "remove"

rename

private
extern (C) fn rename(oldpath: ref u8, newpath: ref u8) i32 = trust { ... } = "rename"

access

private
extern (C) fn access(path: ref u8, mode: i32) i32 = trust { ... } = "access"

popen

private
extern (C) fn popen(cmd: ref u8, mode: ref u8) ref void = trust { ... } = "popen"

pclose

private
extern (C) fn pclose(pipe: ref void) i32 = trust { ... } = "pclose"

system

private
extern (C) fn system(cmd: ref u8) i32 = trust { ... } = "system"

Dirent

when linux
extern type Dirent = { d_ino: u64, d_off: i64, d_reclen: u16, d_type: u8 }

Fields

NameType
d_inou64
d_offi64
d_reclenu16
d_typeu8

Dirent

when darwin
extern type Dirent = { d_ino: u64, d_seekoff: u64, d_reclen: u16, d_namlen: u16, d_type: u8, d_name: [1024]u8 }

Fields

NameType
d_inou64
d_seekoffu64
d_reclenu16
d_namlenu16
d_typeu8
d_name[1024]u8

Dirent

when freebsd
extern type Dirent = { d_fileno: u64, d_off: i64, d_reclen: u16, d_type: u8, d_pad0: u8, d_namlen: u16, d_pad1: u16, d_name: [256]u8 }

Fields

NameType
d_filenou64
d_offi64
d_reclenu16
d_typeu8
d_pad0u8
d_namlenu16
d_pad1u16
d_name[256]u8

Dirent

when openbsd
extern type Dirent = { d_fileno: u64, d_off: i64, d_reclen: u16, d_type: u8, d_namlen: u8, d_name: [256]u8 }

Fields

NameType
d_filenou64
d_offi64
d_reclenu16
d_typeu8
d_namlenu8
d_name[256]u8

Dirent

when netbsd
extern type Dirent = { d_fileno: u64, d_reclen: u16, d_namlen: u16, d_type: u8, d_name: [512]u8 }

Fields

NameType
d_filenou64
d_reclenu16
d_namlenu16
d_typeu8
d_name[512]u8

ProcessError

pub enum ProcessError = { FailedToStart, ReadFailed }

Variants

  • FailedToStart
  • ReadFailed

env

pub fn env(var: ref u8) option[ref u8]

Get an environment variable. Returns none if not found.

exists

pub fn exists(path: ref u8) bool

Check if a file exists at the given path.

open

pub fn open(path: ref u8, mode: ref u8) option[ref void]

Open a file in the given mode ("r", "w", "a", etc.). Returns the file handle or none.

close

pub fn close(file: ref void) void = trust { ... }

Close a file handle.

read

pub fn read(file: ref void, size: i64) ref void = trust { ... }

Read up to `size` bytes from a file. Returns a heap buffer.

write

pub fn write(file: ref void, buf: ref void, size: i64) i64 = trust { ... }

Write `size` bytes from a buffer to a file.

delete

pub fn delete(path: ref u8) i32 = trust { ... }

Delete a file from the filesystem. Returns 0 on success.

rename_file

pub fn rename_file(oldpath: ref u8, newpath: ref u8) i32 = trust { ... }

Rename a file. Returns 0 on success.

is_dot_dir_entry

private
fn is_dot_dir_entry(name: ref u8) bool

ensure_dir

private
fn ensure_dir(path: ref u8) bool = trust { ... }

copy_file

pub fn copy_file(src_path: ref u8, dst_path: ref u8) bool = trust { ... }

Copy one file to another path.

copy_dir_recursive

pub fn copy_dir_recursive(src_dir: ref u8, dst_dir: ref u8) bool = trust { ... }

Recursively copy a directory tree.

bytes_equal

private
fn bytes_equal(buf: ref void, expected: ref u8, len: i64) bool

get_args

pub fn get_args() list[ref u8] = trust { ... }

Get command-line arguments as a List of strings.

run

pub fn run(cmd: ref u8) i32 = trust { ... }

Execute a command inheriting stdout/stderr (no capture). Returns exit code.

exec

pub fn exec(cmd: ref u8) result[String, ProcessError] = trust { ... }

Execute some subprocess, capturing its output.

in_path

pub fn in_path(binary: ref u8) bool = trust { ... }

Check if a binary is available in PATH.

exec_trim

pub fn exec_trim(cmd: ref u8) result[ref void, ProcessError] = trust { ... }

Execute and trim output.