bool WSaveSymbols( WAccelEditInfo *einfo, WRHashTable *table, char **file_name, bool prompt ) { char *name; WGetFileStruct gf; bool ok; if( einfo == NULL || table == NULL || file_name == NULL ) { return( FALSE ); } if( WRIsDefaultHashTable( table ) ) { return( TRUE ); } ok = true; WSetWaitCursor( einfo->win, TRUE ); if( prompt || *file_name == NULL ) { gf.file_name = *file_name; gf.title = AllocRCString( W_SAVESYMTITLE ); gf.filter = AllocRCString( W_SYMFILTER ); WMassageFilter( gf.filter ); name = WGetSaveFileName( einfo->win, &gf ); if( gf.title != NULL ) { FreeRCString( gf.title ); } if( gf.filter != NULL ) { FreeRCString( gf.filter ); } ok = (name != NULL); if( ok ) { if( *file_name != NULL ) { WRMemFree( *file_name ); } *file_name = name; } } else { name = *file_name; } if( ok ) { ok = WRWriteSymbolsToFile( table, name ); } if( ok ) { WRMakeHashTableClean( table ); } WSetWaitCursor( einfo->win, FALSE ); return( ok ); }
bool WRESaveSymbols( WRHashTable *table, char **file_name, bool prompt ) { char *name; WREGetFileStruct gf; bool ok; if( table == NULL || file_name == NULL ) { return( FALSE ); } if( WRIsDefaultHashTable( table ) ) { return( TRUE ); } ok = true; WRESetStatusText( NULL, "", FALSE ); WRESetStatusByID( WRE_SAVEINGSYMBOLS, -1 ); if( prompt || *file_name == NULL ) { gf.file_name = *file_name; gf.title = WRESymSaveTitle; gf.filter = WRESymSaveFilter; gf.save_ext = FALSE; name = WREGetSaveFileName( &gf ); ok = (name != NULL); if( ok ) { if( *file_name != NULL ) { WRMemFree( *file_name ); } *file_name = name; } } else { name = *file_name; } if( ok ) { ok = WRWriteSymbolsToFile( table, name ); } if( ok ) { WRMakeHashTableClean( table ); } WRESetStatusReadyText(); return( ok ); }