Remove inline comment support in multilingual INI parser

This commit is contained in:
Arkshine 2016-02-01 22:34:33 +01:00
parent 664c25bdac
commit ae4368a3ca
4 changed files with 38 additions and 32 deletions

View File

@ -490,7 +490,7 @@ int CLangMngr::MergeDefinitionFile(const char *file)
Data.currentFile = file; Data.currentFile = file;
unsigned int line, col; unsigned int line, col;
bool result = textparsers->ParseFile_INI(file, static_cast<ITextListener_INI*>(this), &line, &col); bool result = textparsers->ParseFile_INI(file, static_cast<ITextListener_INI*>(this), &line, &col, false);
if (!result) if (!result)
{ {

View File

@ -778,7 +778,7 @@ failed:
* INI parser * INI parser
*/ */
bool TextParsers::ParseFile_INI(const char *file, ITextListener_INI *ini_listener, unsigned int *line, unsigned int *col) bool TextParsers::ParseFile_INI(const char *file, ITextListener_INI *ini_listener, unsigned int *line, unsigned int *col, bool inline_comment)
{ {
FILE *fp = fopen(file, "rt"); FILE *fp = fopen(file, "rt");
unsigned int curline = 0; unsigned int curline = 0;
@ -842,6 +842,8 @@ bool TextParsers::ParseFile_INI(const char *file, ITextListener_INI *ini_listene
continue; continue;
} }
if (inline_comment)
{
/* Now search for comment characters */ /* Now search for comment characters */
in_quote = false; in_quote = false;
save_ptr = ptr; save_ptr = ptr;
@ -882,6 +884,7 @@ bool TextParsers::ParseFile_INI(const char *file, ITextListener_INI *ini_listene
} }
ptr = save_ptr; ptr = save_ptr;
}
/* Lastly, strip ending whitespace off */ /* Lastly, strip ending whitespace off */
for (size_t i = len - 1; i<len; i--) for (size_t i = len - 1; i<len; i--)

View File

@ -52,7 +52,8 @@ public:
bool ParseFile_INI(const char *file, bool ParseFile_INI(const char *file,
ITextListener_INI *ini_listener, ITextListener_INI *ini_listener,
unsigned int *line, unsigned int *line,
unsigned int *col); unsigned int *col,
bool inline_comment);
SMCError ParseFile_SMC(const char *file, SMCError ParseFile_SMC(const char *file,
ITextListener_SMC *smc_listener, ITextListener_SMC *smc_listener,

View File

@ -351,12 +351,14 @@
* @param ini_listener Event handler for reading file. * @param ini_listener Event handler for reading file.
* @param line If non-NULL, will contain last line parsed (0 if file could not be opened). * @param line If non-NULL, will contain last line parsed (0 if file could not be opened).
* @param col If non-NULL, will contain last column parsed (undefined if file could not be opened). * @param col If non-NULL, will contain last column parsed (undefined if file could not be opened).
* @param inline_comment Whether inline comment is allowed.
* @return True if parsing succeeded, false if file couldn't be opened or there was a syntax error. * @return True if parsing succeeded, false if file couldn't be opened or there was a syntax error.
*/ */
virtual bool ParseFile_INI(const char *file, virtual bool ParseFile_INI(const char *file,
ITextListener_INI *ini_listener, ITextListener_INI *ini_listener,
unsigned int *line, unsigned int *line,
unsigned int *col) =0; unsigned int *col,
bool inline_comment = true) =0;
/** /**
* @brief Parses an SMC-format text file. * @brief Parses an SMC-format text file.