Ejemplo n.º 1
0
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 );
}
Ejemplo n.º 2
0
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;
}