aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/cpp/util/file.cc
diff options
context:
space:
mode:
authorGravatar Yun Peng <pcloudy@google.com>2017-02-01 16:32:08 +0000
committerGravatar Yun Peng <pcloudy@google.com>2017-02-01 16:36:58 +0000
commit8bebcec47848b5129e0ce41fd4c3ee8a79ba7600 (patch)
treeefa477e5fd57ebf68b56981258aca2ca478b6d8b /src/main/cpp/util/file.cc
parentefe3bf98b0430497ea1926b80e6dbb0b3642eac6 (diff)
*** Reason for rollback *** Causing bazel server restart every time on Windows See https://github.com/bazelbuild/bazel/issues/2466 *** Original change description *** Bazel client: platform-specific JoinPath This allows joining paths on "\" instead of "/" when building for Windows. See https://github.com/bazelbuild/bazel/issues/2107 -- PiperOrigin-RevId: 146246700 MOS_MIGRATED_REVID=146246700
Diffstat (limited to 'src/main/cpp/util/file.cc')
-rw-r--r--src/main/cpp/util/file.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/main/cpp/util/file.cc b/src/main/cpp/util/file.cc
index cae87198a7..392af372af 100644
--- a/src/main/cpp/util/file.cc
+++ b/src/main/cpp/util/file.cc
@@ -77,6 +77,31 @@ string Basename(const string &path) {
return SplitPath(path).second;
}
+string JoinPath(const string &path1, const string &path2) {
+ if (path1.empty()) {
+ // "" + "/bar"
+ return path2;
+ }
+
+ if (path1[path1.size() - 1] == '/') {
+ if (path2.find('/') == 0) {
+ // foo/ + /bar
+ return path1 + path2.substr(1);
+ } else {
+ // foo/ + bar
+ return path1 + path2;
+ }
+ } else {
+ if (path2.find('/') == 0) {
+ // foo + /bar
+ return path1 + path2;
+ } else {
+ // foo + bar
+ return path1 + "/" + path2;
+ }
+ }
+}
+
class DirectoryTreeWalker : public DirectoryEntryConsumer {
public:
DirectoryTreeWalker(vector<string> *files,