|
KiCad PCB EDA Suite
|
A wrapper around a wxFileName which is much more performant with a subset of the API. More...
#include <wx_filename.h>
Public Member Functions | |
| WX_FILENAME (const wxString &aPath, const wxString &aFilename) | |
| void | SetFullName (const wxString &aFileNameAndExtension) |
| void | SetPath (const wxString &aPath) |
| wxString | GetName () const |
| wxString | GetFullName () const |
| wxString | GetPath () const |
| wxString | GetFullPath () const |
| long long | GetTimestamp () |
Static Public Member Functions | |
| static void | ResolvePossibleSymlinks (wxFileName &aFilename) |
| static bool | SplitArchiveEntryName (const wxString &aEntryName, wxArrayString &aParts) |
| Split an untrusted archive entry name into its path components. | |
| static bool | IsSafeChildPath (const wxString &aChild) |
| Check that a child path is safe to append to a parent directory. | |
| static bool | ResolveArchiveEntryPath (const wxString &aDestDir, const wxString &aEntryName, wxFileName &aResult) |
| Resolve an untrusted archive entry name against the directory it is extracted into. | |
Private Member Functions | |
| void | resolve () |
Private Attributes | |
| wxFileName | m_fn |
| wxString | m_path |
| wxString | m_fullName |
A wrapper around a wxFileName which is much more performant with a subset of the API.
A wrapper around a wxFileName which avoids expensive calls to wxFileName::SplitPath() and string concatenations by caching the path and filename locally and only resolving the wxFileName when it has to.
Definition at line 45 of file wx_filename.h.
| WX_FILENAME::WX_FILENAME | ( | const wxString & | aPath, |
| const wxString & | aFilename ) |
Definition at line 26 of file wx_filename.cpp.
References m_fn, m_fullName, and m_path.
| wxString WX_FILENAME::GetFullName | ( | ) | const |
Definition at line 52 of file wx_filename.cpp.
References m_fullName.
Referenced by BOOST_AUTO_TEST_CASE().
| wxString WX_FILENAME::GetFullPath | ( | ) | const |
Definition at line 64 of file wx_filename.cpp.
References m_fullName, and m_path.
Referenced by BOOST_AUTO_TEST_CASE(), FP_CACHE::Load(), GPCB_FPL_CACHE::Load(), and FP_CACHE::Save().
| wxString WX_FILENAME::GetName | ( | ) | const |
Definition at line 45 of file wx_filename.cpp.
References m_fullName.
Referenced by BOOST_AUTO_TEST_CASE(), FP_CACHE::Load(), and GPCB_FPL_CACHE::Load().
| wxString WX_FILENAME::GetPath | ( | ) | const |
Definition at line 58 of file wx_filename.cpp.
References m_path.
Referenced by BOOST_AUTO_TEST_CASE().
| long long WX_FILENAME::GetTimestamp | ( | ) |
Definition at line 78 of file wx_filename.cpp.
References m_fn, and resolve().
Referenced by FP_CACHE::Save().
|
staticnodiscard |
Check that a child path is safe to append to a parent directory.
Rejects rather than sanitizes: an empty name, a name containing a path separator, or "." or ".." is not safe. A safe name is a single path component, so appending it to a directory cannot escape that directory.
| aChild | is the child path to check. |
Definition at line 160 of file wx_filename.cpp.
References splitSafeRelativePath().
Referenced by BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().
|
private |
Definition at line 70 of file wx_filename.cpp.
References m_fn, and m_fullName.
Referenced by GetTimestamp().
|
static |
Resolve an untrusted archive entry name against the directory it is extracted into.
If this function returns false, don't attempt to extract the given entry. Use the aResult parameter for the final destination to extract to otherwise.
| aDestDir | is the directory the archive is being extracted into. |
| aEntryName | is the raw, untrusted name read from the archive. |
| aResult | is set to the full path to write to when the call succeeds. |
Definition at line 168 of file wx_filename.cpp.
References SplitArchiveEntryName().
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), PCM_TASK_MANAGER::extract(), and PROJECT_ARCHIVER::Unarchive().
|
static |
Definition at line 89 of file wx_filename.cpp.
References TO_UTF8.
Referenced by PCB_IO_KICAD_SEXPR::FootprintSave(), DIALOG_EXPORT_ODBPP::GenerateODBPPFiles(), SCH_IO_LIB_CACHE::GetRealFile(), LIBRARY_TABLE::LIBRARY_TABLE(), LIBRARY_MANAGER::loadNestedTables(), DIALOG_EXPORT_2581::onOKClick(), parseLibTable(), PCB_EDIT_FRAME::SavePcbFile(), and SCH_EDIT_FRAME::saveSchematicFile().
| void WX_FILENAME::SetFullName | ( | const wxString & | aFileNameAndExtension | ) |
Definition at line 32 of file wx_filename.cpp.
References m_fullName.
Referenced by FP_CACHE::Load(), and GPCB_FPL_CACHE::Load().
| void WX_FILENAME::SetPath | ( | const wxString & | aPath | ) |
Definition at line 38 of file wx_filename.cpp.
|
static |
Split an untrusted archive entry name into its path components.
Rejects rather than sanitizes: an absolute or volume qualified name, or a ".." component anywhere, fails.
| aEntryName | is the raw, untrusted name read from the archive. |
| aParts | is filled with the path components on success. |
Definition at line 154 of file wx_filename.cpp.
References splitSafeRelativePath().
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), PCM_TASK_MANAGER::extract(), and ResolveArchiveEntryPath().
|
private |
Definition at line 107 of file wx_filename.h.
Referenced by GetTimestamp(), resolve(), SetPath(), and WX_FILENAME().
|
private |
Definition at line 109 of file wx_filename.h.
Referenced by GetFullName(), GetFullPath(), GetName(), resolve(), SetFullName(), and WX_FILENAME().
|
private |
Definition at line 108 of file wx_filename.h.
Referenced by GetFullPath(), GetPath(), SetPath(), and WX_FILENAME().