diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2016-11-03 00:44:53 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2016-11-03 13:47:43 +0300 |
commit | 7ce74ce206065c3af0035583330b3c773086f21c (patch) | |
tree | fc0fb1d9bd0037299f12a27f1f38ac5056634568 /tests | |
parent | cc8a2a1517cc3c55bdeb066a038868fb8c7f04d6 (diff) |
Invent auto_fd, make use of it in fdstreams and process
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fdstream/driver.cxx | 17 | ||||
-rw-r--r-- | tests/process/driver.cxx | 25 |
2 files changed, 21 insertions, 21 deletions
diff --git a/tests/fdstream/driver.cxx b/tests/fdstream/driver.cxx index f77e2d5..4d72284 100644 --- a/tests/fdstream/driver.cxx +++ b/tests/fdstream/driver.cxx @@ -14,6 +14,7 @@ #include <cassert> #include <sstream> #include <fstream> +#include <utility> // move() #include <iostream> #include <exception> @@ -134,8 +135,8 @@ main (int argc, const char* argv[]) cout.flush (); // @@ MINGW GCC 4.9 doesn't implement this_thread. If ifdstream - // non-blocking read will ever be implemented use Win32 Sleep() - // instead. + // non-blocking read will ever be implemented on Windows use Win32 + // Sleep() instead. // #ifndef _WIN32 this_thread::sleep_for (chrono::milliseconds (50)); @@ -250,7 +251,7 @@ main (int argc, const char* argv[]) to_file (f, "", fdopen_mode::truncate); { - ifdstream ifs (-1, ifdstream::badbit); + ifdstream ifs (ifdstream::badbit); ifs.open (f); string s; @@ -258,7 +259,7 @@ main (int argc, const char* argv[]) } { - ifdstream ifs (-1, fdstream_mode::text, ifdstream::badbit); + ifdstream ifs (nullfd, fdstream_mode::text, ifdstream::badbit); ifs.open (f); string s; @@ -268,7 +269,7 @@ main (int argc, const char* argv[]) // Check creating unopened ofdstream with a non-default exception mask. // { - ofdstream ofs (-1, ifdstream::badbit); + ofdstream ofs (ifdstream::badbit); ofs.open (f); istringstream is; @@ -277,7 +278,7 @@ main (int argc, const char* argv[]) } { - ofdstream ofs (-1, fdstream_mode::binary, ifdstream::badbit); + ofdstream ofs (nullfd, fdstream_mode::binary, ifdstream::badbit); ofs.open (f); istringstream is; @@ -406,8 +407,8 @@ main (int argc, const char* argv[]) const char* args[] = {argv[0], "-c", nullptr}; process pr (args, -1, -1); - ofdstream os (pr.out_fd); - ifdstream is (pr.in_ofd, fdstream_mode::non_blocking); + ofdstream os (move (pr.out_fd)); + ifdstream is (move (pr.in_ofd), fdstream_mode::non_blocking); const string s ( "0123456789\nABCDEFGHIJKLMNOPQRSTUVWXYZ\nabcdefghijklmnopqrstuvwxyz"); diff --git a/tests/process/driver.cxx b/tests/process/driver.cxx index d59b1a7..bc75cc2 100644 --- a/tests/process/driver.cxx +++ b/tests/process/driver.cxx @@ -65,15 +65,15 @@ exec (const path& p, bool s; r = !pr.try_wait (s); // Couldn't exit as waiting for the input. - auto bin_mode = [bin](int fd) -> int - { - if (bin) - fdmode (fd, fdstream_mode::binary); + auto bin_mode = [bin](auto_fd fd) -> auto_fd + { + if (bin) + fdmode (fd.get (), fdstream_mode::binary); - return fd; - }; + return fd; + }; - ofdstream os (bin_mode (pr.out_fd)); + ofdstream os (bin_mode (move (pr.out_fd))); copy (in.begin (), in.end (), ostream_iterator<char> (os)); os.close (); @@ -89,12 +89,11 @@ exec (const path& p, // overall pipeline looks like 'os -> pr -> pr2 -> pr3 -> is'. // process pr3 (cwd, args.data (), -1, -1, -2); - process pr2 (cwd, args.data (), pr, bin_mode (pr3.out_fd), -2); - bool cr (fdclose (pr3.out_fd)); - assert (cr); + process pr2 ( + cwd, args.data (), pr, bin_mode (move (pr3.out_fd)).get (), -2); - ifdstream is (bin_mode (pr3.in_ofd)); + ifdstream is (bin_mode (move (pr3.in_ofd))); o = vector<char> ( (istreambuf_iterator<char> (is)), istreambuf_iterator<char> ()); @@ -104,7 +103,7 @@ exec (const path& p, } else { - ifdstream is (bin_mode (pr.in_ofd)); + ifdstream is (bin_mode (move (pr.in_ofd))); o = vector<char> ( (istreambuf_iterator<char> (is)), istreambuf_iterator<char> ()); @@ -125,7 +124,7 @@ exec (const path& p, if (err && !out) { - ifdstream is (bin_mode (pr.in_efd)); + ifdstream is (bin_mode (move (pr.in_efd))); vector<char> e ((istreambuf_iterator<char> (is)), istreambuf_iterator<char> ()); |