FreeBSD Bugzilla – Attachment 79619 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]
patch-paths.cc
patch-paths.cc (text/plain), 2.60 KB, created by
Lapo Luchini
on 2007-07-06 14:43:20 UTC
(
hide
)
Description:
patch-paths.cc
Filename:
MIME Type:
Creator:
Lapo Luchini
Created:
2007-07-06 14:43:20 UTC
Size:
2.60 KB
patch
obsolete
>--- paths.cc.orig Mon May 7 16:13:44 2007 >+++ paths.cc Fri Jul 6 15:27:55 2007 >@@ -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 @@ static string > 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 >+ { >+ 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' (missing '.' or '..')") % check.string()); >+ 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