Skip to content

Commit 8124289

Browse files
Daniel Pattersonbrson
authored andcommitted
---
yaml --- r: 23356 b: refs/heads/master c: 3f1f6bf h: refs/heads/master v: v3
1 parent 31884f7 commit 8124289

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 47cca22d5455d2d60226ead907fd627784701ef5
2+
refs/heads/master: 3f1f6bf9e3fc7d07adedef225e33156425a0608f
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be

trunk/src/libcore/os.rs

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export close, fclose, fsync_fd, waitpid;
3030
export env, getenv, setenv, fdopen, pipe;
3131
export getcwd, dll_filename, self_exe_path;
3232
export exe_suffix, dll_suffix, sysname, arch, family;
33-
export homedir, list_dir, list_dir_path, path_is_dir, path_exists,
33+
export homedir, tmpdir, list_dir, list_dir_path, path_is_dir, path_exists,
3434
make_absolute, make_dir, remove_dir, change_dir, remove_file,
3535
copy_file;
3636
export last_os_error;
@@ -464,6 +464,43 @@ fn homedir() -> option<Path> {
464464
}
465465
}
466466

467+
/**
468+
* Returns the path to a temporary directory, if known.
469+
*
470+
* On Unix, returns the value of the 'TMPDIR' environment variable if it is
471+
* set and non-empty and '/tmp' otherwise.
472+
*
473+
* On Windows, returns the value of, in order, the 'TMP', 'TEMP',
474+
* 'USERPROFILE' environment variable if any are set and not the empty
475+
* string. Otherwise, tmpdir returns option::none.
476+
*/
477+
fn tmpdir() -> option<Path> {
478+
return lookup();
479+
480+
fn getenv_nonempty(v: Path) -> option<Path> {
481+
match getenv(v) {
482+
some(x) =>
483+
if str::is_empty(x) {
484+
none
485+
} else {
486+
some(x)
487+
},
488+
_ => none
489+
}
490+
}
491+
492+
#[cfg(unix)]
493+
fn lookup() -> option<Path> {
494+
option::or(getenv_nonempty(~"TMPDIR"), some(~"/tmp"))
495+
}
496+
497+
#[cfg(windows)]
498+
fn lookup() -> option<Path> {
499+
option::or(getenv_nonempty(~"TMP"),
500+
option::or(getenv_nonempty(~"TEMP"),
501+
getenv_nonempty(~"USERPROFILE")))
502+
}
503+
}
467504
/// Recursively walk a directory structure
468505
fn walk_dir(p: Path, f: fn(Path) -> bool) {
469506

0 commit comments

Comments
 (0)