You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/03/10 03:20:37 UTC
mesos-site git commit: Updated the website built from mesos SHA:
ffc45b3.
Repository: mesos-site
Updated Branches:
refs/heads/asf-site dcdcd7945 -> 873b056b9
Updated the website built from mesos SHA: ffc45b3.
Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/873b056b
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/873b056b
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/873b056b
Branch: refs/heads/asf-site
Commit: 873b056b9d8ed87dca8543f27d09cbc4cb8698c6
Parents: dcdcd79
Author: jenkins <bu...@apache.org>
Authored: Sat Mar 10 03:20:34 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Sat Mar 10 03:20:34 2018 +0000
----------------------------------------------------------------------
...include_2stout_2windows_2fs_8hpp_source.html | 2 +-
.../latest/c++/reparsepoint_8hpp_source.html | 374 ++++++++++---------
content/api/latest/c++/symlink_8hpp_source.html | 4 +-
.../latest/c++/windows_2stat_8hpp_source.html | 2 +-
content/blog/feed.xml | 2 +-
.../index.html | 2 +-
6 files changed, 196 insertions(+), 190 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/873b056b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html
index 957b865..49084ba 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html
@@ -212,7 +212,7 @@
<div class="ttc" id="namespaceinternal_1_1windows_html_abd7dbdbc8d95626d0c66455078380aa1"><div class="ttname"><a href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a></div><div class="ttdeci">std::wstring longpath(const std::string &path)</div><div class="ttdef"><b>Definition:</b> longpath.hpp:38</div></div>
<div class="ttc" id="classBytes_html"><div class="ttname"><a href="classBytes.html">Bytes</a></div><div class="ttdef"><b>Definition:</b> bytes.hpp:30</div></div>
<div class="ttc" id="namespacens_html_a28116b46e6543597a11733424cd1aa20"><div class="ttname"><a href="namespacens.html#a28116b46e6543597a11733424cd1aa20">ns::stringify</a></div><div class="ttdeci">std::string stringify(int flags)</div></div>
-<div class="ttc" id="namespaceinternal_1_1windows_html_aeb3eff223f2ea4c2899bcc82d8818334"><div class="ttname"><a href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334">internal::windows::create_symbolic_link</a></div><div class="ttdeci">Try< Nothing > create_symbolic_link(const std::string &target, const std::string &reparse_point)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:315</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_aeb3eff223f2ea4c2899bcc82d8818334"><div class="ttname"><a href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334">internal::windows::create_symbolic_link</a></div><div class="ttdeci">Try< Nothing > create_symbolic_link(const std::string &target, const std::string &reparse_point)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:321</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/873b056b/content/api/latest/c++/reparsepoint_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/reparsepoint_8hpp_source.html b/content/api/latest/c++/reparsepoint_8hpp_source.html
index 24528e2..7a687c3 100644
--- a/content/api/latest/c++/reparsepoint_8hpp_source.html
+++ b/content/api/latest/c++/reparsepoint_8hpp_source.html
@@ -233,193 +233,199 @@
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// can be found in MSDN[2].</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// The `GENERIC_READ` flag is being used because it's the most common way of</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// opening a file for reading only. The `FILE_SHARE_READ` allows other</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// processes to read the file at the same time. MSDN[1] provides a more</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// detailed explanation of these flags.</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// [2] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364399(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keyword">const</span> DWORD access_flags = resolved_path_is_directory</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  ? FILE_FLAG_BACKUP_SEMANTICS</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  : FILE_ATTRIBUTE_NORMAL;</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle = ::CreateFileW(</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path).data(),</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  GENERIC_READ, <span class="comment">// Open the file for reading only.</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  FILE_SHARE_READ, <span class="comment">// Just reading this file, allow others to do the same.</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  OPEN_EXISTING, <span class="comment">// Open existing file.</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  access_flags, <span class="comment">// Open file, not the symlink itself.</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (handle == INVALID_HANDLE_VALUE) {</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>(handle, ::CloseHandle);</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> }</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// opening a file for reading only. The `SHARE` flags allow other processes</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// to read the file at the same time, as well as allow this process to read</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// files that were also opened with these flags. MSDN[1] provides a more</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// detailed explanation of these flags.</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// [2] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364399(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">const</span> DWORD access_flags = resolved_path_is_directory</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  ? FILE_FLAG_BACKUP_SEMANTICS</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  : FILE_ATTRIBUTE_NORMAL;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle = ::CreateFileW(</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path).data(),</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  GENERIC_READ, <span class="comment">// Open the file for reading only.</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// Must pass in all SHARE flags below, in case file is already open.</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Otherwise, we may get an access denied error.</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  OPEN_EXISTING, <span class="comment">// Open existing file.</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  access_flags, <span class="comment">// Open file, not the symlink itself.</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (handle == INVALID_HANDLE_VALUE) {</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="comment">// Attempts to get a file or folder handle for an absolute path, and does not</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="comment">// follow symlinks. That is, if the path points at a symlink, the handle will</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="comment">// refer to the symlink rather than the file or folder the symlink points at.</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14"> 212</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SharedHandle></a> <a class="code" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">get_handle_no_follow</a>(<span class="keyword">const</span> std::string& absolute_path)</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">get_file_attributes</a>(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path));</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(attributes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">bool</span> resolved_path_is_directory = attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() & FILE_ATTRIBUTE_DIRECTORY;</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// NOTE: According to the `CreateFile` documentation[1], the `OPEN_EXISTING`</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// and `FILE_FLAG_OPEN_REPARSE_POINT` flags need to be used when getting a</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// handle for the symlink.</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// Note also that `CreateFile` will appropriately generate a handle for</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// either a folder or a file, as long as the appropriate flag is being set:</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">// `FILE_FLAG_BACKUP_SEMANTICS` or `FILE_FLAG_OPEN_REPARSE_POINT`.</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// The `FILE_FLAG_BACKUP_SEMANTICS` flag is being set whenever the target is</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// a directory. According to MSDN[1]: "You must set this flag to obtain a</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// handle to a directory. A directory handle can be passed to some functions</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="comment">// instead of a file handle". More `FILE_FLAG_BACKUP_SEMANTICS` documentation</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">// can be found in MSDN[2].</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// The `GENERIC_READ` flag is being used because it's the most common way of</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// opening a file for reading only. The `FILE_SHARE_READ` allows other</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// processes to read the file at the same time. MSDN[1] provides a more</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// detailed explanation of these flags.</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// [2] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364399(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">const</span> DWORD access_flags = resolved_path_is_directory</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  ? (FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS)</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  : FILE_FLAG_OPEN_REPARSE_POINT;</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle = ::CreateFileW(</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path).data(),</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  GENERIC_READ, <span class="comment">// Open the file for reading only.</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  FILE_SHARE_READ, <span class="comment">// Just reading this file, allow others to do the same.</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  OPEN_EXISTING, <span class="comment">// Open existing symlink.</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  access_flags, <span class="comment">// Open symlink, not the file it points to.</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">if</span> (handle == INVALID_HANDLE_VALUE) {</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>(handle, ::CloseHandle);</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> }</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="comment">// Attempts to get the symlink data for a file or folder handle.</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6"> 265</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SymbolicLink></a> <a class="code" href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6">get_symbolic_link_data</a>(<span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle)</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="comment">// To get the symlink data, we call `DeviceIoControl`. This function is part</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="comment">// of the Device Driver Kit (DDK)[1] and, along with `FSCTL_GET_REPARSE_POINT`</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="comment">// is used to emit information about reparse points (and, thus, symlinks,</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="comment">// since symlinks are implemented with reparse points). This technique is</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">// being used in Boost FS code as well[2].</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// Summarized, the documentation tells us that we need to pass in</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// `FSCTL_GET_REPARSE_POINT` to get the function to populate a</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// `REPARSE_DATA_BUFFER` struct with data about a reparse point.</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// The `REPARSE_DATA_BUFFER` struct is defined in a DDK header file,</span></div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// so to avoid bringing in a multitude of DDK headers we take a cue from</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// Boost FS, and copy the struct into this header (see above).</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// Finally, for context, it may be worth looking at the MSDN</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// documentation[3] for `DeviceIoControl` itself.</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364571(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// [2] https://svn.boost.org/trac/boost/ticket/4663</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// [3] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363216(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html">REPARSE_DATA_BUFFER</a> buffer;</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  DWORD ignored = 0;</div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// The semantics of this function are: get the reparse data associated with</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// the `handle` of some open directory or file, and that data in</span></div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// `reparse_point_data`.</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">const</span> BOOL reparse_data_obtained = ::DeviceIoControl(</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  handle, <span class="comment">// Handle to file or directory.</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  FSCTL_GET_REPARSE_POINT, <span class="comment">// Gets reparse point data for file/folder.</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  0, <span class="comment">// Ignored.</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  &buffer,</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">sizeof</span>(buffer),</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  &ignored, <span class="comment">// Ignored.</span></div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (!reparse_data_obtained) {</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="stringliteral">"'internal::windows::get_symbolic_link_data': 'DeviceIoControl' call "</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="stringliteral">"failed"</span>);</div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>(handle, ::CloseHandle);</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment">// Attempts to get a file or folder handle for an absolute path, and does not</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// follow symlinks. That is, if the path points at a symlink, the handle will</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// refer to the symlink rather than the file or folder the symlink points at.</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14"> 215</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SharedHandle></a> <a class="code" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">get_handle_no_follow</a>(<span class="keyword">const</span> std::string& absolute_path)</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">get_file_attributes</a>(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path));</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(attributes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordtype">bool</span> resolved_path_is_directory = attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() & FILE_ATTRIBUTE_DIRECTORY;</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// NOTE: According to the `CreateFile` documentation[1], the `OPEN_EXISTING`</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// and `FILE_FLAG_OPEN_REPARSE_POINT` flags need to be used when getting a</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// handle for the symlink.</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// Note also that `CreateFile` will appropriately generate a handle for</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// either a folder or a file, as long as the appropriate flag is being set:</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// `FILE_FLAG_BACKUP_SEMANTICS` or `FILE_FLAG_OPEN_REPARSE_POINT`.</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="comment">// The `FILE_FLAG_BACKUP_SEMANTICS` flag is being set whenever the target is</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">// a directory. According to MSDN[1]: "You must set this flag to obtain a</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">// handle to a directory. A directory handle can be passed to some functions</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// instead of a file handle". More `FILE_FLAG_BACKUP_SEMANTICS` documentation</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// can be found in MSDN[2].</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// The `GENERIC_READ` flag is being used because it's the most common way of</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// opening a file for reading only. The `SHARE` flags allow other processes</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// to read the file at the same time, as well as allow this process to read</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// files that were also opened with these flags. MSDN[1] provides a more</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// detailed explanation of these flags.</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// [2] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364399(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">const</span> DWORD access_flags = resolved_path_is_directory</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  ? (FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS)</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  : FILE_FLAG_OPEN_REPARSE_POINT;</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle = ::CreateFileW(</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path).data(),</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  GENERIC_READ, <span class="comment">// Open the file for reading only.</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// Must pass in all SHARE flags below, in case file is already open.</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">// Otherwise, we may get an access denied error.</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  OPEN_EXISTING, <span class="comment">// Open existing symlink.</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  access_flags, <span class="comment">// Open symlink, not the file it points to.</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> (handle == INVALID_HANDLE_VALUE) {</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>(handle, ::CloseHandle);</div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> }</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="comment">// Attempts to get the symlink data for a file or folder handle.</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6"> 271</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SymbolicLink></a> <a class="code" href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6">get_symbolic_link_data</a>(<span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle)</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> {</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// To get the symlink data, we call `DeviceIoControl`. This function is part</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// of the Device Driver Kit (DDK)[1] and, along with `FSCTL_GET_REPARSE_POINT`</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// is used to emit information about reparse points (and, thus, symlinks,</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// since symlinks are implemented with reparse points). This technique is</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// being used in Boost FS code as well[2].</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// Summarized, the documentation tells us that we need to pass in</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// `FSCTL_GET_REPARSE_POINT` to get the function to populate a</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// `REPARSE_DATA_BUFFER` struct with data about a reparse point.</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// The `REPARSE_DATA_BUFFER` struct is defined in a DDK header file,</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// so to avoid bringing in a multitude of DDK headers we take a cue from</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// Boost FS, and copy the struct into this header (see above).</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// Finally, for context, it may be worth looking at the MSDN</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// documentation[3] for `DeviceIoControl` itself.</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364571(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// [2] https://svn.boost.org/trac/boost/ticket/4663</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// [3] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363216(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html">REPARSE_DATA_BUFFER</a> buffer;</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  DWORD ignored = 0;</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// The semantics of this function are: get the reparse data associated with</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// the `handle` of some open directory or file, and that data in</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// `reparse_point_data`.</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">const</span> BOOL reparse_data_obtained = ::DeviceIoControl(</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  handle, <span class="comment">// Handle to file or directory.</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  FSCTL_GET_REPARSE_POINT, <span class="comment">// Gets reparse point data for file/folder.</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  0, <span class="comment">// Ignored.</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  &buffer,</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">sizeof</span>(buffer),</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  &ignored, <span class="comment">// Ignored.</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceinternal_1_1windows.html#afd9a4ce68b9e02355cf2a92c49828081">build_symbolic_link</a>(buffer);</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> }</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="comment">// Creates a reparse point with the specified target. The target can be either</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="comment">// a file (in which case a junction is created), or a folder (in which case a</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="comment">// mount point is created).</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334"> 315</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334">create_symbolic_link</a>(</div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">const</span> std::string& target,</div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">const</span> std::string& reparse_point)</div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> {</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="comment">// Determine if target is a folder or a file. This makes a difference</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="comment">// in the way we call `create_symbolic_link`.</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">get_file_attributes</a>(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(target));</div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordtype">bool</span> target_is_folder = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  target_is_folder = attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() & FILE_ATTRIBUTE_DIRECTORY;</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="comment">// Bail out if target is already a reparse point.</span></div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="classTry.html">Try<bool></a> attribute_set = <a class="code" href="namespaceinternal_1_1windows.html#a9205fe9be7dc028375cd24338483152b">reparse_point_attribute_set</a>(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(target));</div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span> (attribute_set.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && attribute_set.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Path '"</span> + target + <span class="stringliteral">"' is already a reparse point"</span>);</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span> (!reparse_data_obtained) {</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="stringliteral">"'internal::windows::get_symbolic_link_data': 'DeviceIoControl' call "</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="stringliteral">"failed"</span>);</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceinternal_1_1windows.html#afd9a4ce68b9e02355cf2a92c49828081">build_symbolic_link</a>(buffer);</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> }</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="comment">// Creates a reparse point with the specified target. The target can be either</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="comment">// a file (in which case a junction is created), or a folder (in which case a</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="comment">// mount point is created).</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334"> 321</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334">create_symbolic_link</a>(</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keyword">const</span> std::string& target,</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">const</span> std::string& reparse_point)</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> {</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">// Determine if target is a folder or a file. This makes a difference</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="comment">// in the way we call `create_symbolic_link`.</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">get_file_attributes</a>(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(target));</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">bool</span> target_is_folder = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  target_is_folder = attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() & FILE_ATTRIBUTE_DIRECTORY;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  DWORD <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a> = target_is_folder ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0;</div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="comment">// Lambda to create symlink with given flags.</span></div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">auto</span> link = [&reparse_point, &target](<span class="keyword">const</span> DWORD <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>) {</div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  return ::CreateSymbolicLinkW(</div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="comment">// Path to link.</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(reparse_point).data(),</div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="comment">// Path to target.</span></div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(target).data(),</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  flags);</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  };</div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">// `CreateSymbolicLink` normally adjusts the process token's privileges to</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// allow for symlink creation; however, we explicitly avoid this with the</span></div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="comment">// following flag to not require administrative privileges.</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span> (link(flags | SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE)) {</div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="comment">// If this failed because the non-symbolic link feature was not supported,</span></div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="comment">// try again without the feature. This is for legacy support.</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span> (::GetLastError() == ERROR_INVALID_PARAMETER) {</div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (link(flags)) {</div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> }</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> } <span class="comment">// namespace windows {</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> } <span class="comment">// namespace internal {</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">// Bail out if target is already a reparse point.</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <a class="code" href="classTry.html">Try<bool></a> attribute_set = <a class="code" href="namespaceinternal_1_1windows.html#a9205fe9be7dc028375cd24338483152b">reparse_point_attribute_set</a>(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(target));</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (attribute_set.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && attribute_set.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Path '"</span> + target + <span class="stringliteral">"' is already a reparse point"</span>);</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  DWORD <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a> = target_is_folder ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0;</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="comment">// Lambda to create symlink with given flags.</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keyword">auto</span> link = [&reparse_point, &target](<span class="keyword">const</span> DWORD <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>) {</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  return ::CreateSymbolicLinkW(</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// Path to link.</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(reparse_point).data(),</div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// Path to target.</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(target).data(),</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  flags);</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  };</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="comment">// `CreateSymbolicLink` normally adjusts the process token's privileges to</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="comment">// allow for symlink creation; however, we explicitly avoid this with the</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="comment">// following flag to not require administrative privileges.</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span> (link(flags | SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE)) {</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="comment">// If this failed because the non-symbolic link feature was not supported,</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">// try again without the feature. This is for legacy support.</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span> (::GetLastError() == ERROR_INVALID_PARAMETER) {</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span> (link(flags)) {</div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor">#endif // __STOUT_INTERNAL_WINDOWS_REPARSEPOINT_HPP__</span></div>
-<div class="ttc" id="namespaceinternal_1_1windows_html_a8ee4f75d803d8ed56ce760d8e1dfac14"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">internal::windows::get_handle_no_follow</a></div><div class="ttdeci">Try< SharedHandle > get_handle_no_follow(const std::string &absolute_path)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:212</div></div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> }</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> } <span class="comment">// namespace windows {</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> } <span class="comment">// namespace internal {</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor">#endif // __STOUT_INTERNAL_WINDOWS_REPARSEPOINT_HPP__</span></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a8ee4f75d803d8ed56ce760d8e1dfac14"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">internal::windows::get_handle_no_follow</a></div><div class="ttdeci">Try< SharedHandle > get_handle_no_follow(const std::string &absolute_path)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:215</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
@@ -440,7 +446,7 @@
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">windows.hpp</a></div></div>
<div class="ttc" id="namespaceinternal_1_1windows_html_afd9a4ce68b9e02355cf2a92c49828081"><div class="ttname"><a href="namespaceinternal_1_1windows.html#afd9a4ce68b9e02355cf2a92c49828081">internal::windows::build_symbolic_link</a></div><div class="ttdeci">Try< SymbolicLink > build_symbolic_link(const REPARSE_DATA_BUFFER &data)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:124</div></div>
<div class="ttc" id="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER_html_a7a7397a1d339f687d5fd5a5f7b2f6457"><div class="ttname"><a href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a7a7397a1d339f687d5fd5a5f7b2f6457">internal::windows::_REPARSE_DATA_BUFFER::SymbolicLinkReparseBuffer</a></div><div class="ttdeci">struct internal::windows::_REPARSE_DATA_BUFFER::@13 SymbolicLinkReparseBuffer</div></div>
-<div class="ttc" id="namespaceinternal_1_1windows_html_a85f7e5d0197eeb93bde525379b8e14d6"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6">internal::windows::get_symbolic_link_data</a></div><div class="ttdeci">Try< SymbolicLink > get_symbolic_link_data(const HANDLE handle)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:265</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a85f7e5d0197eeb93bde525379b8e14d6"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6">internal::windows::get_symbolic_link_data</a></div><div class="ttdeci">Try< SymbolicLink > get_symbolic_link_data(const HANDLE handle)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:271</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER_html_a77bd10c591a84eb780db48a5195140a5"><div class="ttname"><a href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a77bd10c591a84eb780db48a5195140a5">internal::windows::_REPARSE_DATA_BUFFER::PathBuffer</a></div><div class="ttdeci">WCHAR PathBuffer[MAXIMUM_REPARSE_DATA_BUFFER_SIZE]</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:92</div></div>
<div class="ttc" id="namespacerouting_1_1queueing_1_1ingress_html_a934208b6017d0a9aed90b6594bb8292f"><div class="ttname"><a href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">routing::queueing::ingress::HANDLE</a></div><div class="ttdeci">constexpr Handle HANDLE</div><div class="ttdef"><b>Definition:</b> ingress.hpp:37</div></div>
@@ -463,7 +469,7 @@
<div class="ttc" id="namespaceinternal_1_1windows_html_ac3625d90ddd93b6c9a889610263990c1"><div class="ttname"><a href="namespaceinternal_1_1windows.html#ac3625d90ddd93b6c9a889610263990c1">internal::windows::REPARSE_DATA_BUFFER</a></div><div class="ttdeci">struct internal::windows::_REPARSE_DATA_BUFFER REPARSE_DATA_BUFFER</div></div>
<div class="ttc" id="namespaceinternal_1_1windows_html_abd7dbdbc8d95626d0c66455078380aa1"><div class="ttname"><a href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a></div><div class="ttdeci">std::wstring longpath(const std::string &path)</div><div class="ttdef"><b>Definition:</b> longpath.hpp:38</div></div>
<div class="ttc" id="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER_html"><div class="ttname"><a href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html">internal::windows::_REPARSE_DATA_BUFFER</a></div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:58</div></div>
-<div class="ttc" id="namespaceinternal_1_1windows_html_aeb3eff223f2ea4c2899bcc82d8818334"><div class="ttname"><a href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334">internal::windows::create_symbolic_link</a></div><div class="ttdeci">Try< Nothing > create_symbolic_link(const std::string &target, const std::string &reparse_point)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:315</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_aeb3eff223f2ea4c2899bcc82d8818334"><div class="ttname"><a href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334">internal::windows::create_symbolic_link</a></div><div class="ttdeci">Try< Nothing > create_symbolic_link(const std::string &target, const std::string &reparse_point)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:321</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/873b056b/content/api/latest/c++/symlink_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/symlink_8hpp_source.html b/content/api/latest/c++/symlink_8hpp_source.html
index b101282..faa9f72 100644
--- a/content/api/latest/c++/symlink_8hpp_source.html
+++ b/content/api/latest/c++/symlink_8hpp_source.html
@@ -168,7 +168,7 @@
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#endif // __STOUT_INTERNAL_WINDOWS_SYMLINK_HPP__</span></div>
<div class="ttc" id="namespaceinternal_1_1windows_html_a9a06fe58fd74d8f9fdcea8c061c70cc5"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a9a06fe58fd74d8f9fdcea8c061c70cc5">internal::windows::fullpath</a></div><div class="ttdeci">Result< std::string > fullpath(const std::string &path)</div><div class="ttdef"><b>Definition:</b> symlink.hpp:30</div></div>
-<div class="ttc" id="namespaceinternal_1_1windows_html_a8ee4f75d803d8ed56ce760d8e1dfac14"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">internal::windows::get_handle_no_follow</a></div><div class="ttdeci">Try< SharedHandle > get_handle_no_follow(const std::string &absolute_path)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:212</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a8ee4f75d803d8ed56ce760d8e1dfac14"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">internal::windows::get_handle_no_follow</a></div><div class="ttdeci">Try< SharedHandle > get_handle_no_follow(const std::string &absolute_path)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:215</div></div>
<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classSharedHandle_html_a800385e17e17cb826147968e748fd8fa"><div class="ttname"><a href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">SharedHandle::get_handle</a></div><div class="ttdeci">HANDLE get_handle() const </div><div class="ttdef"><b>Definition:</b> windows.hpp:96</div></div>
@@ -181,7 +181,7 @@
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
<div class="ttc" id="reparsepoint_8hpp_html"><div class="ttname"><a href="reparsepoint_8hpp.html">reparsepoint.hpp</a></div></div>
<div class="ttc" id="namespacestrings_html_a3fbaeb4d589c49ac115fab3412073ca7"><div class="ttname"><a href="namespacestrings.html#a3fbaeb4d589c49ac115fab3412073ca7">strings::remove</a></div><div class="ttdeci">std::string remove(const std::string &from, const std::string &substring, Mode mode=ANY)</div><div class="ttdef"><b>Definition:</b> strings.hpp:40</div></div>
-<div class="ttc" id="namespaceinternal_1_1windows_html_a85f7e5d0197eeb93bde525379b8e14d6"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6">internal::windows::get_symbolic_link_data</a></div><div class="ttdeci">Try< SymbolicLink > get_symbolic_link_data(const HANDLE handle)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:265</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a85f7e5d0197eeb93bde525379b8e14d6"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6">internal::windows::get_symbolic_link_data</a></div><div class="ttdeci">Try< SymbolicLink > get_symbolic_link_data(const HANDLE handle)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:271</div></div>
<div class="ttc" id="longpath_8hpp_html"><div class="ttname"><a href="longpath_8hpp.html">longpath.hpp</a></div></div>
<div class="ttc" id="classResult_html_aedf79f3b14dcda5791b84a64ada4d412"><div class="ttname"><a href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">Result::get</a></div><div class="ttdeci">const T & get() const </div><div class="ttdef"><b>Definition:</b> result.hpp:115</div></div>
<div class="ttc" id="classTry_html_aec4a11ddd3c036e889d90b7eb6258ba7"><div class="ttname"><a href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">Try::error</a></div><div class="ttdeci">static Try error(const E &e)</div><div class="ttdef"><b>Definition:</b> try.hpp:42</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/873b056b/content/api/latest/c++/windows_2stat_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2stat_8hpp_source.html b/content/api/latest/c++/windows_2stat_8hpp_source.html
index 2f4195c..15f5caa 100644
--- a/content/api/latest/c++/windows_2stat_8hpp_source.html
+++ b/content/api/latest/c++/windows_2stat_8hpp_source.html
@@ -264,7 +264,7 @@
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> } <span class="comment">// namespace os {</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_STAT_HPP__</span></div>
-<div class="ttc" id="namespaceinternal_1_1windows_html_a8ee4f75d803d8ed56ce760d8e1dfac14"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">internal::windows::get_handle_no_follow</a></div><div class="ttdeci">Try< SharedHandle > get_handle_no_follow(const std::string &absolute_path)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:212</div></div>
+<div class="ttc" id="namespaceinternal_1_1windows_html_a8ee4f75d803d8ed56ce760d8e1dfac14"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">internal::windows::get_handle_no_follow</a></div><div class="ttdeci">Try< SharedHandle > get_handle_no_follow(const std::string &absolute_path)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:215</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a178d1c99fc88dae58f9a5fc4fc3167d5"><div class="ttname"><a href="namespaceos_1_1stat.html#a178d1c99fc88dae58f9a5fc4fc3167d5">os::stat::isfile</a></div><div class="ttdeci">bool isfile(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:87</div></div>
<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:100</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/873b056b/content/blog/feed.xml
----------------------------------------------------------------------
diff --git a/content/blog/feed.xml b/content/blog/feed.xml
index 6869765..2cc1e6b 100644
--- a/content/blog/feed.xml
+++ b/content/blog/feed.xml
@@ -295,7 +295,7 @@ To learn more about CSI work in Mesos, you can dig into the design document <
</ul>
-<p>If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing <a href="&#x6d;&#97;&#105;&#108;&#x74;&#x6f;&#58;&#100;&#101;&#118;&#64;&#x61;&#x70;&#97;&#x63;&#x68;&#x65;&#x2e;&#x6d;&#x65;&#115;&#111;&#x73;&#x2e;&#x6f;&#114;&#x67;">&#100;&#x65;&#x76;&#64;&#97;&#x70;&#97;&#x63;&#104;&#x65;&#x2e;&#109;&#x65;&#x73;&#x6f;&#115;&#x2e;&#x6f;&#114;&#103;</a>.</p>
+<p>If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing <a href="&#109;&#x61;&#105;&#108;&#116;&#x6f;&#x3a;&#x64;&#101;&#118;&#x40;&#x61;&#x70;&#x61;&#x63;&#x68;&#x65;&#x2e;&#x6d;&#101;&#115;&#x6f;&#x73;&#46;&#111;&#114;&#x67;">&#100;&#x65;&#118;&#64;&#x61;&#112;&#97;&#x63;&#104;&#101;&#46;&#109;&#101;&#115;&#x6f;&#x73;&#x2e;&#111;&#114;&#x67;</a>.</p>
</content>
</entry>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/873b056b/content/blog/performance-working-group-progress-report/index.html
----------------------------------------------------------------------
diff --git a/content/blog/performance-working-group-progress-report/index.html b/content/blog/performance-working-group-progress-report/index.html
index 81ee019..947a896 100644
--- a/content/blog/performance-working-group-progress-report/index.html
+++ b/content/blog/performance-working-group-progress-report/index.html
@@ -248,7 +248,7 @@
</ul>
-<p>If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing <a href="mailto:dev@apache.mesos.org">dev@apache.mesos.org</a>.</p>
+<p>If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing <a href="mailto:dev@apache.mesos.org">dev@apache.mesos.org</a>.</p>
</div>
</div>