// // Parse the group information from the cfg file. // bool PanelGroupManager::cfgParseComment(const char *comment, const char *filename, int lineno) { char *p, *c, name[128]; int inst; if (strncmp(comment," panel group",12)) return false; p = (char *) strchr(comment,'"'); if (!p) { ErrorMessage("Bad panel group name (%s, line %d)",filename,lineno); return false; } c = p + 1; p = strchr(c,'"'); if (!p) { ErrorMessage("Bad panel group name (%s, line %d)",filename,lineno); return false; } *p = '\0'; strcpy(name,c); if (!this->createPanelGroup(name)) { ErrorMessage("Can't create panel group named '%s'",name); return false; } *p = '"'; // Put back the " p++; SkipWhiteSpace(p); while(*p) { inst = atoi(p) + 1; if (!this->addGroupMember(name, inst)) { ErrorMessage("Can't add panel instance %d to group '%s'",inst,name); return false; } FindWhiteSpace(p); // Skip over the number or to end-of-string SkipWhiteSpace(p); // Skip to the next number or end-of-string } return true; }
BOOL ReadTxtAndOutputHdr( PCHAR pszTxtFile, FILE *fhTxt, FILE *fhHdr ) { ULONG LanguageId; PMESSAGE_INFO MessageInfo; PCHAR s, s1, TextPtr, SyntaxPhrase, MsgName, MsgComment; ULONG MsgId, MsgLang; BOOL CopyComments; BOOL Result = TRUE; int LineNumber; int State; MessageInfo = NULL; LineNumber = 0; CopyComments = FALSE; State = LOOKING_FOR_MSGID; while (fgets( LineBuffer, sizeof( LineBuffer ), fhTxt )) { LineNumber += 1; if (!(s = SkipWhiteSpace( LineBuffer ))) { if (LineNumber > 1) { fprintf( fhHdr, "\r\n" ); } CopyComments = TRUE; continue; } tryagain: if (*s == ';') { if (CopyComments) { if (State == LOOKING_FOR_MSGID) { State = PROCESSING_COMMENTS; fprintf( fhHdr, "//\r\n" ); } if (State == PROCESSING_COMMENTS) { fprintf( fhHdr, "//%s", s+1 ); } } else { fprintf( fhHdr, "//%s", s+1 ); } continue; } if (State == PROCESSING_COMMENTS) { State = LOOKING_FOR_MSGID; fprintf( fhHdr, "//\r\n" ); } if (State == LOOKING_FOR_MSGID) { SyntaxPhrase = "MessageId="; if (_strnicmp( s, SyntaxPhrase, strlen( SyntaxPhrase ) )) { syntaxerr: fprintf( stderr, "%s(%d) : error : invalid syntax - %s\n", pszTxtFile, LineNumber, SyntaxPhrase ); Result = FALSE; } s += strlen( SyntaxPhrase ); if (s1 = FindWhiteSpace( s )) { *s1++ = '\0'; } SyntaxPhrase = "MessageId=value"; if (!CharToInteger( s, 0, &MsgId )) { goto syntaxerr; } SyntaxPhrase = "SymbolicName="; if (!(s = SkipWhiteSpace( s1 ))) { goto syntaxerr; } if (_strnicmp( s, SyntaxPhrase, strlen( SyntaxPhrase ) )) { goto syntaxerr; } MsgName = s + strlen( SyntaxPhrase ); if (s = FindWhiteSpace( MsgName )) { *s++ = '\0'; MsgComment = SkipWhiteSpace( s ); } MessageInfo = AddMessageInfo( MsgId, MsgName ); fprintf( fhHdr, "//\r\n// MessageId: %s\r\n//\r\n// MessageText:\r\n//\r\n", MessageInfo->Name ); State = LOOKING_FOR_LANGUAGE; } else if (State == LOOKING_FOR_LANGUAGE) { SyntaxPhrase = "Language="; if (_strnicmp( s, SyntaxPhrase, strlen( SyntaxPhrase ) )) { State = LOOKING_FOR_MSGID; goto tryagain; } s += strlen( SyntaxPhrase ); if ((LanguageId = FindLanguageId( s ))) { State = LOOKING_FOR_PERIOD; TextPtr = TextBuffer; *TextPtr = '\0'; } else { goto syntaxerr; } } else if (State == LOOKING_FOR_PERIOD) { if (!strcmp( s, ".\r\n" )) { State = LOOKING_FOR_LANGUAGE; *s = '\0'; if (!AddMessageText( MessageInfo, LanguageId, TextBuffer )) { SyntaxPhrase = "Message Text"; goto syntaxerr; } } else { strcpy( TextPtr, s ); TextPtr += strlen( s ); } if (LanguageId == LANG_ENGLISH) { if (State == LOOKING_FOR_PERIOD) { fprintf( fhHdr, "// %s", s ); } else { fprintf( fhHdr, "//\r\n#define %-32s %5ld %s\r\n\r\n", MessageInfo->Name, MessageInfo->Id, MsgComment ? MsgComment : "" ); } } } } return( Result ); }