std: Rename io to old_io

In preparation for the I/O rejuvination of the standard library, this commit
renames the current `io` module to `old_io` in order to make room for the new
I/O modules. It is expected that the I/O RFCs will land incrementally over time
instead of all at once, and this provides a fresh clean path for new modules to
enter into as well as guaranteeing that all old infrastructure will remain in
place for some time.

As each `old_io` module is replaced it will be deprecated in-place for new
structures in `std::{io, fs, net}` (as appropriate).

This commit does *not* leave a reexport of `old_io as io` as the deprecation
lint does not currently warn on this form of use. This is quite a large breaking
change for all imports in existing code, but all functionality is retained
precisely as-is and path statements simply need to be renamed from `io` to
`old_io`.

[breaking-change]
This commit is contained in:
Alex Crichton 2015-01-22 16:27:48 -08:00
parent 8ec3a833d5
commit f72b164510
21 changed files with 311 additions and 291 deletions

View File

@ -79,7 +79,8 @@
//! memory types, including [`atomic`](sync/atomic/index.html).
//!
//! Common types of I/O, including files, TCP, UDP, pipes, Unix domain sockets,
//! timers, and process spawning, are defined in the [`io`](io/index.html) module.
//! timers, and process spawning, are defined in the
//! [`old_io`](old_io/index.html) module.
//!
//! Rust's I/O and concurrency depends on a small runtime interface
//! that lives, along with its support code, in mod [`rt`](rt/index.html).
@ -239,7 +240,7 @@ pub mod thread_local;
pub mod dynamic_lib;
pub mod ffi;
pub mod fmt;
pub mod io;
pub mod old_io;
pub mod os;
pub mod path;
pub mod rand;
@ -284,7 +285,7 @@ mod std {
pub use sync; // used for select!()
pub use error; // used for try!()
pub use fmt; // used for any formatting strings
pub use io; // used for println!()
pub use old_io; // used for println!()
pub use option; // used for bitflags!{}
pub use rt; // used for panic!()
pub use vec; // used for vec![]

View File

@ -14,7 +14,7 @@
use cmp;
use fmt;
use io::{Reader, Writer, Stream, Buffer, DEFAULT_BUF_SIZE, IoResult};
use old_io::{Reader, Writer, Stream, Buffer, DEFAULT_BUF_SIZE, IoResult};
use iter::{IteratorExt, ExactSizeIterator, repeat};
use ops::Drop;
use option::Option;
@ -34,7 +34,7 @@ use vec::Vec;
/// # Example
///
/// ```rust
/// use std::io::{BufferedReader, File};
/// use std::old_io::{BufferedReader, File};
///
/// let file = File::open(&Path::new("message.txt"));
/// let mut reader = BufferedReader::new(file);
@ -137,7 +137,7 @@ impl<R: Reader> Reader for BufferedReader<R> {
/// # Example
///
/// ```rust
/// use std::io::{BufferedWriter, File};
/// use std::old_io::{BufferedWriter, File};
///
/// let file = File::create(&Path::new("message.txt")).unwrap();
/// let mut writer = BufferedWriter::new(file);
@ -324,7 +324,7 @@ impl<W: Reader> Reader for InternalBufferedWriter<W> {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::{BufferedStream, File};
/// use std::old_io::{BufferedStream, File};
///
/// let file = File::open(&Path::new("message.txt"));
/// let mut stream = BufferedStream::new(file);
@ -437,13 +437,13 @@ mod test {
pub struct NullStream;
impl Reader for NullStream {
fn read(&mut self, _: &mut [u8]) -> io::IoResult<uint> {
Err(io::standard_error(io::EndOfFile))
fn read(&mut self, _: &mut [u8]) -> old_io::IoResult<uint> {
Err(old_io::standard_error(old_io::EndOfFile))
}
}
impl Writer for NullStream {
fn write(&mut self, _: &[u8]) -> io::IoResult<()> { Ok(()) }
fn write(&mut self, _: &[u8]) -> old_io::IoResult<()> { Ok(()) }
}
/// A dummy reader intended at testing short-reads propagation.
@ -452,9 +452,9 @@ mod test {
}
impl Reader for ShortReader {
fn read(&mut self, _: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, _: &mut [u8]) -> old_io::IoResult<uint> {
if self.lengths.is_empty() {
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
} else {
Ok(self.lengths.remove(0))
}
@ -555,13 +555,13 @@ mod test {
fn test_buffered_stream() {
struct S;
impl io::Writer for S {
fn write(&mut self, _: &[u8]) -> io::IoResult<()> { Ok(()) }
impl old_io::Writer for S {
fn write(&mut self, _: &[u8]) -> old_io::IoResult<()> { Ok(()) }
}
impl io::Reader for S {
fn read(&mut self, _: &mut [u8]) -> io::IoResult<uint> {
Err(io::standard_error(io::EndOfFile))
impl old_io::Reader for S {
fn read(&mut self, _: &mut [u8]) -> old_io::IoResult<uint> {
Err(old_io::standard_error(old_io::EndOfFile))
}
}
@ -664,7 +664,7 @@ mod test {
impl Writer for FailFlushWriter {
fn write(&mut self, _buf: &[u8]) -> IoResult<()> { Ok(()) }
fn flush(&mut self) -> IoResult<()> { Err(io::standard_error(EndOfFile)) }
fn flush(&mut self) -> IoResult<()> { Err(old_io::standard_error(EndOfFile)) }
}
let writer = FailFlushWriter;

View File

@ -11,7 +11,7 @@
use clone::Clone;
use cmp;
use sync::mpsc::{Sender, Receiver};
use io;
use old_io;
use option::Option::{None, Some};
use result::Result::{Ok, Err};
use slice::{bytes, SliceExt};
@ -24,7 +24,7 @@ use vec::Vec;
///
/// ```
/// use std::sync::mpsc::channel;
/// use std::io::ChanReader;
/// use std::old_io::ChanReader;
///
/// let (tx, rx) = channel();
/// # drop(tx);
@ -70,7 +70,7 @@ impl Buffer for ChanReader {
}
}
if self.closed {
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
} else {
Ok(&self.buf[self.pos..])
}
@ -102,7 +102,7 @@ impl Reader for ChanReader {
}
}
if self.closed && num_read == 0 {
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
} else {
Ok(num_read)
}
@ -116,7 +116,7 @@ impl Reader for ChanReader {
/// ```
/// # #![allow(unused_must_use)]
/// use std::sync::mpsc::channel;
/// use std::io::ChanWriter;
/// use std::old_io::ChanWriter;
///
/// let (tx, rx) = channel();
/// # drop(rx);
@ -144,8 +144,8 @@ impl Clone for ChanWriter {
impl Writer for ChanWriter {
fn write(&mut self, buf: &[u8]) -> IoResult<()> {
self.tx.send(buf.to_vec()).map_err(|_| {
io::IoError {
kind: io::BrokenPipe,
old_io::IoError {
kind: old_io::BrokenPipe,
desc: "Pipe closed",
detail: None
}
@ -193,14 +193,14 @@ mod test {
match reader.read(buf.as_mut_slice()) {
Ok(..) => panic!(),
Err(e) => assert_eq!(e.kind, io::EndOfFile),
Err(e) => assert_eq!(e.kind, old_io::EndOfFile),
}
assert_eq!(a, buf);
// Ensure it continues to panic in the same way.
match reader.read(buf.as_mut_slice()) {
Ok(..) => panic!(),
Err(e) => assert_eq!(e.kind, io::EndOfFile),
Err(e) => assert_eq!(e.kind, old_io::EndOfFile),
}
assert_eq!(a, buf);
}
@ -223,7 +223,7 @@ mod test {
assert_eq!(Ok("how are you?".to_string()), reader.read_line());
match reader.read_line() {
Ok(..) => panic!(),
Err(e) => assert_eq!(e.kind, io::EndOfFile),
Err(e) => assert_eq!(e.kind, old_io::EndOfFile),
}
}
@ -242,7 +242,7 @@ mod test {
match writer.write_u8(1) {
Ok(..) => panic!(),
Err(e) => assert_eq!(e.kind, io::BrokenPipe),
Err(e) => assert_eq!(e.kind, old_io::BrokenPipe),
}
}
}

View File

@ -15,8 +15,8 @@
// FIXME: Not sure how this should be structured
// FIXME: Iteration should probably be considered separately
use io::{IoError, IoResult, Reader};
use io;
use old_io::{IoError, IoResult, Reader};
use old_io;
use iter::Iterator;
use num::Int;
use ops::FnOnce;
@ -59,7 +59,7 @@ impl<'r, R: Reader> Iterator for Bytes<'r, R> {
fn next(&mut self) -> Option<IoResult<u8>> {
match self.reader.read_byte() {
Ok(x) => Some(Ok(x)),
Err(IoError { kind: io::EndOfFile, .. }) => None,
Err(IoError { kind: old_io::EndOfFile, .. }) => None,
Err(e) => Some(Err(e))
}
}
@ -179,14 +179,14 @@ pub fn u64_from_be_bytes(data: &[u8], start: uint, size: uint) -> u64 {
mod test {
use prelude::v1::*;
use io;
use io::{MemReader, BytesReader};
use old_io::{MemReader, BytesReader};
struct InitialZeroByteReader {
count: int,
}
impl Reader for InitialZeroByteReader {
fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<uint> {
if self.count == 0 {
self.count = 1;
Ok(0)
@ -200,16 +200,16 @@ mod test {
struct EofReader;
impl Reader for EofReader {
fn read(&mut self, _: &mut [u8]) -> io::IoResult<uint> {
Err(io::standard_error(io::EndOfFile))
fn read(&mut self, _: &mut [u8]) -> old_io::IoResult<uint> {
Err(old_io::standard_error(old_io::EndOfFile))
}
}
struct ErroringReader;
impl Reader for ErroringReader {
fn read(&mut self, _: &mut [u8]) -> io::IoResult<uint> {
Err(io::standard_error(io::InvalidInput))
fn read(&mut self, _: &mut [u8]) -> old_io::IoResult<uint> {
Err(old_io::standard_error(old_io::InvalidInput))
}
}
@ -218,7 +218,7 @@ mod test {
}
impl Reader for PartialReader {
fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<uint> {
if self.count == 0 {
self.count = 1;
buf[0] = 10;
@ -237,13 +237,13 @@ mod test {
}
impl Reader for ErroringLaterReader {
fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<uint> {
if self.count == 0 {
self.count = 1;
buf[0] = 10;
Ok(1)
} else {
Err(io::standard_error(io::InvalidInput))
Err(old_io::standard_error(old_io::InvalidInput))
}
}
}
@ -253,7 +253,7 @@ mod test {
}
impl Reader for ThreeChunkReader {
fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<uint> {
if self.count == 0 {
self.count = 1;
buf[0] = 10;
@ -265,7 +265,7 @@ mod test {
buf[1] = 13;
Ok(2)
} else {
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
}
}
}

View File

@ -18,21 +18,21 @@
//! At the top-level of the module are a set of freestanding functions, associated
//! with various filesystem operations. They all operate on `Path` objects.
//!
//! All operations in this module, including those as part of `File` et al
//! block the task during execution. In the event of failure, all functions/methods
//! All operations in this module, including those as part of `File` et al block
//! the task during execution. In the event of failure, all functions/methods
//! will return an `IoResult` type with an `Err` value.
//!
//! Also included in this module is an implementation block on the `Path` object
//! defined in `std::path::Path`. The impl adds useful methods about inspecting the
//! metadata of a file. This includes getting the `stat` information, reading off
//! particular bits of it, etc.
//! defined in `std::path::Path`. The impl adds useful methods about inspecting
//! the metadata of a file. This includes getting the `stat` information,
//! reading off particular bits of it, etc.
//!
//! # Example
//!
//! ```rust
//! # #![allow(unused_must_use)]
//! use std::io::fs::PathExtensions;
//! use std::io::{File, fs};
//! use std::old_io::fs::PathExtensions;
//! use std::old_io::{File, fs};
//!
//! let path = Path::new("foo.txt");
//!
@ -51,13 +51,13 @@
//! ```
use clone::Clone;
use io::standard_error;
use io::{FilePermission, Write, Open, FileAccess, FileMode, FileType};
use io::{IoResult, IoError, InvalidInput};
use io::{FileStat, SeekStyle, Seek, Writer, Reader};
use io::{Read, Truncate, ReadWrite, Append};
use io::UpdateIoError;
use io;
use old_io::standard_error;
use old_io::{FilePermission, Write, Open, FileAccess, FileMode, FileType};
use old_io::{IoResult, IoError, InvalidInput};
use old_io::{FileStat, SeekStyle, Seek, Writer, Reader};
use old_io::{Read, Truncate, ReadWrite, Append};
use old_io::UpdateIoError;
use old_io;
use iter::{Iterator, Extend};
use option::Option;
use option::Option::{Some, None};
@ -101,7 +101,7 @@ impl File {
/// # Example
///
/// ```rust,should_fail
/// use std::io::{File, Open, ReadWrite};
/// use std::old_io::{File, Open, ReadWrite};
///
/// let p = Path::new("/some/file/path.txt");
///
@ -170,7 +170,7 @@ impl File {
/// # Example
///
/// ```rust
/// use std::io::File;
/// use std::old_io::File;
///
/// let contents = File::open(&Path::new("foo.txt")).read_to_end();
/// ```
@ -188,12 +188,12 @@ impl File {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::File;
/// use std::old_io::File;
///
/// let mut f = File::create(&Path::new("foo.txt"));
/// f.write(b"This is a sample file");
/// # drop(f);
/// # ::std::io::fs::unlink(&Path::new("foo.txt"));
/// # ::std::old_io::fs::unlink(&Path::new("foo.txt"));
/// ```
pub fn create(path: &Path) -> IoResult<File> {
File::open_mode(path, Truncate, Write)
@ -265,7 +265,7 @@ impl File {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::fs;
/// use std::old_io::fs;
///
/// let p = Path::new("/some/file/path.txt");
/// fs::unlink(&p);
@ -293,7 +293,7 @@ pub fn unlink(path: &Path) -> IoResult<()> {
/// # Example
///
/// ```rust
/// use std::io::fs;
/// use std::old_io::fs;
///
/// let p = Path::new("/some/file/path.txt");
/// match fs::stat(&p) {
@ -333,7 +333,7 @@ pub fn lstat(path: &Path) -> IoResult<FileStat> {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::fs;
/// use std::old_io::fs;
///
/// fs::rename(&Path::new("foo"), &Path::new("bar"));
/// ```
@ -359,7 +359,7 @@ pub fn rename(from: &Path, to: &Path) -> IoResult<()> {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::fs;
/// use std::old_io::fs;
///
/// fs::copy(&Path::new("foo.txt"), &Path::new("bar.txt"));
/// ```
@ -386,7 +386,7 @@ pub fn copy(from: &Path, to: &Path) -> IoResult<()> {
if !from.is_file() {
return update_err(Err(IoError {
kind: io::MismatchedFileTypeForOperation,
kind: old_io::MismatchedFileTypeForOperation,
desc: "the source path is not an existing file",
detail: None
}), from, to)
@ -408,12 +408,12 @@ pub fn copy(from: &Path, to: &Path) -> IoResult<()> {
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io;
/// use std::io::fs;
/// use std::old_io::fs;
///
/// fs::chmod(&Path::new("file.txt"), io::USER_FILE);
/// fs::chmod(&Path::new("file.txt"), io::USER_READ | io::USER_WRITE);
/// fs::chmod(&Path::new("dir"), io::USER_DIR);
/// fs::chmod(&Path::new("file.exe"), io::USER_EXEC);
/// fs::chmod(&Path::new("file.txt"), old_io::USER_FILE);
/// fs::chmod(&Path::new("file.txt"), old_io::USER_READ | old_io::USER_WRITE);
/// fs::chmod(&Path::new("dir"), old_io::USER_DIR);
/// fs::chmod(&Path::new("file.exe"), old_io::USER_EXEC);
/// ```
///
/// # Error
@ -421,7 +421,7 @@ pub fn copy(from: &Path, to: &Path) -> IoResult<()> {
/// This function will return an error if the provided `path` doesn't exist, if
/// the process lacks permissions to change the attributes of the file, or if
/// some other I/O error is encountered.
pub fn chmod(path: &Path, mode: io::FilePermission) -> IoResult<()> {
pub fn chmod(path: &Path, mode: old_io::FilePermission) -> IoResult<()> {
fs_imp::chmod(path, mode.bits() as uint)
.update_err("couldn't chmod path", |e|
format!("{}; path={}; mode={:?}", e, path.display(), mode))
@ -470,10 +470,10 @@ pub fn readlink(path: &Path) -> IoResult<Path> {
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io;
/// use std::io::fs;
/// use std::old_io::fs;
///
/// let p = Path::new("/some/dir");
/// fs::mkdir(&p, io::USER_RWX);
/// fs::mkdir(&p, old_io::USER_RWX);
/// ```
///
/// # Error
@ -492,7 +492,7 @@ pub fn mkdir(path: &Path, mode: FilePermission) -> IoResult<()> {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::fs;
/// use std::old_io::fs;
///
/// let p = Path::new("/some/dir");
/// fs::rmdir(&p);
@ -513,12 +513,12 @@ pub fn rmdir(path: &Path) -> IoResult<()> {
/// # Example
///
/// ```rust
/// use std::io::fs::PathExtensions;
/// use std::io::fs;
/// use std::old_io::fs::PathExtensions;
/// use std::old_io::fs;
/// use std::io;
///
/// // one possible implementation of fs::walk_dir only visiting files
/// fn visit_dirs<F>(dir: &Path, cb: &mut F) -> io::IoResult<()> where
/// fn visit_dirs<F>(dir: &Path, cb: &mut F) -> old_io::IoResult<()> where
/// F: FnMut(&Path),
/// {
/// if dir.is_dir() {
@ -532,7 +532,7 @@ pub fn rmdir(path: &Path) -> IoResult<()> {
/// }
/// Ok(())
/// } else {
/// Err(io::standard_error(io::InvalidInput))
/// Err(old_io::standard_error(old_io::InvalidInput))
/// }
/// }
/// ```
@ -664,7 +664,7 @@ pub fn rmdir_recursive(path: &Path) -> IoResult<()> {
// (eg: deleted by someone else since readdir)
match update_err(unlink(&child), path) {
Ok(()) => (),
Err(ref e) if e.kind == io::FileNotFound => (),
Err(ref e) if e.kind == old_io::FileNotFound => (),
Err(e) => return Err(e)
}
}
@ -675,7 +675,7 @@ pub fn rmdir_recursive(path: &Path) -> IoResult<()> {
let result = update_err(rmdir(&rm_stack.pop().unwrap()), path);
match result {
Ok(()) => (),
Err(ref e) if e.kind == io::FileNotFound => (),
Err(ref e) if e.kind == old_io::FileNotFound => (),
Err(e) => return Err(e)
}
}
@ -709,7 +709,7 @@ impl Reader for File {
Ok(read) => {
self.last_nread = read as int;
match read {
0 => update_err(Err(standard_error(io::EndOfFile)), self),
0 => update_err(Err(standard_error(old_io::EndOfFile)), self),
_ => Ok(read as uint)
}
},
@ -824,10 +824,10 @@ fn access_string(access: FileAccess) -> &'static str {
#[allow(unused_mut)]
mod test {
use prelude::v1::*;
use io::{SeekSet, SeekCur, SeekEnd, Read, Open, ReadWrite, FileType};
use old_io::{SeekSet, SeekCur, SeekEnd, Read, Open, ReadWrite, FileType};
use io;
use str;
use io::fs::*;
use old_io::fs::*;
macro_rules! check { ($e:expr) => (
match $e {
@ -863,7 +863,7 @@ mod test {
// Gee, seeing how we're testing the fs module I sure hope that we
// at least implement this correctly!
let TempDir(ref p) = *self;
check!(io::fs::rmdir_recursive(p));
check!(old_io::fs::rmdir_recursive(p));
}
}
@ -871,7 +871,7 @@ mod test {
use os;
use rand;
let ret = os::tmpdir().join(format!("rust-{}", rand::random::<u32>()));
check!(io::fs::mkdir(&ret, io::USER_RWX));
check!(old_io::fs::mkdir(&ret, old_io::USER_RWX));
TempDir(ret)
}
@ -1055,7 +1055,7 @@ mod test {
fn file_test_stat_is_correct_on_is_dir() {
let tmpdir = tmpdir();
let filename = &tmpdir.join("file_stat_correct_on_is_dir");
check!(mkdir(filename, io::USER_RWX));
check!(mkdir(filename, old_io::USER_RWX));
let stat_res_fn = check!(stat(filename));
assert!(stat_res_fn.kind == FileType::Directory);
let stat_res_meth = check!(filename.stat());
@ -1067,7 +1067,7 @@ mod test {
fn file_test_fileinfo_false_when_checking_is_file_on_a_directory() {
let tmpdir = tmpdir();
let dir = &tmpdir.join("fileinfo_false_on_dir");
check!(mkdir(dir, io::USER_RWX));
check!(mkdir(dir, old_io::USER_RWX));
assert!(dir.is_file() == false);
check!(rmdir(dir));
}
@ -1087,7 +1087,7 @@ mod test {
let tmpdir = tmpdir();
let dir = &tmpdir.join("before_and_after_dir");
assert!(!dir.exists());
check!(mkdir(dir, io::USER_RWX));
check!(mkdir(dir, old_io::USER_RWX));
assert!(dir.exists());
assert!(dir.is_dir());
check!(rmdir(dir));
@ -1099,7 +1099,7 @@ mod test {
use str;
let tmpdir = tmpdir();
let dir = &tmpdir.join("di_readdir");
check!(mkdir(dir, io::USER_RWX));
check!(mkdir(dir, old_io::USER_RWX));
let prefix = "foo";
for n in range(0i,3) {
let f = dir.join(format!("{}.txt", n));
@ -1130,14 +1130,14 @@ mod test {
fn file_test_walk_dir() {
let tmpdir = tmpdir();
let dir = &tmpdir.join("walk_dir");
check!(mkdir(dir, io::USER_RWX));
check!(mkdir(dir, old_io::USER_RWX));
let dir1 = &dir.join("01/02/03");
check!(mkdir_recursive(dir1, io::USER_RWX));
check!(mkdir_recursive(dir1, old_io::USER_RWX));
check!(File::create(&dir1.join("04")));
let dir2 = &dir.join("11/12/13");
check!(mkdir_recursive(dir2, io::USER_RWX));
check!(mkdir_recursive(dir2, old_io::USER_RWX));
check!(File::create(&dir2.join("14")));
let mut files = check!(walk_dir(dir));
@ -1155,12 +1155,12 @@ mod test {
#[test]
fn mkdir_path_already_exists_error() {
use io::{IoError, PathAlreadyExists};
use old_io::{IoError, PathAlreadyExists};
let tmpdir = tmpdir();
let dir = &tmpdir.join("mkdir_error_twice");
check!(mkdir(dir, io::USER_RWX));
match mkdir(dir, io::USER_RWX) {
check!(mkdir(dir, old_io::USER_RWX));
match mkdir(dir, old_io::USER_RWX) {
Err(IoError{kind:PathAlreadyExists,..}) => (),
_ => assert!(false)
};
@ -1170,7 +1170,7 @@ mod test {
fn recursive_mkdir() {
let tmpdir = tmpdir();
let dir = tmpdir.join("d1/d2");
check!(mkdir_recursive(&dir, io::USER_RWX));
check!(mkdir_recursive(&dir, old_io::USER_RWX));
assert!(dir.is_dir())
}
@ -1180,10 +1180,10 @@ mod test {
let dir = tmpdir.join("d1");
let file = dir.join("f1");
check!(mkdir_recursive(&dir, io::USER_RWX));
check!(mkdir_recursive(&dir, old_io::USER_RWX));
check!(File::create(&file));
let result = mkdir_recursive(&file, io::USER_RWX);
let result = mkdir_recursive(&file, old_io::USER_RWX);
error!(result, "couldn't recursively mkdir");
error!(result, "couldn't create directory");
@ -1193,7 +1193,7 @@ mod test {
#[test]
fn recursive_mkdir_slash() {
check!(mkdir_recursive(&Path::new("/"), io::USER_RWX));
check!(mkdir_recursive(&Path::new("/"), old_io::USER_RWX));
}
// FIXME(#12795) depends on lstat to work on windows
@ -1206,8 +1206,8 @@ mod test {
let dtt = dt.join("t");
let d2 = tmpdir.join("d2");
let canary = d2.join("do_not_delete");
check!(mkdir_recursive(&dtt, io::USER_RWX));
check!(mkdir_recursive(&d2, io::USER_RWX));
check!(mkdir_recursive(&dtt, old_io::USER_RWX));
check!(mkdir_recursive(&d2, old_io::USER_RWX));
check!(File::create(&canary).write(b"foo"));
check!(symlink(&d2, &dt.join("d2")));
check!(rmdir_recursive(&d1));
@ -1225,7 +1225,7 @@ mod test {
let mut dirpath = tmpdir.path().clone();
dirpath.push(format!("test-가一ー你好"));
check!(mkdir(&dirpath, io::USER_RWX));
check!(mkdir(&dirpath, old_io::USER_RWX));
assert!(dirpath.is_dir());
let mut filepath = dirpath;
@ -1243,7 +1243,7 @@ mod test {
let tmpdir = tmpdir();
let unicode = tmpdir.path();
let unicode = unicode.join(format!("test-각丁ー再见"));
check!(mkdir(&unicode, io::USER_RWX));
check!(mkdir(&unicode, old_io::USER_RWX));
assert!(unicode.exists());
assert!(!Path::new("test/unicode-bogus-path-각丁ー再见").exists());
}
@ -1324,12 +1324,12 @@ mod test {
let out = tmpdir.join("out.txt");
check!(File::create(&input));
check!(chmod(&input, io::USER_READ));
check!(chmod(&input, old_io::USER_READ));
check!(copy(&input, &out));
assert!(!check!(out.stat()).perm.intersects(io::USER_WRITE));
assert!(!check!(out.stat()).perm.intersects(old_io::USER_WRITE));
check!(chmod(&input, io::USER_FILE));
check!(chmod(&out, io::USER_FILE));
check!(chmod(&input, old_io::USER_FILE));
check!(chmod(&out, old_io::USER_FILE));
}
#[cfg(not(windows))] // FIXME(#10264) operation not permitted?
@ -1405,16 +1405,16 @@ mod test {
let file = tmpdir.join("in.txt");
check!(File::create(&file));
assert!(check!(stat(&file)).perm.contains(io::USER_WRITE));
check!(chmod(&file, io::USER_READ));
assert!(!check!(stat(&file)).perm.contains(io::USER_WRITE));
assert!(check!(stat(&file)).perm.contains(old_io::USER_WRITE));
check!(chmod(&file, old_io::USER_READ));
assert!(!check!(stat(&file)).perm.contains(old_io::USER_WRITE));
match chmod(&tmpdir.join("foo"), io::USER_RWX) {
match chmod(&tmpdir.join("foo"), old_io::USER_RWX) {
Ok(..) => panic!("wanted a panic"),
Err(..) => {}
}
check!(chmod(&file, io::USER_FILE));
check!(chmod(&file, old_io::USER_FILE));
}
#[test]
@ -1422,7 +1422,7 @@ mod test {
let tmpdir = tmpdir();
let path = tmpdir.join("in.txt");
let mut file = check!(File::open_mode(&path, io::Open, io::ReadWrite));
let mut file = check!(File::open_mode(&path, old_io::Open, old_io::ReadWrite));
check!(file.fsync());
check!(file.datasync());
check!(file.write(b"foo"));
@ -1436,7 +1436,7 @@ mod test {
let tmpdir = tmpdir();
let path = tmpdir.join("in.txt");
let mut file = check!(File::open_mode(&path, io::Open, io::ReadWrite));
let mut file = check!(File::open_mode(&path, old_io::Open, old_io::ReadWrite));
check!(file.write(b"foo"));
check!(file.fsync());
@ -1467,41 +1467,41 @@ mod test {
fn open_flavors() {
let tmpdir = tmpdir();
match File::open_mode(&tmpdir.join("a"), io::Open, io::Read) {
match File::open_mode(&tmpdir.join("a"), old_io::Open, old_io::Read) {
Ok(..) => panic!(), Err(..) => {}
}
// Perform each one twice to make sure that it succeeds the second time
// (where the file exists)
check!(File::open_mode(&tmpdir.join("b"), io::Open, io::Write));
check!(File::open_mode(&tmpdir.join("b"), old_io::Open, old_io::Write));
assert!(tmpdir.join("b").exists());
check!(File::open_mode(&tmpdir.join("b"), io::Open, io::Write));
check!(File::open_mode(&tmpdir.join("b"), old_io::Open, old_io::Write));
check!(File::open_mode(&tmpdir.join("c"), io::Open, io::ReadWrite));
check!(File::open_mode(&tmpdir.join("c"), old_io::Open, old_io::ReadWrite));
assert!(tmpdir.join("c").exists());
check!(File::open_mode(&tmpdir.join("c"), io::Open, io::ReadWrite));
check!(File::open_mode(&tmpdir.join("c"), old_io::Open, old_io::ReadWrite));
check!(File::open_mode(&tmpdir.join("d"), io::Append, io::Write));
check!(File::open_mode(&tmpdir.join("d"), old_io::Append, old_io::Write));
assert!(tmpdir.join("d").exists());
check!(File::open_mode(&tmpdir.join("d"), io::Append, io::Write));
check!(File::open_mode(&tmpdir.join("d"), old_io::Append, old_io::Write));
check!(File::open_mode(&tmpdir.join("e"), io::Append, io::ReadWrite));
check!(File::open_mode(&tmpdir.join("e"), old_io::Append, old_io::ReadWrite));
assert!(tmpdir.join("e").exists());
check!(File::open_mode(&tmpdir.join("e"), io::Append, io::ReadWrite));
check!(File::open_mode(&tmpdir.join("e"), old_io::Append, old_io::ReadWrite));
check!(File::open_mode(&tmpdir.join("f"), io::Truncate, io::Write));
check!(File::open_mode(&tmpdir.join("f"), old_io::Truncate, old_io::Write));
assert!(tmpdir.join("f").exists());
check!(File::open_mode(&tmpdir.join("f"), io::Truncate, io::Write));
check!(File::open_mode(&tmpdir.join("f"), old_io::Truncate, old_io::Write));
check!(File::open_mode(&tmpdir.join("g"), io::Truncate, io::ReadWrite));
check!(File::open_mode(&tmpdir.join("g"), old_io::Truncate, old_io::ReadWrite));
assert!(tmpdir.join("g").exists());
check!(File::open_mode(&tmpdir.join("g"), io::Truncate, io::ReadWrite));
check!(File::open_mode(&tmpdir.join("g"), old_io::Truncate, old_io::ReadWrite));
check!(File::create(&tmpdir.join("h")).write("foo".as_bytes()));
check!(File::open_mode(&tmpdir.join("h"), io::Open, io::Read));
check!(File::open_mode(&tmpdir.join("h"), old_io::Open, old_io::Read));
{
let mut f = check!(File::open_mode(&tmpdir.join("h"), io::Open,
io::Read));
let mut f = check!(File::open_mode(&tmpdir.join("h"), old_io::Open,
old_io::Read));
match f.write("wut".as_bytes()) {
Ok(..) => panic!(), Err(..) => {}
}
@ -1509,15 +1509,15 @@ mod test {
assert!(check!(stat(&tmpdir.join("h"))).size == 3,
"write/stat failed");
{
let mut f = check!(File::open_mode(&tmpdir.join("h"), io::Append,
io::Write));
let mut f = check!(File::open_mode(&tmpdir.join("h"), old_io::Append,
old_io::Write));
check!(f.write("bar".as_bytes()));
}
assert!(check!(stat(&tmpdir.join("h"))).size == 6,
"append didn't append");
{
let mut f = check!(File::open_mode(&tmpdir.join("h"), io::Truncate,
io::Write));
let mut f = check!(File::open_mode(&tmpdir.join("h"), old_io::Truncate,
old_io::Write));
check!(f.write("bar".as_bytes()));
}
assert!(check!(stat(&tmpdir.join("h"))).size == 3,
@ -1529,8 +1529,9 @@ mod test {
let tmpdir = tmpdir();
let path = tmpdir.join("a");
check!(File::create(&path));
// These numbers have to be bigger than the time in the day to account for timezones
// Windows in particular will fail in certain timezones with small enough values
// These numbers have to be bigger than the time in the day to account
// for timezones Windows in particular will fail in certain timezones
// with small enough values
check!(change_file_times(&path, 100000, 200000));
assert_eq!(check!(path.stat()).accessed, 100000);
assert_eq!(check!(path.stat()).modified, 200000);
@ -1565,7 +1566,7 @@ mod test {
let tmpdir = tmpdir();
let path = tmpdir.join("file");
check!(File::create(&path));
check!(chmod(&path, io::USER_READ));
check!(chmod(&path, old_io::USER_READ));
check!(unlink(&path));
}
}

View File

@ -15,8 +15,8 @@
use cmp::min;
use option::Option::None;
use result::Result::{Err, Ok};
use io;
use io::{Reader, Writer, Seek, Buffer, IoError, SeekStyle, IoResult};
use old_io;
use old_io::{Reader, Writer, Seek, Buffer, IoError, SeekStyle, IoResult};
use slice::{self, AsSlice, SliceExt};
use vec::Vec;
@ -25,14 +25,14 @@ const BUF_CAPACITY: uint = 128;
fn combine(seek: SeekStyle, cur: uint, end: uint, offset: i64) -> IoResult<u64> {
// compute offset as signed and clamp to prevent overflow
let pos = match seek {
io::SeekSet => 0,
io::SeekEnd => end,
io::SeekCur => cur,
old_io::SeekSet => 0,
old_io::SeekEnd => end,
old_io::SeekCur => cur,
} as i64;
if offset + pos < 0 {
Err(IoError {
kind: io::InvalidInput,
kind: old_io::InvalidInput,
desc: "invalid seek to a negative offset",
detail: None
})
@ -55,7 +55,7 @@ impl Writer for Vec<u8> {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::MemWriter;
/// use std::old_io::MemWriter;
///
/// let mut w = MemWriter::new();
/// w.write(&[0, 1, 2]);
@ -111,7 +111,7 @@ impl Writer for MemWriter {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::MemReader;
/// use std::old_io::MemReader;
///
/// let mut r = MemReader::new(vec!(0, 1, 2));
///
@ -155,7 +155,7 @@ impl MemReader {
impl Reader for MemReader {
#[inline]
fn read(&mut self, buf: &mut [u8]) -> IoResult<uint> {
if self.eof() { return Err(io::standard_error(io::EndOfFile)) }
if self.eof() { return Err(old_io::standard_error(old_io::EndOfFile)) }
let write_len = min(buf.len(), self.buf.len() - self.pos);
{
@ -189,7 +189,7 @@ impl Buffer for MemReader {
if self.pos < self.buf.len() {
Ok(&self.buf[self.pos..])
} else {
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
}
}
@ -200,7 +200,7 @@ impl Buffer for MemReader {
impl<'a> Reader for &'a [u8] {
#[inline]
fn read(&mut self, buf: &mut [u8]) -> IoResult<uint> {
if self.is_empty() { return Err(io::standard_error(io::EndOfFile)); }
if self.is_empty() { return Err(old_io::standard_error(old_io::EndOfFile)); }
let write_len = min(buf.len(), self.len());
{
@ -219,7 +219,7 @@ impl<'a> Buffer for &'a [u8] {
#[inline]
fn fill_buf(&mut self) -> IoResult<&[u8]> {
if self.is_empty() {
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
} else {
Ok(*self)
}
@ -241,7 +241,7 @@ impl<'a> Buffer for &'a [u8] {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::BufWriter;
/// use std::old_io::BufWriter;
///
/// let mut buf = [0; 4];
/// {
@ -274,7 +274,7 @@ impl<'a> Writer for BufWriter<'a> {
let dst_len = dst.len();
if dst_len == 0 {
return Err(io::standard_error(io::EndOfFile));
return Err(old_io::standard_error(old_io::EndOfFile));
}
let src_len = src.len();
@ -290,7 +290,7 @@ impl<'a> Writer for BufWriter<'a> {
self.pos += dst_len;
Err(io::standard_error(io::ShortWrite(dst_len)))
Err(old_io::standard_error(old_io::ShortWrite(dst_len)))
}
}
}
@ -313,7 +313,7 @@ impl<'a> Seek for BufWriter<'a> {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::BufReader;
/// use std::old_io::BufReader;
///
/// let buf = [0, 1, 2, 3];
/// let mut r = BufReader::new(&buf);
@ -345,7 +345,7 @@ impl<'a> BufReader<'a> {
impl<'a> Reader for BufReader<'a> {
#[inline]
fn read(&mut self, buf: &mut [u8]) -> IoResult<uint> {
if self.eof() { return Err(io::standard_error(io::EndOfFile)) }
if self.eof() { return Err(old_io::standard_error(old_io::EndOfFile)) }
let write_len = min(buf.len(), self.buf.len() - self.pos);
{
@ -379,7 +379,7 @@ impl<'a> Buffer for BufReader<'a> {
if self.pos < self.buf.len() {
Ok(&self.buf[self.pos..])
} else {
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
}
}
@ -390,7 +390,7 @@ impl<'a> Buffer for BufReader<'a> {
#[cfg(test)]
mod test {
extern crate "test" as test_crate;
use io::{SeekSet, SeekCur, SeekEnd, Reader, Writer, Seek};
use old_io::{SeekSet, SeekCur, SeekEnd, Reader, Writer, Seek};
use prelude::v1::{Ok, Err, range, Vec, Buffer, AsSlice, SliceExt};
use prelude::v1::IteratorExt;
use io;
@ -432,8 +432,8 @@ mod test {
writer.write(&[]).unwrap();
assert_eq!(writer.tell(), Ok(8));
assert_eq!(writer.write(&[8, 9]).err().unwrap().kind, io::ShortWrite(1));
assert_eq!(writer.write(&[10]).err().unwrap().kind, io::EndOfFile);
assert_eq!(writer.write(&[8, 9]).err().unwrap().kind, old_io::ShortWrite(1));
assert_eq!(writer.write(&[10]).err().unwrap().kind, old_io::EndOfFile);
}
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8];
assert_eq!(buf, b);
@ -476,7 +476,7 @@ mod test {
match writer.write(&[0, 0]) {
Ok(..) => panic!(),
Err(e) => assert_eq!(e.kind, io::ShortWrite(1)),
Err(e) => assert_eq!(e.kind, old_io::ShortWrite(1)),
}
}

View File

@ -18,6 +18,24 @@
//! I/O, including files, networking, timers, and processes
//!
//! > **Warning**: This module is currently called `old_io` for a reason! The
//! > module is currently being redesigned in a number of RFCs. For more details
//! > follow the RFC repository in connection with [RFC 517][base] or follow
//! > some of these sub-RFCs
//! >
//! > * [String handling][osstr]
//! > * [Core I/O support][core]
//! > * [Deadlines][deadlines]
//! > * [std::env][env]
//! > * [std::process][process]
//!
//! [base]: https://github.com/rust-lang/rfcs/blob/master/text/0517-io-os-reform.md
//! [osstr]: https://github.com/rust-lang/rfcs/pull/575
//! [core]: https://github.com/rust-lang/rfcs/pull/576
//! [deadlines]: https://github.com/rust-lang/rfcs/pull/577
//! [env]: https://github.com/rust-lang/rfcs/pull/578
//! [process]: https://github.com/rust-lang/rfcs/pull/579
//!
//! `std::io` provides Rust's basic I/O types,
//! for reading and writing to files, TCP, UDP,
//! and other types of sockets and pipes,
@ -30,7 +48,7 @@
//! * Read lines from stdin
//!
//! ```rust
//! use std::io;
//! use std::old_io as io;
//!
//! for line in io::stdin().lock().lines() {
//! print!("{}", line.unwrap());
@ -40,7 +58,7 @@
//! * Read a complete file
//!
//! ```rust
//! use std::io::File;
//! use std::old_io::File;
//!
//! let contents = File::open(&Path::new("message.txt")).read_to_end();
//! ```
@ -49,19 +67,19 @@
//!
//! ```rust
//! # #![allow(unused_must_use)]
//! use std::io::File;
//! use std::old_io::File;
//!
//! let mut file = File::create(&Path::new("message.txt"));
//! file.write(b"hello, file!\n");
//! # drop(file);
//! # ::std::io::fs::unlink(&Path::new("message.txt"));
//! # ::std::old_io::fs::unlink(&Path::new("message.txt"));
//! ```
//!
//! * Iterate over the lines of a file
//!
//! ```rust,no_run
//! use std::io::BufferedReader;
//! use std::io::File;
//! use std::old_io::BufferedReader;
//! use std::old_io::File;
//!
//! let path = Path::new("message.txt");
//! let mut file = BufferedReader::new(File::open(&path));
@ -73,8 +91,8 @@
//! * Pull the lines of a file into a vector of strings
//!
//! ```rust,no_run
//! use std::io::BufferedReader;
//! use std::io::File;
//! use std::old_io::BufferedReader;
//! use std::old_io::File;
//!
//! let path = Path::new("message.txt");
//! let mut file = BufferedReader::new(File::open(&path));
@ -85,7 +103,7 @@
//!
//! ```rust
//! # #![allow(unused_must_use)]
//! use std::io::TcpStream;
//! use std::old_io::TcpStream;
//!
//! # // connection doesn't fail if a server is running on 8080
//! # // locally, we still want to be type checking this code, so lets
@ -103,8 +121,8 @@
//! # fn main() { }
//! # fn foo() {
//! # #![allow(dead_code)]
//! use std::io::{TcpListener, TcpStream};
//! use std::io::{Acceptor, Listener};
//! use std::old_io::{TcpListener, TcpStream};
//! use std::old_io::{Acceptor, Listener};
//! use std::thread::Thread;
//!
//! let listener = TcpListener::bind("127.0.0.1:80");
@ -166,14 +184,14 @@
//!
//! ```rust
//! # #![allow(unused_must_use)]
//! use std::io::File;
//! use std::old_io::File;
//!
//! match File::create(&Path::new("diary.txt")).write(b"Met a girl.\n") {
//! Ok(()) => (), // succeeded
//! Err(e) => println!("failed to write to my diary: {}", e),
//! }
//!
//! # ::std::io::fs::unlink(&Path::new("diary.txt"));
//! # ::std::old_io::fs::unlink(&Path::new("diary.txt"));
//! ```
//!
//! So what actually happens if `create` encounters an error?
@ -199,7 +217,7 @@
//! If you wanted to read several `u32`s from a file and return their product:
//!
//! ```rust
//! use std::io::{File, IoResult};
//! use std::old_io::{File, IoResult};
//!
//! fn file_product(p: &Path) -> IoResult<u32> {
//! let mut f = File::open(p);
@ -925,9 +943,9 @@ unsafe fn slice_vec_capacity<'a, T>(v: &'a mut Vec<T>, start: uint, end: uint) -
/// # Examples
///
/// ```
/// use std::io;
/// use std::io::ByRefReader;
/// use std::io::util::LimitReader;
/// use std::old_io as io;
/// use std::old_io::ByRefReader;
/// use std::old_io::util::LimitReader;
///
/// fn process_input<R: Reader>(r: R) {}
///
@ -1254,8 +1272,8 @@ impl<'a> Writer for &'a mut (Writer+'a) {
/// # Example
///
/// ```
/// use std::io::util::TeeReader;
/// use std::io::{stdin, ByRefWriter};
/// use std::old_io::util::TeeReader;
/// use std::old_io::{stdin, ByRefWriter};
///
/// fn process_input<R: Reader>(r: R) {}
///
@ -1379,7 +1397,7 @@ pub trait Buffer: Reader {
/// # Example
///
/// ```rust
/// use std::io::BufReader;
/// use std::old_io::BufReader;
///
/// let mut reader = BufReader::new(b"hello\nworld");
/// assert_eq!("hello\n", &*reader.read_line().unwrap());
@ -1601,7 +1619,7 @@ impl<'a, T, A: ?Sized + Acceptor<T>> Iterator for IncomingConnections<'a, A> {
/// # Example
///
/// ```
/// use std::io;
/// use std::old_io as io;
///
/// let eof = io::standard_error(io::EndOfFile);
/// let einval = io::standard_error(io::InvalidInput);
@ -1691,7 +1709,7 @@ pub enum FileType {
/// ```no_run
/// # #![allow(unstable)]
///
/// use std::io::fs::PathExtensions;
/// use std::old_io::fs::PathExtensions;
///
/// let info = match Path::new("foo.txt").stat() {
/// Ok(stat) => stat,

View File

@ -20,8 +20,8 @@ pub use self::Flag::*;
pub use self::Protocol::*;
use iter::IteratorExt;
use io::{IoResult};
use io::net::ip::{SocketAddr, IpAddr};
use old_io::{IoResult};
use old_io::net::ip::{SocketAddr, IpAddr};
use option::Option;
use option::Option::{Some, None};
use string::String;
@ -114,7 +114,7 @@ fn lookup(hostname: Option<&str>, servname: Option<&str>, hint: Option<Hint>)
mod test {
use prelude::v1::*;
use super::*;
use io::net::ip::*;
use old_io::net::ip::*;
#[test]
fn dns_smoke_test() {

View File

@ -19,8 +19,8 @@ pub use self::IpAddr::*;
use boxed::Box;
use fmt;
use io::{self, IoResult, IoError};
use io::net;
use old_io::{self, IoResult, IoError};
use old_io::net;
use iter::{Iterator, IteratorExt};
use ops::{FnOnce, FnMut};
use option::Option;
@ -406,9 +406,9 @@ impl FromStr for SocketAddr {
/// ```rust,no_run
/// # #![allow(unused_must_use)]
///
/// use std::io::{TcpStream, TcpListener};
/// use std::io::net::udp::UdpSocket;
/// use std::io::net::ip::{Ipv4Addr, SocketAddr};
/// use std::old_io::{TcpStream, TcpListener};
/// use std::old_io::net::udp::UdpSocket;
/// use std::old_io::net::ip::{Ipv4Addr, SocketAddr};
///
/// fn main() {
/// // The following lines are equivalent modulo possible "localhost" name resolution
@ -438,7 +438,7 @@ pub trait ToSocketAddr {
fn to_socket_addr(&self) -> IoResult<SocketAddr> {
self.to_socket_addr_all()
.and_then(|v| v.into_iter().next().ok_or_else(|| IoError {
kind: io::InvalidInput,
kind: old_io::InvalidInput,
desc: "no address available",
detail: None
}))
@ -481,7 +481,7 @@ fn parse_and_resolve_socket_addr(s: &str) -> IoResult<Vec<SocketAddr>> {
match $e {
Some(r) => r,
None => return Err(IoError {
kind: io::InvalidInput,
kind: old_io::InvalidInput,
desc: $msg,
detail: None
})
@ -526,7 +526,7 @@ impl<'a> ToSocketAddr for &'a str {
parse_and_resolve_socket_addr(*self)
.and_then(|v| v.into_iter().next()
.ok_or_else(|| IoError {
kind: io::InvalidInput,
kind: old_io::InvalidInput,
desc: "no address available",
detail: None
})

View File

@ -10,7 +10,7 @@
//! Networking I/O
use io::{IoError, IoResult, InvalidInput};
use old_io::{IoError, IoResult, InvalidInput};
use ops::FnMut;
use option::Option::None;
use result::Result::{Ok, Err};

View File

@ -24,7 +24,7 @@ use prelude::v1::*;
use ffi::CString;
use path::BytesContainer;
use io::{Listener, Acceptor, IoResult, TimedOut, standard_error};
use old_io::{Listener, Acceptor, IoResult, TimedOut, standard_error};
use sys::pipe::UnixAcceptor as UnixAcceptorImp;
use sys::pipe::UnixListener as UnixListenerImp;
use sys::pipe::UnixStream as UnixStreamImp;
@ -48,7 +48,7 @@ impl UnixStream {
///
/// ```rust
/// # #![allow(unused_must_use)]
/// use std::io::net::pipe::UnixStream;
/// use std::old_io::net::pipe::UnixStream;
///
/// let server = Path::new("path/to/my/socket");
/// let mut stream = UnixStream::connect(&server);
@ -169,8 +169,8 @@ impl UnixListener {
///
/// ```
/// # fn foo() {
/// use std::io::net::pipe::UnixListener;
/// use std::io::{Listener, Acceptor};
/// use std::old_io::net::pipe::UnixListener;
/// use std::old_io::{Listener, Acceptor};
///
/// let server = Path::new("/path/to/my/socket");
/// let stream = UnixListener::bind(&server);
@ -270,11 +270,11 @@ impl sys_common::AsInner<UnixAcceptorImp> for UnixAcceptor {
mod tests {
use prelude::v1::*;
use io::fs::PathExtensions;
use io::{EndOfFile, TimedOut, ShortWrite, IoError, ConnectionReset};
use io::{NotConnected, BrokenPipe, FileNotFound, InvalidInput, OtherIoError};
use io::{PermissionDenied, Acceptor, Listener};
use io::test::*;
use old_io::fs::PathExtensions;
use old_io::{EndOfFile, TimedOut, ShortWrite, IoError, ConnectionReset};
use old_io::{NotConnected, BrokenPipe, FileNotFound, InvalidInput, OtherIoError};
use old_io::{PermissionDenied, Acceptor, Listener};
use old_io::test::*;
use super::*;
use sync::mpsc::channel;
use thread::Thread;

View File

@ -18,11 +18,11 @@
//! listener (socket server) implements the `Listener` and `Acceptor` traits.
use clone::Clone;
use io::IoResult;
use old_io::IoResult;
use result::Result::Err;
use io::net::ip::{SocketAddr, ToSocketAddr};
use io::{Reader, Writer, Listener, Acceptor};
use io::{standard_error, TimedOut};
use old_io::net::ip::{SocketAddr, ToSocketAddr};
use old_io::{Reader, Writer, Listener, Acceptor};
use old_io::{standard_error, TimedOut};
use option::Option;
use option::Option::{None, Some};
use time::Duration;
@ -41,7 +41,7 @@ use sys_common;
/// # Example
///
/// ```no_run
/// use std::io::TcpStream;
/// use std::old_io::TcpStream;
///
/// {
/// let mut stream = TcpStream::connect("127.0.0.1:34254");
@ -133,8 +133,8 @@ impl TcpStream {
///
/// ```no_run
/// # #![allow(unused_must_use)]
/// use std::io::timer;
/// use std::io::TcpStream;
/// use std::old_io::timer;
/// use std::old_io::TcpStream;
/// use std::time::Duration;
/// use std::thread::Thread;
///
@ -276,8 +276,8 @@ impl sys_common::AsInner<TcpStreamImp> for TcpStream {
///
/// ```
/// # fn foo() {
/// use std::io::{TcpListener, TcpStream};
/// use std::io::{Acceptor, Listener};
/// use std::old_io::{TcpListener, TcpStream};
/// use std::old_io::{Acceptor, Listener};
/// use std::thread::Thread;
///
/// let listener = TcpListener::bind("127.0.0.1:80").unwrap();
@ -373,8 +373,8 @@ impl TcpAcceptor {
///
/// ```no_run
/// # #![allow(unstable)]
/// use std::io::TcpListener;
/// use std::io::{Listener, Acceptor, TimedOut};
/// use std::old_io::TcpListener;
/// use std::old_io::{Listener, Acceptor, TimedOut};
///
/// let mut a = TcpListener::bind("127.0.0.1:8482").listen().unwrap();
///
@ -417,7 +417,7 @@ impl TcpAcceptor {
///
/// ```
/// # #![allow(unstable)]
/// use std::io::{TcpListener, Listener, Acceptor, EndOfFile};
/// use std::old_io::{TcpListener, Listener, Acceptor, EndOfFile};
/// use std::thread::Thread;
///
/// let mut a = TcpListener::bind("127.0.0.1:8482").listen().unwrap();
@ -486,13 +486,13 @@ mod test {
use sync::mpsc::channel;
use thread::Thread;
use io::net::tcp::*;
use io::net::ip::*;
use io::test::*;
use io::{EndOfFile, TimedOut, ShortWrite, IoError};
use io::{ConnectionRefused, BrokenPipe, ConnectionAborted};
use io::{ConnectionReset, NotConnected, PermissionDenied, OtherIoError};
use io::{Acceptor, Listener};
use old_io::net::tcp::*;
use old_io::net::ip::*;
use old_io::test::*;
use old_io::{EndOfFile, TimedOut, ShortWrite, IoError};
use old_io::{ConnectionRefused, BrokenPipe, ConnectionAborted};
use old_io::{ConnectionReset, NotConnected, PermissionDenied, OtherIoError};
use old_io::{Acceptor, Listener};
// FIXME #11530 this fails on android because tests are run as root
#[cfg_attr(any(windows, target_os = "android"), ignore)]

View File

@ -16,8 +16,8 @@
//! datagram protocol.
use clone::Clone;
use io::net::ip::{SocketAddr, IpAddr, ToSocketAddr};
use io::IoResult;
use old_io::net::ip::{SocketAddr, IpAddr, ToSocketAddr};
use old_io::IoResult;
use option::Option;
use sys::udp::UdpSocket as UdpSocketImp;
use sys_common;
@ -34,8 +34,8 @@ use sys_common;
/// # #![allow(unused_must_use)]
/// #![feature(slicing_syntax)]
///
/// use std::io::net::udp::UdpSocket;
/// use std::io::net::ip::{Ipv4Addr, SocketAddr};
/// use std::old_io::net::udp::UdpSocket;
/// use std::old_io::net::ip::{Ipv4Addr, SocketAddr};
/// fn main() {
/// let addr = SocketAddr { ip: Ipv4Addr(127, 0, 0, 1), port: 34254 };
/// let mut socket = match UdpSocket::bind(addr) {
@ -181,9 +181,9 @@ mod test {
use prelude::v1::*;
use sync::mpsc::channel;
use io::net::ip::*;
use io::test::*;
use io::{IoError, TimedOut, PermissionDenied, ShortWrite};
use old_io::net::ip::*;
use old_io::test::*;
use old_io::{IoError, TimedOut, PermissionDenied, ShortWrite};
use super::*;
use thread::Thread;

View File

@ -17,7 +17,7 @@
use prelude::v1::*;
use io::IoResult;
use old_io::IoResult;
use libc;
use sync::Arc;
@ -49,7 +49,7 @@ impl PipeStream {
/// # #![allow(unused_must_use)]
/// extern crate libc;
///
/// use std::io::pipe::PipeStream;
/// use std::old_io::pipe::PipeStream;
///
/// fn main() {
/// let mut pipe = PipeStream::open(libc::STDERR_FILENO);
@ -120,7 +120,7 @@ mod test {
#[test]
fn partial_read() {
use os;
use io::pipe::PipeStream;
use old_io::pipe::PipeStream;
let os::Pipe { reader, writer } = unsafe { os::pipe().unwrap() };
let out = PipeStream::open(writer);

View File

@ -21,9 +21,9 @@ use prelude::v1::*;
use collections::HashMap;
use ffi::CString;
use fmt;
use io::pipe::{PipeStream, PipePair};
use io::{IoResult, IoError};
use io;
use old_io::pipe::{PipeStream, PipePair};
use old_io::{IoResult, IoError};
use old_io;
use libc;
use os;
use path::BytesContainer;
@ -58,7 +58,7 @@ use thread::Thread;
/// # Example
///
/// ```should_fail
/// use std::io::Command;
/// use std::old_io::Command;
///
/// let mut child = match Command::new("/bin/cat").arg("file.txt").spawn() {
/// Ok(child) => child,
@ -159,7 +159,7 @@ pub type EnvMap = HashMap<EnvKey, CString>;
/// to be changed (for example, by adding arguments) prior to spawning:
///
/// ```
/// use std::io::Command;
/// use std::old_io::Command;
///
/// let mut process = match Command::new("sh").arg("-c").arg("echo hello").spawn() {
/// Ok(p) => p,
@ -359,7 +359,7 @@ impl Command {
/// # Example
///
/// ```
/// use std::io::Command;
/// use std::old_io::Command;
///
/// let output = match Command::new("cat").arg("foot.txt").output() {
/// Ok(output) => output,
@ -380,7 +380,7 @@ impl Command {
/// # Example
///
/// ```
/// use std::io::Command;
/// use std::old_io::Command;
///
/// let status = match Command::new("ls").status() {
/// Ok(status) => status,
@ -583,7 +583,7 @@ impl Process {
// newer process that happens to have the same (re-used) id
if self.exit_code.is_some() {
return Err(IoError {
kind: io::InvalidInput,
kind: old_io::InvalidInput,
desc: "invalid argument: can't kill an exited process",
detail: None,
})
@ -654,8 +654,8 @@ impl Process {
///
/// ```no_run
/// # #![allow(unstable)]
/// use std::io::{Command, IoResult};
/// use std::io::process::ProcessExit;
/// use std::old_io::{Command, IoResult};
/// use std::old_io::process::ProcessExit;
///
/// fn run_gracefully(prog: &str) -> IoResult<ProcessExit> {
/// let mut p = try!(Command::new("long-running-process").spawn());
@ -698,7 +698,7 @@ impl Process {
/// fail.
pub fn wait_with_output(mut self) -> IoResult<ProcessOutput> {
drop(self.stdin.take());
fn read(stream: Option<io::PipeStream>) -> Receiver<IoResult<Vec<u8>>> {
fn read(stream: Option<old_io::PipeStream>) -> Receiver<IoResult<Vec<u8>>> {
let (tx, rx) = channel();
match stream {
Some(stream) => {
@ -752,12 +752,12 @@ impl Drop for Process {
#[cfg(test)]
mod tests {
use io::{Truncate, Write, TimedOut, timer, process, FileNotFound};
use old_io::{Truncate, Write, TimedOut, timer, process, FileNotFound};
use prelude::v1::{Ok, Err, range, drop, Some, None, Vec};
use prelude::v1::{Path, String, Reader, Writer, Clone};
use prelude::v1::{SliceExt, Str, StrExt, AsSlice, ToString, GenericPath};
use io::fs::PathExtensions;
use io::timer::*;
use old_io::fs::PathExtensions;
use old_io::timer::*;
use rt::running_on_valgrind;
use str;
use super::{CreatePipe};

View File

@ -21,7 +21,7 @@
//! # #![allow(unused_must_use)]
//! use std::io;
//!
//! let mut out = io::stdout();
//! let mut out = old_io::stdout();
//! out.write(b"Hello, world!");
//! ```
@ -32,7 +32,7 @@ use cell::RefCell;
use clone::Clone;
use failure::LOCAL_STDERR;
use fmt;
use io::{Reader, Writer, IoResult, IoError, OtherIoError, Buffer,
use old_io::{Reader, Writer, IoResult, IoError, OtherIoError, Buffer,
standard_error, EndOfFile, LineBufferedWriter, BufferedReader};
use marker::{Sync, Send};
use libc;
@ -143,7 +143,7 @@ impl StdinReader {
/// ```rust
/// use std::io;
///
/// for line in io::stdin().lock().lines() {
/// for line in old_io::stdin().lock().lines() {
/// println!("{}", line.unwrap());
/// }
/// ```
@ -539,7 +539,7 @@ mod tests {
#[test]
fn capture_stdout() {
use io::{ChanReader, ChanWriter};
use old_io::{ChanReader, ChanWriter};
let (tx, rx) = channel();
let (mut r, w) = (ChanReader::new(rx), ChanWriter::new(tx));
@ -552,7 +552,7 @@ mod tests {
#[test]
fn capture_stderr() {
use io::{ChanReader, ChanWriter, Reader};
use old_io::{ChanReader, ChanWriter, Reader};
let (tx, rx) = channel();
let (mut r, w) = (ChanReader::new(rx), ChanWriter::new(tx));

View File

@ -10,8 +10,8 @@
//! Temporary files and directories
use io::{fs, IoError, IoErrorKind, IoResult};
use io;
use old_io::{fs, IoError, IoErrorKind, IoResult};
use old_io;
use iter::{IteratorExt, range};
use ops::Drop;
use option::Option;
@ -29,7 +29,7 @@ use string::String;
/// # Examples
///
/// ```no_run
/// use std::io::TempDir;
/// use std::old_io::TempDir;
///
/// {
/// // create a temporary directory
@ -113,7 +113,7 @@ impl TempDir {
suffix
};
let path = tmpdir.join(leaf);
match fs::mkdir(&path, io::USER_RWX) {
match fs::mkdir(&path, old_io::USER_RWX) {
Ok(_) => return Ok(TempDir { path: Some(path), disarmed: false }),
Err(IoError{kind:IoErrorKind::PathAlreadyExists,..}) => (),
Err(e) => return Err(e)

View File

@ -14,7 +14,7 @@ use prelude::v1::*;
use libc;
use os;
use std::io::net::ip::*;
use std::old_io::net::ip::*;
use sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering};
/// Get a port number, starting at 9600, for use in tests

View File

@ -17,7 +17,7 @@
use sync::mpsc::{Receiver, Sender, channel};
use time::Duration;
use io::IoResult;
use old_io::IoResult;
use sys::timer::Callback;
use sys::timer::Timer as TimerImp;
@ -31,7 +31,7 @@ use sys::timer::Timer as TimerImp;
///
/// ```
/// # fn foo() {
/// use std::io::Timer;
/// use std::old_io::Timer;
/// use std::time::Duration;
///
/// let mut timer = Timer::new().unwrap();
@ -50,11 +50,11 @@ use sys::timer::Timer as TimerImp;
/// ```
///
/// If only sleeping is necessary, then a convenience API is provided through
/// the `io::timer` module.
/// the `old_io::timer` module.
///
/// ```
/// # fn foo() {
/// use std::io::timer;
/// use std::old_io::timer;
/// use std::time::Duration;
///
/// // Put this task to sleep for 5 seconds
@ -115,7 +115,7 @@ impl Timer {
/// # Example
///
/// ```rust
/// use std::io::Timer;
/// use std::old_io::Timer;
/// use std::time::Duration;
///
/// let mut timer = Timer::new().unwrap();
@ -128,7 +128,7 @@ impl Timer {
/// ```
///
/// ```rust
/// use std::io::Timer;
/// use std::old_io::Timer;
/// use std::time::Duration;
///
/// // Incorrect, method chaining-style:
@ -167,7 +167,7 @@ impl Timer {
/// # Example
///
/// ```rust
/// use std::io::Timer;
/// use std::old_io::Timer;
/// use std::time::Duration;
///
/// let mut timer = Timer::new().unwrap();
@ -186,7 +186,7 @@ impl Timer {
/// ```
///
/// ```rust
/// use std::io::Timer;
/// use std::old_io::Timer;
/// use std::time::Duration;
///
/// // Incorrect, method chaining-style.

View File

@ -12,7 +12,7 @@
use prelude::v1::*;
use cmp;
use io;
use old_io;
use slice::bytes::MutableByteVector;
/// Wraps a `Reader`, limiting the number of bytes that can be read from it.
@ -42,9 +42,9 @@ impl<R: Reader> LimitReader<R> {
}
impl<R: Reader> Reader for LimitReader<R> {
fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<uint> {
if self.limit == 0 {
return Err(io::standard_error(io::EndOfFile));
return Err(old_io::standard_error(old_io::EndOfFile));
}
let len = cmp::min(self.limit, buf.len());
@ -58,11 +58,11 @@ impl<R: Reader> Reader for LimitReader<R> {
}
impl<R: Buffer> Buffer for LimitReader<R> {
fn fill_buf<'a>(&'a mut self) -> io::IoResult<&'a [u8]> {
fn fill_buf<'a>(&'a mut self) -> old_io::IoResult<&'a [u8]> {
let amt = try!(self.inner.fill_buf());
let buf = &amt[..cmp::min(amt.len(), self.limit)];
if buf.len() == 0 {
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
} else {
Ok(buf)
}
@ -83,7 +83,7 @@ pub struct NullWriter;
impl Writer for NullWriter {
#[inline]
fn write(&mut self, _buf: &[u8]) -> io::IoResult<()> { Ok(()) }
fn write(&mut self, _buf: &[u8]) -> old_io::IoResult<()> { Ok(()) }
}
/// A `Reader` which returns an infinite stream of 0 bytes, like /dev/zero.
@ -92,14 +92,14 @@ pub struct ZeroReader;
impl Reader for ZeroReader {
#[inline]
fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<uint> {
buf.set_memory(0);
Ok(buf.len())
}
}
impl Buffer for ZeroReader {
fn fill_buf<'a>(&'a mut self) -> io::IoResult<&'a [u8]> {
fn fill_buf<'a>(&'a mut self) -> old_io::IoResult<&'a [u8]> {
static DATA: [u8; 64] = [0; 64];
Ok(DATA.as_slice())
}
@ -113,14 +113,14 @@ pub struct NullReader;
impl Reader for NullReader {
#[inline]
fn read(&mut self, _buf: &mut [u8]) -> io::IoResult<uint> {
Err(io::standard_error(io::EndOfFile))
fn read(&mut self, _buf: &mut [u8]) -> old_io::IoResult<uint> {
Err(old_io::standard_error(old_io::EndOfFile))
}
}
impl Buffer for NullReader {
fn fill_buf<'a>(&'a mut self) -> io::IoResult<&'a [u8]> {
Err(io::standard_error(io::EndOfFile))
fn fill_buf<'a>(&'a mut self) -> old_io::IoResult<&'a [u8]> {
Err(old_io::standard_error(old_io::EndOfFile))
}
fn consume(&mut self, _amt: uint) {}
}
@ -143,7 +143,7 @@ impl<W> MultiWriter<W> where W: Writer {
impl<W> Writer for MultiWriter<W> where W: Writer {
#[inline]
fn write(&mut self, buf: &[u8]) -> io::IoResult<()> {
fn write(&mut self, buf: &[u8]) -> old_io::IoResult<()> {
for writer in self.writers.iter_mut() {
try!(writer.write(buf));
}
@ -151,7 +151,7 @@ impl<W> Writer for MultiWriter<W> where W: Writer {
}
#[inline]
fn flush(&mut self) -> io::IoResult<()> {
fn flush(&mut self) -> old_io::IoResult<()> {
for writer in self.writers.iter_mut() {
try!(writer.flush());
}
@ -176,13 +176,13 @@ impl<R: Reader, I: Iterator<Item=R>> ChainedReader<I, R> {
}
impl<R: Reader, I: Iterator<Item=R>> Reader for ChainedReader<I, R> {
fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<uint> {
loop {
let err = match self.cur_reader {
Some(ref mut r) => {
match r.read(buf) {
Ok(len) => return Ok(len),
Err(ref e) if e.kind == io::EndOfFile => None,
Err(ref e) if e.kind == old_io::EndOfFile => None,
Err(e) => Some(e),
}
}
@ -194,7 +194,7 @@ impl<R: Reader, I: Iterator<Item=R>> Reader for ChainedReader<I, R> {
None => {}
}
}
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
}
}
@ -221,7 +221,7 @@ impl<R: Reader, W: Writer> TeeReader<R, W> {
}
impl<R: Reader, W: Writer> Reader for TeeReader<R, W> {
fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<uint> {
self.reader.read(buf).and_then(|len| {
self.writer.write(&mut buf[..len]).map(|()| len)
})
@ -229,12 +229,12 @@ impl<R: Reader, W: Writer> Reader for TeeReader<R, W> {
}
/// Copies all data from a `Reader` to a `Writer`.
pub fn copy<R: Reader, W: Writer>(r: &mut R, w: &mut W) -> io::IoResult<()> {
pub fn copy<R: Reader, W: Writer>(r: &mut R, w: &mut W) -> old_io::IoResult<()> {
let mut buf = [0; super::DEFAULT_BUF_SIZE];
loop {
let len = match r.read(&mut buf) {
Ok(len) => len,
Err(ref e) if e.kind == io::EndOfFile => return Ok(()),
Err(ref e) if e.kind == old_io::EndOfFile => return Ok(()),
Err(e) => return Err(e),
};
try!(w.write(&buf[..len]));
@ -257,14 +257,14 @@ impl<T: Iterator<Item=u8>> IterReader<T> {
impl<T: Iterator<Item=u8>> Reader for IterReader<T> {
#[inline]
fn read(&mut self, buf: &mut [u8]) -> io::IoResult<uint> {
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<uint> {
let mut len = 0;
for (slot, elt) in buf.iter_mut().zip(self.iter.by_ref()) {
*slot = elt;
len += 1;
}
if len == 0 && buf.len() != 0 {
Err(io::standard_error(io::EndOfFile))
Err(old_io::standard_error(old_io::EndOfFile))
} else {
Ok(len)
}
@ -275,7 +275,7 @@ impl<T: Iterator<Item=u8>> Reader for IterReader<T> {
mod test {
use prelude::v1::*;
use io::{MemReader, ByRefReader};
use old_io::{MemReader, ByRefReader};
use io;
use super::*;
@ -347,12 +347,12 @@ mod test {
struct TestWriter;
impl Writer for TestWriter {
fn write(&mut self, _buf: &[u8]) -> io::IoResult<()> {
fn write(&mut self, _buf: &[u8]) -> old_io::IoResult<()> {
unsafe { writes += 1 }
Ok(())
}
fn flush(&mut self) -> io::IoResult<()> {
fn flush(&mut self) -> old_io::IoResult<()> {
unsafe { flushes += 1 }
Ok(())
}
@ -400,7 +400,7 @@ mod test {
let mut r = LimitReader::new(r.by_ref(), 3);
assert_eq!(r.read_line(), Ok("012".to_string()));
assert_eq!(r.limit(), 0);
assert_eq!(r.read_line().err().unwrap().kind, io::EndOfFile);
assert_eq!(r.read_line().err().unwrap().kind, old_io::EndOfFile);
}
{
let mut r = LimitReader::new(r.by_ref(), 9);
@ -432,7 +432,7 @@ mod test {
assert_eq!(len, 2);
assert!(buf == [6, 7, 5]);
assert_eq!(r.read(&mut buf).unwrap_err().kind, io::EndOfFile);
assert_eq!(r.read(&mut buf).unwrap_err().kind, old_io::EndOfFile);
}
#[test]