]> git.lizzy.rs Git - rust.git/commit
std: Expand the area of std::fs
authorAlex Crichton <alex@alexcrichton.com>
Thu, 16 Apr 2015 06:21:13 +0000 (23:21 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Tue, 28 Apr 2015 00:16:44 +0000 (17:16 -0700)
commit9348700007c6ac913df97c8e9e1ab7df6f91f130
treea69d87dfe3b7e1e8c7cd9f7f48fdabdb1436c308
parentb772ce6342962792620e21623997d0d3b98164b7
std: Expand the area of std::fs

This commit is an implementation of [RFC 1044][rfc] which adds additional
surface area to the `std::fs` module. All new APIs are `#[unstable]` behind
assorted feature names for each one.

[rfc]: https://github.com/rust-lang/rfcs/pull/1044

The new APIs added are:

* `fs::canonicalize` - bindings to `realpath` on unix and
  `GetFinalPathNameByHandle` on windows.
* `fs::symlink_metadata` - similar to `lstat` on unix
* `fs::FileType` and accessor methods as `is_{file,dir,symlink}`
* `fs::Metadata::file_type` - accessor for the raw file type
* `fs::DirEntry::metadata` - acquisition of metadata which is free on Windows
  but requires a syscall on unix.
* `fs::DirEntry::file_type` - access the file type which may not require a
  syscall on most platforms.
* `fs::DirEntry::file_name` - access just the file name without leading
  components.
* `fs::PathExt::symlink_metadata` - convenience method for the top-level
  function.
* `fs::PathExt::canonicalize` - convenience method for the top-level
  function.
* `fs::PathExt::read_link` - convenience method for the top-level
  function.
* `fs::PathExt::read_dir` - convenience method for the top-level
  function.
* `std::os::raw` - type definitions for raw OS/C types available on all
  platforms.
* `std::os::$platform` - new modules have been added for all currently supported
  platforms (e.g. those more specific than just `unix`).
* `std::os::$platform::raw` - platform-specific type definitions. These modules
  are populated with the bare essentials necessary for lowing I/O types into
  their raw representations, and currently largely consist of the `stat`
  definition for unix platforms.

This commit also deprecates `Metadata::{modified, accessed}` in favor of
inspecting the raw representations via the lowering methods of `Metadata`.
48 files changed:
src/librustc/lib.rs
src/librustc/metadata/creader.rs
src/librustc/metadata/filesearch.rs
src/librustc/metadata/loader.rs
src/librustc_back/fs.rs [deleted file]
src/librustc_back/lib.rs
src/librustc_back/rpath.rs
src/librustc_trans/back/link.rs
src/libstd/fs.rs
src/libstd/os.rs [deleted file]
src/libstd/os/android/mod.rs [new file with mode: 0644]
src/libstd/os/android/raw.rs [new file with mode: 0644]
src/libstd/os/bitrig/mod.rs [new file with mode: 0644]
src/libstd/os/bitrig/raw.rs [new file with mode: 0644]
src/libstd/os/dragonfly/mod.rs [new file with mode: 0644]
src/libstd/os/dragonfly/raw.rs [new file with mode: 0644]
src/libstd/os/freebsd/mod.rs [new file with mode: 0644]
src/libstd/os/freebsd/raw.rs [new file with mode: 0644]
src/libstd/os/ios/mod.rs [new file with mode: 0644]
src/libstd/os/ios/raw.rs [new file with mode: 0644]
src/libstd/os/linux/mod.rs [new file with mode: 0644]
src/libstd/os/linux/raw.rs [new file with mode: 0644]
src/libstd/os/macos/mod.rs [new file with mode: 0644]
src/libstd/os/macos/raw.rs [new file with mode: 0644]
src/libstd/os/mod.rs [new file with mode: 0644]
src/libstd/os/nacl/mod.rs [new file with mode: 0644]
src/libstd/os/nacl/raw.rs [new file with mode: 0644]
src/libstd/os/openbsd/mod.rs [new file with mode: 0644]
src/libstd/os/openbsd/raw.rs [new file with mode: 0644]
src/libstd/os/raw.rs [new file with mode: 0644]
src/libstd/sys/unix/c.rs
src/libstd/sys/unix/ext.rs [deleted file]
src/libstd/sys/unix/ext/ffi.rs [new file with mode: 0644]
src/libstd/sys/unix/ext/fs.rs [new file with mode: 0644]
src/libstd/sys/unix/ext/io.rs [new file with mode: 0644]
src/libstd/sys/unix/ext/mod.rs [new file with mode: 0644]
src/libstd/sys/unix/ext/process.rs [new file with mode: 0644]
src/libstd/sys/unix/ext/raw.rs [new file with mode: 0644]
src/libstd/sys/unix/fs2.rs
src/libstd/sys/unix/mod.rs
src/libstd/sys/windows/ext.rs [deleted file]
src/libstd/sys/windows/ext/ffi.rs [new file with mode: 0644]
src/libstd/sys/windows/ext/fs.rs [new file with mode: 0644]
src/libstd/sys/windows/ext/io.rs [new file with mode: 0644]
src/libstd/sys/windows/ext/mod.rs [new file with mode: 0644]
src/libstd/sys/windows/ext/raw.rs [new file with mode: 0644]
src/libstd/sys/windows/fs2.rs
src/rt/rust_builtin.c