Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

os::list_dir to return only the contents of the directory #2099

Merged
merged 1 commit into from

2 participants

@jsternberg

Fixes issue #1919. I don't know what to name the convenience function.

@jsternberg jsternberg Fixing issue 1919. list_dir is the more general version that returns …
…a vector with the contents of the directory. list_dir_path contains the old behavior (as a convenience function).
3a0477c
@brson brson merged commit 252086c into rust-lang:master
@brson
Owner

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Apr 1, 2012
  1. @jsternberg

    Fixing issue 1919. list_dir is the more general version that returns …

    jsternberg authored
    …a vector with the contents of the directory. list_dir_path contains the old behavior (as a convenience function).
This page is out of date. Refresh to see the latest.
View
6 src/cargo/cargo.rs
@@ -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, ", "));
View
2  src/compiletest/compiletest.rs
@@ -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) {
View
2  src/fuzzer/fuzzer.rs
@@ -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);
}
}
View
39 src/libcore/os.rs
@@ -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"));
}
-}
+}
View
2  src/rustc/util/filesearch.rs
@@ -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) {
Something went wrong with that request. Please try again.