From 3b929513926038c6135306b878d1d846101afd60 Mon Sep 17 00:00:00 2001 From: Cirilo Bernardo Date: Wed, 22 Feb 2017 18:46:34 +1100 Subject: [PATCH 1/2] Fixed IGES/STEP filetype code to support non-ASCII path names --- plugins/3d/oce/loadmodel.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/3d/oce/loadmodel.cpp b/plugins/3d/oce/loadmodel.cpp index 720fa68fd..9d581f363 100644 --- a/plugins/3d/oce/loadmodel.cpp +++ b/plugins/3d/oce/loadmodel.cpp @@ -28,10 +28,11 @@ #include #include #include +#include +#include #if ( defined( DEBUG_OCE ) && DEBUG_OCE > 3 ) #include -#include #endif #include @@ -268,16 +269,15 @@ enum FormatType FormatType fileType( const char* aFileName ) { - std::ifstream ifile; - ifile.open( aFileName ); + wxString fname( wxString::FromUTF8Unchecked( aFileName ) ); + wxFileInputStream ifile( fname ); - if( !ifile.is_open() ) + if( !ifile.IsOk() ) return FMT_NONE; char iline[82]; memset( iline, 0, 82 ); - ifile.getline( iline, 82 ); - ifile.close(); + ifile.Read( iline, 82 ); iline[81] = 0; // ensure NULL termination when string is too long // check for STEP in Part 21 format -- 2.11.0 From 612be9c647528b39513c8b2470e4bb221a007c5e Mon Sep 17 00:00:00 2001 From: Cirilo Bernardo Date: Wed, 22 Feb 2017 18:47:31 +1100 Subject: [PATCH 2/2] Fixed S3D_CACHE::getSHA1 to work with non-ASCII file paths. Fixed Bug#1659027 - uppercase file extensions now work in Windows. --- 3d-viewer/3d_cache/3d_cache.cpp | 4 ++++ 3d-viewer/3d_cache/3d_plugin_manager.cpp | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/3d-viewer/3d_cache/3d_cache.cpp b/3d-viewer/3d_cache/3d_cache.cpp index 3c0f5a7fd..46d9acadf 100644 --- a/3d-viewer/3d_cache/3d_cache.cpp +++ b/3d-viewer/3d_cache/3d_cache.cpp @@ -390,7 +390,11 @@ bool S3D_CACHE::getSHA1( const wxString& aFileName, unsigned char* aSHA1Sum ) return false; } + #ifdef WIN32 + FILE* fp = _wfopen( aFileName.wc_str(), L"rb" ); + #else FILE* fp = fopen( aFileName.ToUTF8(), "rb" ); + #endif if( NULL == fp ) return false; diff --git a/3d-viewer/3d_cache/3d_plugin_manager.cpp b/3d-viewer/3d_cache/3d_plugin_manager.cpp index c9c480175..fbc02fa69 100644 --- a/3d-viewer/3d_cache/3d_plugin_manager.cpp +++ b/3d-viewer/3d_cache/3d_plugin_manager.cpp @@ -467,6 +467,12 @@ SCENEGRAPH* S3D_PLUGIN_MANAGER::Load3DModel( const wxString& aFileName, std::str wxFileName raw( aFileName ); wxString ext = raw.GetExt(); + #ifdef WIN32 + // note: plugins only have a lowercase filter within Windows; including an uppercase + // filter will result in duplicate file entries and should be avoided. + ext.LowerCase(); + #endif + std::pair < std::multimap< const wxString, KICAD_PLUGIN_LDR_3D* >::iterator, std::multimap< const wxString, KICAD_PLUGIN_LDR_3D* >::iterator > items; -- 2.11.0