mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-08 04:56:58 +00:00
Merge pull request #2099 from jsternberg/master
os::list_dir to return only the contents of the directory
This commit is contained in:
commit
252086c89a
@ -434,7 +434,7 @@ fn for_each_package(c: cargo, b: fn(source, package)) {
|
||||
|
||||
// Runs all programs in directory <buildpath>
|
||||
fn run_programs(buildpath: str) {
|
||||
let newv = os::list_dir(buildpath);
|
||||
let newv = os::list_dir_path(buildpath);
|
||||
for ct: str in newv {
|
||||
run::run_program(ct, []);
|
||||
}
|
||||
@ -471,7 +471,7 @@ fn install_one_crate(c: cargo, path: str, cf: str) {
|
||||
none { ret; }
|
||||
some(bp) { bp }
|
||||
};
|
||||
let newv = os::list_dir(buildpath);
|
||||
let newv = os::list_dir_path(buildpath);
|
||||
let exec_suffix = os::exe_suffix();
|
||||
for ct: str in newv {
|
||||
if (exec_suffix != "" && str::ends_with(ct, exec_suffix)) ||
|
||||
@ -524,7 +524,7 @@ fn rustc_sysroot() -> str {
|
||||
fn install_source(c: cargo, path: str) {
|
||||
#debug("source: %s", path);
|
||||
os::change_dir(path);
|
||||
let contents = os::list_dir(".");
|
||||
let contents = os::list_dir_path(".");
|
||||
|
||||
#debug("contents: %s", str::connect(contents, ", "));
|
||||
|
||||
|
@ -127,7 +127,7 @@ fn test_opts(config: config) -> test::test_opts {
|
||||
fn make_tests(config: config) -> [test::test_desc] {
|
||||
#debug("making tests from %s", config.src_base);
|
||||
let mut tests = [];
|
||||
for file: str in os::list_dir(config.src_base) {
|
||||
for file: str in os::list_dir_path(config.src_base) {
|
||||
let file = file;
|
||||
#debug("inspecting file %s", file);
|
||||
if is_test(config, file) {
|
||||
|
@ -25,7 +25,7 @@ fn find_rust_files(&files: [str], path: str) {
|
||||
} else if os::path_is_dir(path)
|
||||
&& !contains(path, "compile-fail")
|
||||
&& !contains(path, "build") {
|
||||
for p in os::list_dir(path) {
|
||||
for p in os::list_dir_path(path) {
|
||||
find_rust_files(files, p);
|
||||
}
|
||||
}
|
||||
|
@ -29,8 +29,8 @@ export close, fclose, fsync_fd, waitpid;
|
||||
export env, getenv, setenv, fdopen, pipe;
|
||||
export getcwd, dll_filename, self_exe_path;
|
||||
export exe_suffix, dll_suffix, sysname;
|
||||
export homedir, list_dir, path_is_dir, path_exists, make_absolute,
|
||||
make_dir, remove_dir, change_dir, remove_file;
|
||||
export homedir, list_dir, list_dir_path, path_is_dir, path_exists,
|
||||
make_absolute, make_dir, remove_dir, change_dir, remove_file;
|
||||
|
||||
// FIXME: move these to str perhaps?
|
||||
export as_c_charp, fill_charp_buf;
|
||||
@ -452,26 +452,37 @@ fn list_dir(p: path) -> [str] {
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_os = "macos")]
|
||||
#[cfg(target_os = "freebsd")]
|
||||
fn star() -> str { "" }
|
||||
fn star(p: str) -> str { p }
|
||||
|
||||
#[cfg(target_os = "win32")]
|
||||
fn star() -> str { "*" }
|
||||
fn star(p: str) -> str {
|
||||
let pl = str::len(p);
|
||||
if pl == 0u || (p[pl - 1u] as char != path::consts::path_sep
|
||||
** p[pl - 1u] as char != path::consts::alt_path_sep) {
|
||||
p + path::path_sep() + "*"
|
||||
} else {
|
||||
p + "*"
|
||||
}
|
||||
}
|
||||
|
||||
rustrt::rust_list_files(star(p)).filter {|filename|
|
||||
!str::eq(filename, ".") || !str::eq(filename, "..")
|
||||
}
|
||||
}
|
||||
|
||||
#[doc = "
|
||||
Lists the contents of a directory
|
||||
|
||||
This version prepends each entry with the directory.
|
||||
"]
|
||||
fn list_dir_path(p: path) -> [str] {
|
||||
let mut p = p;
|
||||
let pl = str::len(p);
|
||||
if pl == 0u || (p[pl - 1u] as char != path::consts::path_sep
|
||||
&& p[pl - 1u] as char != path::consts::alt_path_sep) {
|
||||
p += path::path_sep();
|
||||
}
|
||||
let mut full_paths: [str] = [];
|
||||
for vec::each(rustrt::rust_list_files(p + star())) {|filename|
|
||||
if !str::eq(filename, ".") {
|
||||
if !str::eq(filename, "..") {
|
||||
full_paths += [p + filename];
|
||||
}
|
||||
}
|
||||
}
|
||||
ret full_paths;
|
||||
os::list_dir(p).map {|f| p + f}
|
||||
}
|
||||
|
||||
#[doc = "Removes a directory at the specified path"]
|
||||
@ -750,4 +761,4 @@ mod tests {
|
||||
assert (!os::path_exists("test/nonexistent-bogus-path"));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ fn mk_filesearch(maybe_sysroot: option<path>,
|
||||
fn search<T: copy>(filesearch: filesearch, pick: pick<T>) -> option<T> {
|
||||
for lib_search_path in filesearch.lib_search_paths() {
|
||||
#debug("searching %s", lib_search_path);
|
||||
for path in os::list_dir(lib_search_path) {
|
||||
for path in os::list_dir_path(lib_search_path) {
|
||||
#debug("testing %s", path);
|
||||
let maybe_picked = pick(path);
|
||||
if option::is_some(maybe_picked) {
|
||||
|
Loading…
Reference in New Issue
Block a user