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 */
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 ); }