diff --git a/Applications/FileIO/GocadIO/GocadAsciiReader.cpp b/Applications/FileIO/GocadIO/GocadAsciiReader.cpp index b11c61e17d84ff7885e2ac063be801244bfa7776..8bd2cd2b749fd9eb4dbd8d1426659fad226a437d 100644 --- a/Applications/FileIO/GocadIO/GocadAsciiReader.cpp +++ b/Applications/FileIO/GocadIO/GocadAsciiReader.cpp @@ -118,6 +118,26 @@ DataType datasetFound(std::ifstream& in) } return DataType::UNDEFINED; } +/// Checks if current line is a designated keyword for a GoCAD data set +void checkLineEndings(std::string const& file_name) +{ + #ifndef _WIN32 + std::ifstream in(file_name); + if (in.is_open()) + { + std::string line; + std::getline(in, line); + if (line.back() == '\r') + { + OGS_FATAL( + "Error in input file: {:s}. The line endings are in windows " + "format. To read this file under UNIX, transform the input " + "file to unix style line endings (e.g. dos2unix).", + file_name); + } + } + #endif _WIN32 +} /// Parses the HEADER section (everything except the name is ignored right now) bool parseHeader(std::ifstream& in, std::string& mesh_name) @@ -611,6 +631,8 @@ bool readFile(std::string const& file_name, return false; } + checkLineEndings(file_name); + DataType type; while ((type = datasetFound(in)) != DataType::UNDEFINED) { diff --git a/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp b/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp index 7f90c9886b74fab75d48578b23e533ea9886a310..eac31c6a5a87fe1e41da179a6f58b946e84c9007 100644 --- a/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp +++ b/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp @@ -53,8 +53,10 @@ int main(int argc, char* argv[]) cmd.add(output_arg); TCLAP::ValueArg<std::string> input_arg( - "i", "input-file", "Gocad triangular surfaces file (*.ts)", true, "", - "filename.ts"); + "i", "input-file", + "Gocad triangular surfaces file (*.ts). Provide a file with unix file " + "endings under unix. Use dos2unix to convert. ", + true, "", "filename.ts"); cmd.add(input_arg); cmd.parse(argc, argv);