Example #1
0
void SemOS2AddStrToStringTable( FullStringTable *currtable,
                                 uint_16 stringid, char *string )
/***************************************************************/
{
    FullStringTableBlock        *currblock;
    uint_16                     blocknum;
    uint_16                     stringnum;

    blocknum = stringid >> 4;
    stringnum = stringid & 0x000f;

    currblock = findStringTableBlock( currtable, blocknum );
    if( currblock != NULL ) {
        if( currblock->Block.String[stringnum] != NULL ) {
            /* duplicate stringid */
            RcError( ERR_DUPLICATE_STRING_CONST, stringid );
            ErrorHasOccured = true;
        }
    } else {
        currblock = newStringTableBlock();
        currblock->BlockNum = blocknum;
        ResAddLLItemAtEnd( (void **)&(currtable->Head), (void **)&(currtable->Tail), currblock );
    }

    currblock->Block.String[stringnum] = WResIDNameFromStr( string );
} /* SemOS2AddStrToStringTable */
Example #2
0
WStringBlock *WInsertStringData( WStringEditInfo *einfo, uint_16 id,
                                 char *text, char *symbol, Bool *replace )
{
    Bool                ok;
    WStringBlock        *block;

    ok = (einfo != NULL && einfo->tbl != NULL && einfo->win != NULL && replace != NULL);

    if( ok ) {
        *replace = FALSE;
        block = WGetOrMakeStringBlock( einfo->tbl, id );
        ok = (block != NULL);
    }

    if( ok ) {
        if( block->block.String[id & 0xf] == NULL ) {
            block->block.String[id & 0xf] = WResIDNameFromStr( text );
            block->symbol[id & 0xf] = WStrDup( symbol );
            einfo->info->modified = TRUE;
        } else {
            if( WQueryReplaceString( einfo->edit_dlg ) ) {
                WMemFree( block->block.String[id & 0xf] );
                block->block.String[id & 0xf] = WResIDNameFromStr( text );
                block->symbol[id & 0xf] = WStrDup( symbol );
                einfo->info->modified = TRUE;
                *replace = TRUE;
            } else {
                if( WIsBlockEmpty( block ) ) {
                    WRemoveStringBlock( einfo->tbl, block );
                }
                ok = FALSE;
            }
        }
    }

    if( !ok ) {
        return( NULL );
    }

    return( block );
}