Skip to content
Snippets Groups Projects
Commit c7920505 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

fix possible reading/writing from/to stdin/stdout

parent 0f63b81a
No related branches found
No related tags found
No related merge requests found
Pipeline #
...@@ -14,9 +14,15 @@ namespace cli { ...@@ -14,9 +14,15 @@ namespace cli {
   
namespace builtin { namespace builtin {
   
std::string ReadFile::read ( const std::string & data ) { std::string ReadFile::read ( const std::string & filename ) {
std::ifstream t ( data ); if ( filename == "-" ) {
return std::string ( ( std::istreambuf_iterator < char > ( t ) ), std::istreambuf_iterator < char > ( ) ); std::cin >> std::noskipws;
return std::string ( ( std::istreambuf_iterator < char > ( std::cin ) ), std::istreambuf_iterator < char > ( ) );
} else {
std::ifstream t ( filename );
t >> std::noskipws;
return std::string ( ( std::istreambuf_iterator < char > ( t ) ), std::istreambuf_iterator < char > ( ) );
}
} }
   
auto ReadFileString = registration::AbstractRegister < ReadFile, std::string, const std::string & > ( ReadFile::read ); auto ReadFileString = registration::AbstractRegister < ReadFile, std::string, const std::string & > ( ReadFile::read );
......
...@@ -14,7 +14,10 @@ namespace cli { ...@@ -14,7 +14,10 @@ namespace cli {
namespace builtin { namespace builtin {
   
void WriteFile::write ( const std::string & filename, const std::string & data ) { void WriteFile::write ( const std::string & filename, const std::string & data ) {
std::ofstream ( filename ) << data; if ( filename == "-" )
std::cout << data;
else
std::ofstream ( filename ) << data;
} }
   
auto WriteFileString = registration::AbstractRegister < WriteFile, void, const std::string &, const std::string & > ( WriteFile::write ); auto WriteFileString = registration::AbstractRegister < WriteFile, void, const std::string &, const std::string & > ( WriteFile::write );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment