diff options
author | 2017-02-15 13:07:52 +0000 | |
---|---|---|
committer | 2017-02-15 14:47:42 +0000 | |
commit | d7d4def945b38133c43e3df3ea7c450b229d2bfb (patch) | |
tree | b370d2c91c525a692e4eee01e2fbe6331e7e1df2 /src/main/cpp/util | |
parent | 2a0bb37397e1354eaf06b7697913f71443332175 (diff) |
Bazel client, JNI, Windows: impl. CreateJunction
Implement a CreateJunction function in the Windows
JNI library. Also move a bit of code from
file_windows to the JNI library, where it is
(also) needed.
This implementation is an improved version of
`blaze_util::SymlinkDirectories` in
blaze_util_windows: this version handles Windows
paths as `name` and `target`, and performs more
validation (e.g. on the length of `target`), plus
has more comments explaining the logic. In a
subsequent change I'll start using this new
function in blaze_util_windows.
This method will also be helpful in tests: we will
no longer have to shell out to mklink.
See https://github.com/bazelbuild/bazel/issues/2107
--
Change-Id: I7e9b085fdc2ba47be83da5319bded02bd323e71b
Reviewed-on: https://cr.bazel.build/8892
PiperOrigin-RevId: 147585207
MOS_MIGRATED_REVID=147585207
Diffstat (limited to 'src/main/cpp/util')
-rw-r--r-- | src/main/cpp/util/file_windows.cc | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/src/main/cpp/util/file_windows.cc b/src/main/cpp/util/file_windows.cc index 9d22444dc8..e2e12950eb 100644 --- a/src/main/cpp/util/file_windows.cc +++ b/src/main/cpp/util/file_windows.cc @@ -35,6 +35,7 @@ using std::pair; using std::string; using std::unique_ptr; using std::wstring; +using windows_util::HasUncPrefix; // Returns the current working directory as a Windows path. // The result may have a UNC prefix. @@ -101,12 +102,6 @@ static bool HasDriveSpecifierPrefix(const char_type* ch) { return CharTraits<char_type>::IsAlpha(ch[0]) && ch[1] == ':'; } -template <typename char_type> -static bool HasUncPrefix(const char_type* path) { - return path[0] == '\\' && (path[1] == '\\' || path[1] == '?') && - (path[2] == '.' || path[2] == '?') && path[3] == '\\'; -} - static void AddUncPrefixMaybe(wstring* path) { if (path->size() >= MAX_PATH && !HasUncPrefix(path->c_str())) { *path = wstring(L"\\\\?\\") + *path; |