diff options
author | 2016-07-04 23:22:37 -0400 | |
---|---|---|
committer | 2016-07-04 23:22:37 -0400 | |
commit | bdf2059bf4bfb44b2ac2e55fbfb18408aba6d59d (patch) | |
tree | 8cf0e289d2f317eedffd8b8aa52b62680fbf72b2 /src | |
parent | 0d4151e3663e610a48faae575a85e932b7a50e5e (diff) |
As per Vas Crabb, readding overloads that take a std::string& parameter for the result
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/diimage.cpp | 2 | ||||
-rw-r--r-- | src/frontend/mame/ui/imgcntrl.cpp | 2 | ||||
-rw-r--r-- | src/lib/util/zippath.cpp | 49 | ||||
-rw-r--r-- | src/lib/util/zippath.h | 3 |
4 files changed, 48 insertions, 8 deletions
diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 120147a7d79..ebf7804fbad 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -156,7 +156,7 @@ void device_image_interface::device_compute_hash(hash_collection &hashes, const image_error_t device_image_interface::set_image_filename(const char *filename) { m_image_name = filename; - m_working_directory = util::zippath_parent(filename); + util::zippath_parent(m_working_directory, filename); m_basename.assign(m_image_name); int loc1 = m_image_name.find_last_of('\\'); diff --git a/src/frontend/mame/ui/imgcntrl.cpp b/src/frontend/mame/ui/imgcntrl.cpp index 3fae7859c4c..f58fb81bc33 100644 --- a/src/frontend/mame/ui/imgcntrl.cpp +++ b/src/frontend/mame/ui/imgcntrl.cpp @@ -61,7 +61,7 @@ menu_control_device_image::menu_control_device_image(mame_ui_manager &mui, rende if (image->exists()) { m_current_file.assign(image->filename()); - m_current_directory = util::zippath_parent(m_current_file.c_str()); + util::zippath_parent(m_current_directory, m_current_file.c_str()); } else m_current_directory.assign(image->working_directory()); diff --git a/src/lib/util/zippath.cpp b/src/lib/util/zippath.cpp index 9ac9df5979a..1a13bfe7784 100644 --- a/src/lib/util/zippath.cpp +++ b/src/lib/util/zippath.cpp @@ -140,12 +140,11 @@ static void parse_parent_path(const char *path, int *beginpos, int *endpos) // zippath_parent - retrieves the parent directory // ------------------------------------------------- -std::string zippath_parent(const char *path) +std::string &zippath_parent(std::string &dst, const char *path) { int pos; parse_parent_path(path, &pos, nullptr); - std::string dst; if (pos >= 0) dst.assign(path, pos + 1); else @@ -156,6 +155,19 @@ std::string zippath_parent(const char *path) // ------------------------------------------------- +// zippath_parent - retrieves the parent directory +// ------------------------------------------------- + +std::string zippath_parent(const char *path) +{ + std::string result; + zippath_parent(result, path); + return result; +} + + + +// ------------------------------------------------- // zippath_parent_basename - retrieves the parent // directory basename // ------------------------------------------------- @@ -171,9 +183,8 @@ std::string zippath_parent(const char *path) * @return A std::string& */ -std::string zippath_parent_basename(const char *path) +std::string &zippath_parent_basename(std::string &dst, const char *path) { - std::string dst; int beginpos, endpos; parse_parent_path(path, &beginpos, &endpos); dst.copy((char*)(path + beginpos + 1), endpos - beginpos); @@ -183,6 +194,20 @@ std::string zippath_parent_basename(const char *path) // ------------------------------------------------- +// zippath_parent_basename - retrieves the parent +// directory basename +// ------------------------------------------------- + +std::string zippath_parent_basename(const char *path) +{ + std::string result; + zippath_parent_basename(result, path); + return result; +} + + + +// ------------------------------------------------- // zippath_combine - combines two paths // ------------------------------------------------- @@ -198,9 +223,8 @@ std::string zippath_parent_basename(const char *path) * @return A std::string& */ -std::string zippath_combine(const char *path1, const char *path2) +std::string &zippath_combine(std::string &dst, const char *path1, const char *path2) { - std::string dst; if (!strcmp(path2, ".")) { dst.assign(path1); @@ -226,6 +250,19 @@ std::string zippath_combine(const char *path1, const char *path2) +// ------------------------------------------------- +// zippath_combine - combines two paths +// ------------------------------------------------- + +std::string zippath_combine(const char *path1, const char *path2) +{ + std::string result; + zippath_combine(result, path1, path2); + return result; +} + + + /*************************************************************************** FILE OPERATIONS ***************************************************************************/ diff --git a/src/lib/util/zippath.h b/src/lib/util/zippath.h index a22ce873364..d0b017f86eb 100644 --- a/src/lib/util/zippath.h +++ b/src/lib/util/zippath.h @@ -34,12 +34,15 @@ class zippath_directory; // ----- path operations ----- // retrieves the parent directory +std::string &zippath_parent(std::string &dst, const char *path); std::string zippath_parent(const char *path); // retrieves the parent directory basename +std::string &zippath_parent_basename(std::string &dst, const char *path); std::string zippath_parent_basename(const char *path); // combines two paths +std::string &zippath_combine(std::string &dst, const char *path1, const char *path2); std::string zippath_combine(const char *path1, const char *path2); |