00001 00021 #include "ver.h" 00022 00026 00030 00042 int Ver_ParseSkipComments( Ver_Man_t * pMan ) 00043 { 00044 Ver_Stream_t * p = pMan->pReader; 00045 char Symbol; 00046 // skip spaces 00047 Ver_StreamSkipChars( p, " \t\n\r" ); 00048 if ( !Ver_StreamIsOkey(pMan->pReader) ) 00049 return 1; 00050 // read the first symbol 00051 Symbol = Ver_StreamScanChar( p ); 00052 if ( Symbol != '/' ) 00053 return 1; 00054 Ver_StreamPopChar( p ); 00055 // read the second symbol 00056 Symbol = Ver_StreamScanChar( p ); 00057 if ( Symbol == '/' ) 00058 { // skip till the end of line 00059 Ver_StreamSkipToChars( p, "\n" ); 00060 return Ver_ParseSkipComments( pMan ); 00061 } 00062 if ( Symbol == '*' ) 00063 { // skip till the next occurance of */ 00064 Ver_StreamPopChar( p ); 00065 do { 00066 Ver_StreamSkipToChars( p, "*" ); 00067 Ver_StreamPopChar( p ); 00068 } while ( Ver_StreamScanChar( p ) != '/' ); 00069 Ver_StreamPopChar( p ); 00070 return Ver_ParseSkipComments( pMan ); 00071 } 00072 sprintf( pMan->sError, "Cannot parse after symbol \"/\"." ); 00073 Ver_ParsePrintErrorMessage( pMan ); 00074 return 0; 00075 } 00076 00088 char * Ver_ParseGetName( Ver_Man_t * pMan ) 00089 { 00090 Ver_Stream_t * p = pMan->pReader; 00091 char Symbol; 00092 char * pWord; 00093 pMan->fNameLast = 0; 00094 if ( !Ver_StreamIsOkey(p) ) 00095 return NULL; 00096 if ( !Ver_ParseSkipComments( pMan ) ) 00097 return NULL; 00098 Symbol = Ver_StreamScanChar( p ); 00099 if ( Symbol == '\\' ) 00100 { 00101 pMan->fNameLast = 1; 00102 Ver_StreamPopChar( p ); 00103 pWord = Ver_StreamGetWord( p, " \r\n" ); 00104 } 00105 else 00106 pWord = Ver_StreamGetWord( p, " \t\n\r(),;" ); 00107 if ( !Ver_ParseSkipComments( pMan ) ) 00108 return NULL; 00109 return pWord; 00110 } 00111 00112 00116 00117