Skip to content

Commit 722a1f7

Browse files
committed
---
yaml --- r: 4986 b: refs/heads/master c: 85b4253 h: refs/heads/master v: v3
1 parent 4f0b864 commit 722a1f7

File tree

7 files changed

+42
-26
lines changed

7 files changed

+42
-26
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: ccc68fc18b615561694650b25e665c257847cf67
2+
refs/heads/master: 85b4253bc1946a1e17fe7d93a80fbb5bea96ee27

trunk/src/comp/syntax/ext/env.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* interface.
66
*/
77
import std::vec;
8+
import std::istr;
89
import std::option;
910
import std::generic_os;
1011
import base::*;
@@ -26,9 +27,11 @@ fn expand_syntax_ext(cx: &ext_ctxt, sp: codemap::span, arg: @ast::expr,
2627
// option::t<str> rather than just an maybe-empty string.
2728

2829
let var = expr_to_str(cx, args[0], "#env requires a string");
29-
alt generic_os::getenv(var) {
30+
alt generic_os::getenv(istr::from_estr(var)) {
3031
option::none. { ret make_new_str(cx, sp, ""); }
31-
option::some(s) { ret make_new_str(cx, sp, s); }
32+
option::some(s) {
33+
ret make_new_str(cx, sp, istr::to_estr(s));
34+
}
3235
}
3336
}
3437

trunk/src/lib/generic_os.rs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,30 @@ import str::sbuf;
33

44
#[cfg(target_os = "linux")]
55
#[cfg(target_os = "macos")]
6-
fn getenv(n: str) -> option::t<str> {
6+
fn getenv(n: &istr) -> option::t<istr> {
7+
let n = istr::to_estr(n);
78
let s = os::libc::getenv(str::buf(n));
89
ret if s as int == 0 {
9-
option::none::<str>
10-
} else { option::some::<str>(str::str_from_cstr(s)) };
10+
option::none::<istr>
11+
} else {
12+
let s = unsafe::reinterpret_cast(s);
13+
option::some::<istr>(istr::str_from_cstr(s))
14+
};
1115
}
1216

1317
#[cfg(target_os = "linux")]
1418
#[cfg(target_os = "macos")]
15-
fn setenv(n: str, v: str) {
19+
fn setenv(n: &istr, v: &istr) {
20+
let n = istr::to_estr(n);
21+
let v = istr::to_estr(v);
1622
let nbuf = str::buf(n);
1723
let vbuf = str::buf(v);
1824
os::libc::setenv(nbuf, vbuf, 1);
1925
}
2026

2127
#[cfg(target_os = "win32")]
22-
fn getenv(n: str) -> option::t<str> {
28+
fn getenv(n: &istr) -> option::t<istr> {
29+
let n = istr::to_estr(n);
2330
let nbuf = str::buf(n);
2431
let nsize = 256u;
2532
while true {
@@ -29,14 +36,17 @@ fn getenv(n: str) -> option::t<str> {
2936
if res == 0u {
3037
ret option::none;
3138
} else if res < nsize {
32-
ret option::some(str::str_from_cstr(vbuf));
39+
let vbuf = unsafe::reinterpret_cast(vbuf);
40+
ret option::some(istr::str_from_cstr(vbuf));
3341
} else { nsize = res; }
3442
}
3543
fail;
3644
}
3745

3846
#[cfg(target_os = "win32")]
39-
fn setenv(n: str, v: str) {
47+
fn setenv(n: &istr, v: &istr) {
48+
let n = istr::to_estr(n);
49+
let v = istr::to_estr(v);
4050
let nbuf = str::buf(n);
4151
let vbuf = str::buf(v);
4252
os::kernel32::SetEnvironmentVariableA(nbuf, vbuf);

trunk/src/lib/term.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ fn reset(writer: io::buf_writer) {
4949

5050
fn color_supported() -> bool {
5151
let supported_terms = [~"xterm-color", ~"xterm", ~"screen-bce"];
52-
ret alt generic_os::getenv("TERM") {
52+
ret alt generic_os::getenv(~"TERM") {
5353
option::some(env) {
5454
for term: istr in supported_terms {
55-
if istr::eq(term, istr::from_estr(env)) { ret true; }
55+
if istr::eq(term, env) { ret true; }
5656
}
5757
false
5858
}

trunk/src/test/compiletest/procsrv.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,11 @@ fn worker(p: port<request>) {
153153
}
154154

155155
fn with_lib_path<@T>(path: &str, f: fn() -> T) -> T {
156-
let maybe_oldpath = getenv(util::lib_path_env_var());
156+
let maybe_oldpath = getenv(istr::from_estr(util::lib_path_env_var()));
157157
append_lib_path(path);
158158
let res = f();
159159
if option::is_some(maybe_oldpath) {
160-
export_lib_path(option::get(maybe_oldpath));
160+
export_lib_path(istr::to_estr(option::get(maybe_oldpath)));
161161
} else {
162162
// FIXME: This should really be unset but we don't have that yet
163163
export_lib_path("");
@@ -167,7 +167,9 @@ fn with_lib_path<@T>(path: &str, f: fn() -> T) -> T {
167167

168168
fn append_lib_path(path: &str) { export_lib_path(util::make_new_path(path)); }
169169

170-
fn export_lib_path(path: &str) { setenv(util::lib_path_env_var(), path); }
170+
fn export_lib_path(path: &str) {
171+
setenv(istr::from_estr(util::lib_path_env_var()), istr::from_estr(path));
172+
}
171173

172174
fn clone_vecstr(v: &[str]) -> [[u8]] {
173175
let r = [];

trunk/src/test/compiletest/util.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import std::option;
22
import std::generic_os::getenv;
33
import std::io;
4+
import std::istr;
45

56
import common::config;
67

78
fn make_new_path(path: &str) -> str {
89

910
// Windows just uses PATH as the library search path, so we have to
1011
// maintain the current value while adding our own
11-
alt getenv(lib_path_env_var()) {
12-
option::some(curr) { #fmt["%s:%s", path, curr] }
12+
alt getenv(istr::from_estr(lib_path_env_var())) {
13+
option::some(curr) { #fmt["%s:%s", path, istr::to_estr(curr)] }
1314
option::none. { path }
1415
}
1516
}

trunk/src/test/stdtest/os.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,26 @@ import std::option;
66
fn test_setenv() {
77
// NB: Each test of setenv needs to use different variable names or the
88
// tests will not be threadsafe
9-
setenv("NAME1", "VALUE");
10-
assert (getenv("NAME1") == option::some("VALUE"));
9+
setenv(~"NAME1", ~"VALUE");
10+
assert (getenv(~"NAME1") == option::some(~"VALUE"));
1111
}
1212

1313
#[test]
1414
fn test_setenv_overwrite() {
15-
setenv("NAME2", "1");
16-
setenv("NAME2", "2");
17-
assert (getenv("NAME2") == option::some("2"));
15+
setenv(~"NAME2", ~"1");
16+
setenv(~"NAME2", ~"2");
17+
assert (getenv(~"NAME2") == option::some(~"2"));
1818
}
1919

2020
// Windows GetEnvironmentVariable requires some extra work to make sure
2121
// the buffer the variable is copied into is the right size
2222
#[test]
2323
fn test_getenv_big() {
24-
let s = "";
24+
let s = ~"";
2525
let i = 0;
26-
while i < 100 { s += "aaaaaaaaaa"; i += 1; }
27-
setenv("NAME3", s);
28-
assert (getenv("NAME3") == option::some(s));
26+
while i < 100 { s += ~"aaaaaaaaaa"; i += 1; }
27+
setenv(~"NAME3", s);
28+
assert (getenv(~"NAME3") == option::some(s));
2929
}
3030

3131
// Local Variables:

0 commit comments

Comments
 (0)