diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-08-24 23:34:10 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-08-27 15:54:43 -0700 |
| commit | 85b4253bc1946a1e17fe7d93a80fbb5bea96ee27 (patch) | |
| tree | e1aa363c428ed3e9a1f7dd18a1b31b51bc9f72aa /src/lib | |
| parent | ccc68fc18b615561694650b25e665c257847cf67 (diff) | |
| download | rust-85b4253bc1946a1e17fe7d93a80fbb5bea96ee27.tar.gz rust-85b4253bc1946a1e17fe7d93a80fbb5bea96ee27.zip | |
Convert std::generic_os to istrs. Issue #855
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/generic_os.rs | 24 | ||||
| -rw-r--r-- | src/lib/term.rs | 4 |
2 files changed, 19 insertions, 9 deletions
diff --git a/src/lib/generic_os.rs b/src/lib/generic_os.rs index 80bc7747b47..38662e6f95e 100644 --- a/src/lib/generic_os.rs +++ b/src/lib/generic_os.rs @@ -3,23 +3,30 @@ import str::sbuf; #[cfg(target_os = "linux")] #[cfg(target_os = "macos")] -fn getenv(n: str) -> option::t<str> { +fn getenv(n: &istr) -> option::t<istr> { + let n = istr::to_estr(n); let s = os::libc::getenv(str::buf(n)); ret if s as int == 0 { - option::none::<str> - } else { option::some::<str>(str::str_from_cstr(s)) }; + option::none::<istr> + } else { + let s = unsafe::reinterpret_cast(s); + option::some::<istr>(istr::str_from_cstr(s)) + }; } #[cfg(target_os = "linux")] #[cfg(target_os = "macos")] -fn setenv(n: str, v: str) { +fn setenv(n: &istr, v: &istr) { + let n = istr::to_estr(n); + let v = istr::to_estr(v); let nbuf = str::buf(n); let vbuf = str::buf(v); os::libc::setenv(nbuf, vbuf, 1); } #[cfg(target_os = "win32")] -fn getenv(n: str) -> option::t<str> { +fn getenv(n: &istr) -> option::t<istr> { + let n = istr::to_estr(n); let nbuf = str::buf(n); let nsize = 256u; while true { @@ -29,14 +36,17 @@ fn getenv(n: str) -> option::t<str> { if res == 0u { ret option::none; } else if res < nsize { - ret option::some(str::str_from_cstr(vbuf)); + let vbuf = unsafe::reinterpret_cast(vbuf); + ret option::some(istr::str_from_cstr(vbuf)); } else { nsize = res; } } fail; } #[cfg(target_os = "win32")] -fn setenv(n: str, v: str) { +fn setenv(n: &istr, v: &istr) { + let n = istr::to_estr(n); + let v = istr::to_estr(v); let nbuf = str::buf(n); let vbuf = str::buf(v); os::kernel32::SetEnvironmentVariableA(nbuf, vbuf); diff --git a/src/lib/term.rs b/src/lib/term.rs index 4e553a4d3df..cd5b1122a59 100644 --- a/src/lib/term.rs +++ b/src/lib/term.rs @@ -49,10 +49,10 @@ fn reset(writer: io::buf_writer) { fn color_supported() -> bool { let supported_terms = [~"xterm-color", ~"xterm", ~"screen-bce"]; - ret alt generic_os::getenv("TERM") { + ret alt generic_os::getenv(~"TERM") { option::some(env) { for term: istr in supported_terms { - if istr::eq(term, istr::from_estr(env)) { ret true; } + if istr::eq(term, env) { ret true; } } false } |
