From 77e95d637c0bb51522f547e2f719e9c997c59ed9 Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Sat, 2 May 2020 09:08:42 +0200 Subject: [PATCH] jedParser: don't always consider STX as first char --- src/jedParser.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/jedParser.cpp b/src/jedParser.cpp index 421f2be..bfc7eb5 100644 --- a/src/jedParser.cpp +++ b/src/jedParser.cpp @@ -211,13 +211,30 @@ int JedParser::parse() _fd.seekg(0, _fd.beg); - /* First line must STX (0x02) */ - content = readline(); - if (content[0] != 0x02) { - printf("wrong file\n"); + /* JED file may have some ASCII line before STX (0x02) + * read until STX or EOF + */ + char c; + do { + _fd.read(&c, 1); + } while (_fd && c != 0x02); + + /* if file descriptor == EOF + * return an ERROR + */ + if (!_fd) { + cerr << "Error: STX not found: wrong file" << endl; return EXIT_FAILURE; } + /* the line starting with STX may contains + * others informations */ + _fd.read(&c, 1); + if (c != '*') // something to process + _fd.seekg(-1, _fd.cur); + else // STX in a dedicated line + content = readline(); + /* read full content * JED file end fix ETX (0x03) + file checksum + \n */ @@ -242,7 +259,7 @@ int JedParser::parse() _pin_count = count; break; default: - cerr << "Error for 'Q' unknown qualifier " << lines[1] << endl; + cerr << "Error for 'Q' unknown qualifier " << lines[0] << endl; return EXIT_FAILURE; } break;