From f5186da1e51cd48bf3e6d8b2ac82009bdde414bf Mon Sep 17 00:00:00 2001 From: Alex Shvartzkop Date: Wed, 12 Feb 2025 14:13:50 +0300 Subject: [PATCH] Fix loading old (2007) symbol cache library files. --- eeschema/dialogs/dialog_symbol_remap.cpp | 21 +++++++++++++++++++++ eeschema/symbol_library.cpp | 17 ++++++++++++----- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/eeschema/dialogs/dialog_symbol_remap.cpp b/eeschema/dialogs/dialog_symbol_remap.cpp index 4b23d6671b..a256412084 100644 --- a/eeschema/dialogs/dialog_symbol_remap.cpp +++ b/eeschema/dialogs/dialog_symbol_remap.cpp @@ -471,6 +471,27 @@ bool DIALOG_SYMBOL_REMAP::backupProject( REPORTER& aReporter ) srcFileName.GetFullPath() ); } + // Back up the old (2007) cache library. + srcFileName.SetPath( Prj().GetProjectPath() ); + srcFileName.SetName( Prj().GetProjectName() + wxS( ".cache" ) ); + srcFileName.SetExt( FILEEXT::LegacySymbolLibFileExtension ); + + destFileName = srcFileName; + destFileName.SetName( destFileName.GetName() + timeStamp ); + destFileName.AppendDir( backupFolder ); + + aReporter.Report( wxString::Format( _( "Backing up file '%s' to '%s'." ), + srcFileName.GetFullPath(), + destFileName.GetFullPath() ), + RPT_SEVERITY_INFO ); + + if( srcFileName.Exists() + && !wxCopyFile( srcFileName.GetFullPath(), destFileName.GetFullPath() ) ) + { + errorMsg += wxString::Format( _( "Failed to back up file '%s'.\n" ), + srcFileName.GetFullPath() ); + } + // Back up the rescue symbol library if it exists. srcFileName.SetName( Prj().GetProjectName() + wxS( "-rescue" ) ); destFileName.SetName( srcFileName.GetName() + timeStamp ); diff --git a/eeschema/symbol_library.cpp b/eeschema/symbol_library.cpp index 3ba33b4a28..9b58dfb562 100644 --- a/eeschema/symbol_library.cpp +++ b/eeschema/symbol_library.cpp @@ -484,13 +484,20 @@ void SYMBOL_LIBS::SetLibNamesAndPaths( PROJECT* aProject, const wxString& aPaths const wxString SYMBOL_LIBS::CacheName( const wxString& aFullProjectFilename ) { - wxFileName name = aFullProjectFilename; + wxFileName filename( aFullProjectFilename ); + wxString name = filename.GetName(); - name.SetName( name.GetName() + "-cache" ); - name.SetExt( FILEEXT::LegacySymbolLibFileExtension ); + filename.SetName( name + "-cache" ); + filename.SetExt( FILEEXT::LegacySymbolLibFileExtension ); - if( name.FileExists() ) - return name.GetFullPath(); + if( filename.FileExists() ) + return filename.GetFullPath(); + + // Try the old (2007) cache name + filename.SetName( name + ".cache" ); + + if( filename.FileExists() ) + return filename.GetFullPath(); return wxEmptyString; }