Skip to content

Commit d9cd00b

Browse files
Elly Jonesbrson
authored andcommitted
---
yaml --- r: 6440 b: refs/heads/master c: 9dd4789 h: refs/heads/master v: v3
1 parent a4b3205 commit d9cd00b

File tree

8 files changed

+54
-2
lines changed

8 files changed

+54
-2
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: d468af59ede45140fa531992829b30ecd9d57cc1
2+
refs/heads/master: 9dd4789d80b1313bb39daa8c8973e63a60b07b94

trunk/src/lib/fs.rs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ fn file_is_dir(p: path) -> bool {
119119
/*
120120
Function: make_dir
121121
122-
Creates a directory at the specific path.
122+
Creates a directory at the specified path.
123123
*/
124124
fn make_dir(p: path, mode: int) -> bool {
125125
ret mkdir(p, mode);
@@ -157,6 +157,26 @@ fn list_dir(p: path) -> [str] {
157157
ret full_paths;
158158
}
159159

160+
/*
161+
Function: remove_dir
162+
163+
Removes a directory at the specified path.
164+
*/
165+
fn remove_dir(p: path) -> bool {
166+
ret rmdir(p);
167+
168+
#[cfg(target_os = "win32")]
169+
fn rmdir(_p: path) -> bool {
170+
ret str::as_buf(_p, {|buf| os::kernel32::RemoveDirectory(buf)});
171+
}
172+
173+
#[cfg(target_os = "linux")]
174+
#[cfg(target_os = "macos")]
175+
fn rmdir(_p: path) -> bool {
176+
ret str::as_buf(_p, {|buf| os::libc::rmdir(buf) == 0 });
177+
}
178+
}
179+
160180
/*
161181
Function: path_is_absolute
162182

trunk/src/lib/linux_os.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ native mod libc {
5252
fn waitpid(pid: pid_t, &status: c_int, options: c_int) -> pid_t;
5353
fn readlink(path: str::sbuf, buf: str::sbuf, bufsize: size_t) -> ssize_t;
5454
fn mkdir(path: str::sbuf, mode: int) -> int;
55+
fn rmdir(path: str::sbuf) -> int;
5556
}
5657

5758
mod libc_constants {

trunk/src/lib/macos_os.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ native mod libc {
4545
fn pipe(buf: *mutable int) -> int;
4646
fn waitpid(pid: int, &status: int, options: int) -> int;
4747
fn mkdir(s: str::sbuf, mode: int) -> int;
48+
fn rmdir(s: str::sbuf) -> int;
4849
}
4950

5051
mod libc_constants {

trunk/src/lib/win32_os.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ native mod kernel32 {
5454
nSize: DWORD) -> DWORD;
5555
fn CreateDirectory(lpPathName: LPCTSTR,
5656
lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> bool;
57+
fn RemoveDirectory(lpPathName: LPCTSTR) -> bool;
5758
}
5859

5960
// FIXME turn into constants

trunk/src/test/stdtest/rand.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// -*- rust -*-
44
use std;
55
import std::rand;
6+
import std::str;
67

78
#[test]
89
fn test() {
@@ -27,3 +28,13 @@ fn test() {
2728
log r1.next();
2829
log r1.next();
2930
}
31+
32+
#[test]
33+
fn genstr() {
34+
let r: rand::rng = rand::mk_rng();
35+
log r.gen_str(10u);
36+
log r.gen_str(10u);
37+
log r.gen_str(10u);
38+
assert(str::char_len(r.gen_str(10u)) == 10u);
39+
assert(str::char_len(r.gen_str(16u)) == 16u);
40+
}

trunk/src/test/stdtest/stdtest.rc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ mod sort;
3333
mod str;
3434
mod sys;
3535
mod task;
36+
mod tempfile;
3637
mod test;
3738
mod tri;
3839
mod treemap;

trunk/src/test/stdtest/tempfile.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
use std;
2+
import std::fs;
3+
import std::option::some;
4+
import std::str;
5+
import std::tempfile;
6+
7+
#[test]
8+
fn mkdtemp() {
9+
let r = tempfile::mkdtemp("./", "foobar");
10+
alt r {
11+
some(p) {
12+
fs::remove_dir(p);
13+
assert(str::ends_with(p, "foobar"));
14+
}
15+
_ { assert(false); }
16+
}
17+
}

0 commit comments

Comments
 (0)