about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-08-24 23:34:10 -0700
committerBrian Anderson <banderson@mozilla.com>2011-08-27 15:54:43 -0700
commit85b4253bc1946a1e17fe7d93a80fbb5bea96ee27 (patch)
treee1aa363c428ed3e9a1f7dd18a1b31b51bc9f72aa /src/lib
parentccc68fc18b615561694650b25e665c257847cf67 (diff)
downloadrust-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.rs24
-rw-r--r--src/lib/term.rs4
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
           }