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);