diff --git a/src/jedParser.cpp b/src/jedParser.cpp index 7e10599..421f2be 100644 --- a/src/jedParser.cpp +++ b/src/jedParser.cpp @@ -15,6 +15,10 @@ * along with this program. If not, see . */ +/* + * http://k1.spdns.de/Develop/Projects/GalAsm/info/galer/jedecfile.html + */ + #include #include #include @@ -44,6 +48,23 @@ JedParser::JedParser(string filename, bool verbose): { } +/*! + * \brief read a line with '\r''\n' or '\n' terminaison + * check if last char is '\r' + * \return the line without [\r]\n + */ +string JedParser::readline() +{ + string buffer; + std::getline(_fd, buffer, '\n'); + if (buffer.size() != 0) { + /* if '\r' is present -> drop */ + if (buffer[buffer.size() -1] == '\r') + buffer.pop_back(); + } + return buffer; +} + /* fill a vector with consecutive lines until '*' */ vector JedParser::readJEDLine() @@ -53,7 +74,7 @@ vector JedParser::readJEDLine() bool inLine = true; do { - std::getline(_fd, buffer, '\n'); + buffer = readline(); if (buffer.size() == 0) break; @@ -191,7 +212,7 @@ int JedParser::parse() _fd.seekg(0, _fd.beg); /* First line must STX (0x02) */ - std::getline(_fd, content, '\n'); + content = readline(); if (content[0] != 0x02) { printf("wrong file\n"); return EXIT_FAILURE; diff --git a/src/jedParser.hpp b/src/jedParser.hpp index 04482d5..422742b 100644 --- a/src/jedParser.hpp +++ b/src/jedParser.hpp @@ -50,6 +50,7 @@ class JedParser: public ConfigBitstreamParser { uint64_t featuresRow() {return _featuresRow;} private: + std::string readline(); std::vectorreadJEDLine(); void buildDataArray(const std::string &content, struct jed_data &jed); void parseEField(const std::vector content);