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 ); }
int handleCommandConfigLine(char *line, struct Kommando *command) { char tmp[100], *pos; int group, langId; switch(line[0]) { case 'N': if((pos = strchr(line, '=')) == NULL) { printf("Can't find equals sign: '%s'\n", line); return 0; } *pos = '\0'; langId = FindLanguageId(&line[1]); *pos = '='; if(langId == -1) { printf("Unknown language: %s\n", line); return 0; } if(!populateLangCommand(&command->langCmd[langId], line)) { return 0; } break; case '#' : if(!GetLongCfgValue(line, &command->nummer)) { return 0; } break; case 'A' : if(!GetStringCfgValue(line, tmp, 9)) { return 0; } command->argument = tmp[0] == '#' ? KOMARGNUM : KOMARGCHAR; break; case 'S' : if(!GetCharCfgValue(line, &command->status)) { return 0; } break; case 'L' : if(!GetLongCfgValue(line, &command->minlogg)) { return 0; } break; case 'D' : if(!GetLongCfgValue(line, &command->mindays)) { return 0; } break; case 'X' : if(!GetStringCfgValue(line, command->losen, 19)) { return 0; } break; case 'V' : if(!GetStringCfgValue(line, tmp, 9)) { return 0; } command->secret = (tmp[0]=='N' || tmp[0]=='n') ? TRUE : FALSE; break; case 'B' : if(!GetStringCfgValue(line, command->beskr, 69)) { return 0; } break; case 'W' : if(!GetStringCfgValue(line, command->vilkainfo, 49)) { return 0; } break; case 'F' : if(!GetStringCfgValue(line, command->logstr, 49)) { return 0; } break; case '(' : if(!GetLongCfgValue(line, &command->before)) { return 0; } break; case ')' : if(!GetLongCfgValue(line, &command->after)) { return 0; } break; case 'G' : if(!GetStringCfgValue(line, tmp, 99)) { return 0; } group = parsegrupp(tmp); if(group == -1) { printf("Unknown group name: %s\n", tmp); return 0; } BAMSET((char *)&command->grupper, group); break; default: printf("Invalid line: %s\n", line); return 0; } return 1; }