diff --git a/checktestdata.cc b/checktestdata.cc index 2c5109d..88dd5c9 100644 --- a/checktestdata.cc +++ b/checktestdata.cc @@ -149,6 +149,7 @@ int main(int argc, char **argv) fstream fdata; if ( argc>optind+1 ) { char *datafile = argv[optind+1]; + if ( datafile==string("-") ) goto use_stdin; if ( filesystem::is_directory(datafile) ) { cerr << "Expected a file instead of a directory: '" << datafile << "'.\n"; exit(exit_failure); @@ -160,6 +161,7 @@ int main(int argc, char **argv) exit(exit_failure); } } + use_stdin: iostream& data = fdata.is_open() ? static_cast(fdata) : (generate ? static_cast(cout) : static_cast(cin) ); diff --git a/libchecktestdata.cc b/libchecktestdata.cc index d9105e2..4e28c24 100644 --- a/libchecktestdata.cc +++ b/libchecktestdata.cc @@ -164,6 +164,14 @@ void readtestdata(istream &in) data = databuffer(std::move(buffer)); return; } + } else { + in.clear(); + stringstream ss; + ss << in.rdbuf(); + if (!in.fail()) { + data = databuffer(ss.str()); + return; + } } cerr << "error reading testdata" << endl;