From d9bbcb5dc9acba57ac39a9700f531add29dd761f Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Tue, 28 Jan 2014 17:45:44 +0800 Subject: Handling C++-style comments in Liberty parser. --- src/map/scl/sclLiberty.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/map/scl/sclLiberty.c b/src/map/scl/sclLiberty.c index d86e154d..e128b515 100644 --- a/src/map/scl/sclLiberty.c +++ b/src/map/scl/sclLiberty.c @@ -173,6 +173,7 @@ int Scl_LibertyCountItems( char * pBeg, char * pEnd ) return Counter; } // removes C-style comments +/* void Scl_LibertyWipeOutComments( char * pBeg, char * pEnd ) { char * pCur, * pStart; @@ -186,6 +187,31 @@ void Scl_LibertyWipeOutComments( char * pBeg, char * pEnd ) break; } } +*/ +void Scl_LibertyWipeOutComments( char * pBeg, char * pEnd ) +{ + char * pCur, * pStart; + for ( pCur = pBeg; pCur < pEnd-1; pCur++ ) + if ( pCur[0] == '/' && pCur[1] == '*' ) + { + for ( pStart = pCur; pCur < pEnd-1; pCur++ ) + if ( pCur[0] == '*' && pCur[1] == '/' ) + { + for ( ; pStart < pCur + 2; pStart++ ) + if ( *pStart != '\n' ) *pStart = ' '; + break; + } + } + else if ( pCur[0] == '/' && pCur[1] == '/' ) + { + for ( pStart = pCur; pCur < pEnd; pCur++ ) + if ( pCur[0] == '\n' || pCur == pEnd-1 ) + { + for ( ; pStart < pCur; pStart++ ) *pStart = ' '; + break; + } + } +} static inline int Scl_LibertyCharIsSpace( char c ) { return c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\\'; -- cgit v1.2.3