Higher-level interfaces to libc::* functions and operating system services.

In general these take and return rust types, use rust idioms (enums, closures, vectors) rather than C idioms, and do more extensive safety checks.

This module is not meant to only contain 1:1 mappings to libc entries; any os-interface code that is reasonably useful and broadly applicable can go here. Including utility routines that merely build on other os code.

We assume the general case is that users do not care, and do not want to be made to care, which operating system they are on. While they may want to special case various special cases -- and so we will not hide the facts of which OS the user is on -- they should be given the opportunity to write OS-ignorant code by default.

Static TMPBUF_SZ

uint

Enum MapError

Variants

Enum MapOption

Variants

Enum MemoryMapKind

Variants

Struct MemoryMap

pub struct MemoryMap {
    data: *mut u8,
    len: size_t,
    kind: MemoryMapKind,
}

Struct Pipe

pub struct Pipe {
    input: c_int,
    out: c_int,
}

Implementation of to_str::ToStr for MapError

Method to_str

fn to_str(&self) -> ~str

Implementation for MemoryMap

Method new

fn new(min_len: uint, options: ~[MapOption]) -> Result<~MemoryMap, MapError>

Method granularity

fn granularity() -> uint

Implementation of Drop for MemoryMap

Method drop

fn drop(&self)

Function args

fn args() -> ~[~str]

Returns the arguments which this program was started with (normally passed via the command line).

Function change_dir

fn change_dir(p: &Path) -> bool

Changes the current working directory to the specified path, returning whether the change was completed successfully or not.

Function close

fn close(fd: c_int) -> c_int

Delegates to the libc close() function, returning the same return value.

Function copy_file

fn copy_file(from: &Path, to: &Path) -> bool

Copies a file from one location to another

Function dll_filename

fn dll_filename(base: &str) -> ~str

Returns the proper dll filename for the given basename of a file.

Function env

fn env() -> ~[(~str, ~str)]

Returns a vector of (variable, value) pairs for all the environment variables of the current process.

Function errno

fn errno() -> int

Returns the platform-specific value of errno

Function fdopen

fn fdopen(fd: c_int) -> *FILE

Function fill_charp_buf

fn fill_charp_buf(f: &fn(*mut c_char, size_t) -> bool) -> Option<~str>

Function fsync_fd

fn fsync_fd(fd: c_int, level: io::fsync::Level) -> c_int

Function getcwd

fn getcwd() -> Path

Function getenv

fn getenv(n: &str) -> Option<~str>

Fetches the environment variable n from the current process, returning None if the variable isn't set.

Function homedir

fn homedir() -> Option<Path>

Returns the path to the user's home directory, if known.

On Unix, returns the value of the 'HOME' environment variable if it is set and not equal to the empty string.

On Windows, returns the value of the 'HOME' environment variable if it is set and not equal to the empty string. Otherwise, returns the value of the 'USERPROFILE' environment variable if it is set and not equal to the empty string.

Otherwise, homedir returns option::none.

Function last_os_error

fn last_os_error() -> ~str

Get a string representing the platform-dependent last error

Function list_dir

fn list_dir(p: &Path) -> ~[~str]

Lists the contents of a directory

Function list_dir_path

fn list_dir_path(p: &Path) -> ~[Path]

Lists the contents of a directory

This version prepends each entry with the directory.

Function make_absolute

fn make_absolute(p: &Path) -> Path

Convert a relative path to an absolute path

If the given path is relative, return it prepended with the current working directory. If the given path is already an absolute path, return it as is.

Function make_dir

fn make_dir(p: &Path, mode: c_int) -> bool

Creates a directory at the specified path

Function mkdir_recursive

fn mkdir_recursive(p: &Path, mode: c_int) -> bool

Creates a directory with a given mode. Returns true iff creation succeeded. Also creates all intermediate subdirectories if they don't already exist, giving all of them the same mode.

Function page_size

fn page_size() -> uint

Function path_exists

fn path_exists(p: &Path) -> bool

Indicates whether a path exists

Function path_is_dir

fn path_is_dir(p: &Path) -> bool

Indicates whether a path represents a directory

Function pipe

fn pipe() -> Pipe

Function remove_dir

fn remove_dir(p: &Path) -> bool

Removes a directory at the specified path

Function remove_dir_recursive

fn remove_dir_recursive(p: &Path) -> bool

Removes a directory at the specified path, after removing all its contents. Use carefully!

Function remove_file

fn remove_file(p: &Path) -> bool

Deletes an existing file

Function rename_file

fn rename_file(old: &Path, new: &Path) -> bool

Renames an existing file or directory

Function self_exe_path

fn self_exe_path() -> Option<Path>

Optionally returns the filesystem path to the current executable which is running. If any failure occurs, None is returned.

Function set_exit_status

fn set_exit_status(code: int)

Sets the process exit code

Sets the exit code returned by the process if all supervised tasks terminate successfully (without failing). If the current root task fails and is supervised by the scheduler then any user-specified exit status is ignored and the process exits with the default failure status

Function setenv

fn setenv(n: &str, v: &str)

Sets the environment variable n to the value v for the currently running process

Function tmpdir

fn tmpdir() -> Path

Returns the path to a temporary directory.

On Unix, returns the value of the 'TMPDIR' environment variable if it is set and non-empty and '/tmp' otherwise. On Android, there is no global temporary folder (it is usually allocated per-app), hence returns '/data/tmp' which is commonly used.

On Windows, returns the value of, in order, the 'TMP', 'TEMP', 'USERPROFILE' environment variable if any are set and not the empty string. Otherwise, tmpdir returns the path to the Windows directory.

Function unsetenv

fn unsetenv(n: &str)

Remove a variable from the environment entirely

Function walk_dir

fn walk_dir(p: &Path, f: &fn(&Path) -> bool) -> bool

Recursively walk a directory structure