From bdf2059bf4bfb44b2ac2e55fbfb18408aba6d59d Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Mon, 4 Jul 2016 23:22:37 -0400 Subject: As per Vas Crabb, readding overloads that take a std::string& parameter for the result --- src/lib/util/zippath.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) (limited to 'src/lib/util/zippath.cpp') 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 @@ -155,6 +154,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); @@ -182,6 +193,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 ***************************************************************************/ -- cgit v1.2.3-70-g09d2