FreeBSD Bugzilla – Attachment 79618 Details for
Bug 114353
Fix to bug in devel/monotone with boost 1.34.0
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
file.txt
file.txt (text/plain), 2.83 KB, created by
Václav Haisman
on 2007-07-06 13:20:03 UTC
(
hide
)
Description:
file.txt
Filename:
MIME Type:
Creator:
Václav Haisman
Created:
2007-07-06 13:20:03 UTC
Size:
2.83 KB
patch
obsolete
># ># ># patch "paths.cc" ># from [0b81dfd4a65442de417c635cd8f003994af44ee1] ># to [1013ba10017d49914ab3dfb0c894c4aafcbcedc2] ># >============================================================ >--- paths.cc 0b81dfd4a65442de417c635cd8f003994af44ee1 >+++ paths.cc 1013ba10017d49914ab3dfb0c894c4aafcbcedc2 >@@ -10,6 +10,7 @@ > #include <string> > #include <sstream> > >+#include <boost/version.hpp> > #include <boost/filesystem/operations.hpp> > #include <boost/filesystem/convenience.hpp> > >@@ -249,6 +250,41 @@ internal_string_to_split_path(string con > I(fully_normalized_path_split(path, true, sp)); > } > >+// path::normalize() is deprecated in Boost 1.34, and also >+// doesn't remove leading or trailing dots any more. >+static fs::path >+normalize_path(fs::path const & in) >+{ >+#if BOOST_VERSION < 103400 >+ return in.normalize(); >+#else >+ fs::path out; >+ vector<string> stack; >+ for (fs::path::iterator i = in.begin(); i != in.end(); ++i) >+ { >+ // remove . elements >+ if (*i == ".") >+ continue; >+ // remove foo/.. element pairs >+ if (*i == "..") >+ { >+ if (!stack.empty()) >+ { >+ stack.pop_back(); >+ continue; >+ } >+ } >+ stack.push_back(*i); >+ } >+ for (vector<string>::const_iterator i = stack.begin(); >+ i != stack.end(); ++i) >+ { >+ out /= *i; >+ } >+ return out; >+#endif >+} >+ > static void > normalize_external_path(string const & path, string & normalized) > { >@@ -272,7 +308,7 @@ normalize_external_path(string const & p > base = initial_rel_path.get(); > // the fs::native is needed to get it to accept paths like ".foo". > relative = fs::path(path, fs::native); >- out = (base / relative).normalize(); >+ out = normalize_path(base / relative); > } > catch (exception &) > { >@@ -539,9 +575,9 @@ normalize_out_dots(string const & path) > normalize_out_dots(string const & path) > { > #ifdef WIN32 >- return fs::path(path, fs::native).normalize().string(); >+ return normalize_path(fs::path(path, fs::native)).string(); > #else >- return fs::path(path, fs::native).normalize().native_file_string(); >+ return normalize_path(fs::path(path, fs::native)).native_file_string(); > #endif > } > >@@ -679,9 +715,17 @@ find_bookdir(fs::path const & root, fs:: > } > > // check for _MTN/. and _MTN/.. to see if mt dir is readable >- if (!fs::exists(check / ".") || !fs::exists(check / "..")) >+ try > { >- L(FL("problems with '%s' (missing '.' or '..')") % check.string()); >+ if (!fs::exists(check / ".") || !fs::exists(check / "..")) >+ { >+ L(FL("problems with '%s' (missing '.' or '..')") % check.string()); >+ return false; >+ } >+ } >+ catch(exception &) >+ { >+ L(FL("problems with '%s' (cannot check for '.' or '..')") % check.string()); > return false; > } > return true;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 114353
: 79618 |
79619