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.

Freeze TMPBUF_SZ

uint

Struct Pipe

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

Function args

fn args() -> ~[~str]

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

The return value of the function can be changed by invoking the os::set_args function.

Function as_c_charp

fn as_c_charp<T>(s: &str, f: &fn(*c_char) -> T) -> T

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 change_dir_locked

fn change_dir_locked(p: &Path, action: &fn()) -> bool

Changes the current working directory to the specified path while acquiring a global lock, then calls action. If the change is successful, releases the lock and restores the CWD to what it was before, returning true. Returns false if the directory doesn't exist or if the directory change is otherwise unsuccessful.

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 glob

fn glob(pattern: &str) -> ~[Path]

Returns a vector of Path objects that match the given glob pattern

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 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 real_args

fn real_args() -> ~[~str]

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 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_args

fn set_args(new_args: ~[~str])

For the current task, overrides the task-local cache of the arguments this program had when it started. These new arguments are only available to the current task via the os::args method.

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 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