1<html> 2 3<head> 4<meta http-equiv="Content-Language" content="en-us"> 5<meta name="GENERATOR" content="Microsoft FrontPage 5.0"> 6<meta name="ProgId" content="FrontPage.Editor.Document"> 7<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 8<title>Do List</title> 9<style type="text/css"> 10 body { font-family: sans-serif; margin: 1em; } 11 p, td, li, blockquote { font-size: 10pt; } 12 pre { font-size: 9pt; } 13</style> 14</head> 15 16<body> 17 18<h1>Boost Filesystem Do List<br> 19<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->24 June 2010<!--webbot bot="Timestamp" endspan i-checksum="17552" --></h1> 20 21<h2>Beta 1 comments</h2> 22<ul> 23 <li dir="ltr"> 24 25<p dir="ltr">Zach Laine:</li> 26</ul> 27<blockquote> 28 <pre dir="ltr">The descriptions for portable_name() and portable_directory_name() 29appear to be at odds. 30 31portable_name() : ... && (name is "." or "..", and the first character 32not a period or hyphen) 33 34portable_directory_name(): ... && (name is "." or ".." or contains no periods) 35 36Should portable_name() be "... && (name is "." or "..", or contains no 37periods) && (first character not a hyphen)"? Maybe I'm missing 38something?</pre> 39</blockquote> 40<ul> 41 <li dir="ltr"> 42<p dir="ltr">Scott McMurray - treat as Wish List:</li> 43</ul> 44<blockquote> 45 <pre dir="ltr">- uncomplete(p, base) 46 47My pet request. It may be useful to simplify other functions as well, 48since there's no current way to go from an absolute path to a relative 49one, meaning that most functions need to handle relative ones even 50when that might not be natural. With this functionality, 51preconditions requiring absolute paths would be less onerous. 52 53 Precondition: p.is_absolute() && base.is_absolute() 54 55 Effects: Extracts a path, rp, from p relative to base such that 56canonical(p) == complete(rp, base). Any ".." path elements in rp form 57a prefix. 58 59 Returns: The extracted path. 60 61 Postconditions: For the returned path, rp, rp.is_relative() == 62(p.root_name() == b.root_name()). 63 64[Notes: This function simplifies paths by omitting context. It is 65particularly useful for serializing paths such that it can be usefully 66moved between hosts where the context may be different, such as inside 67source control trees. It can also be helpful for display to users, 68such as in shells where paths are often shown relative to $HOME. 69 70In the presence of symlinks, the result of this function may differ 71between implementations, as some may expand symlinks that others may 72not. The simplest implementation uses canonical to expand both p and 73base, then removes the common prefix and prepends the requisite ".." 74elements. Smarter implementations will avoid expanding symlinks 75unnecessarily. No implementation is expected to discover new symlinks 76to return paths with fewer elements.]</pre> 77</blockquote> 78<h2 dir="ltr">Docs</h2> 79<ul> 80 <li>Reorganize files - delete examples that no longer apply.</li> 81 <li>Should minimal.css be changed to used relative font sizes? See 82 <a href="http://www.w3schools.com/CSS/pr_font_font-size.asp/">http://www.w3schools.com/CSS/pr_font_font-size.asp\</a></li> 83 <li>Document behavior of path::replace_extension has change WRT argument w/o a 84 dot.</li> 85 <li style="font-size: 10pt">Document leading //: no longer treated specially. 86 But is that really correct?</li> 87 <li style="font-size: 10pt">Behavior of root_path() has been changed. Change 88 needs to be propagated to trunk?</li> 89 <li style="font-size: 10pt">Regenerate path decomposition table.</li> 90</ul> 91 92<h2>Code</h2> 93<h3>All</h3> 94<ul> 95 <li style="font-size: 10pt">Move semantics.</li> 96 <li style="font-size: 10pt">Use BOOST_DELETED, BOOST_DEFAULTED, where 97 appropriate.</li> 98 <li style="font-size: 10pt">Other C++0x features.</li> 99</ul> 100<h3>Class path</h3> 101<ul> 102 <li>Windows, POSIX, conversions for char16_t, char32_t for C++0x compilers.</li> 103 <li>Add Windows Alternate Data Stream test cases. See http://en.wikipedia.org/wiki/NTFS 104 Features.</li> 105 <li>Add test case: relational operators on paths differing only in trailing 106 separator. Rationale?</li> 107 <li>Provide the name check functions for more character types? Templatize? 108 take a path argument?</li> 109 <li style="font-size: 10pt">Add codepage 936/950/etc test cases.</li> 110 <li style="font-size: 10pt">Should UDT's be supported?</li> 111 <li style="font-size: 10pt">Should path iteration to a separator result in:<br> 112 -- the actual separator used<br> 113 -- the preferred separator<br> 114 -- the generic separator <-- makes it easier to write portable code<br> 115 -- a dot</li> 116</ul> 117<h3>Operations</h3> 118<ul> 119 <li>Would complete(), system_complete() be clearer if renamed absolute(), 120 absolute_system() (or absolute_native())?</li> 121 <li>Review all operations.cpp code for race conditions similar to #2925. Fix 122 or document.</li> 123 <li>Enable all BOOST_FILESYSTEM_NO_DEPRECATED code.</li> 124 <li>rename and remove names are problems. If users says "using 125 namespace boost::filesystem"<br> 126 and some header included stdio, there is just too much chance of silent error.</li> 127 <li>create_directories error handling needs work.</li> 128 <li>Fold convenience.hpp into operations.hpp</li> 129 <li>Two argument recursive_directory_iterator ctor isn't recognizing throws(). 130 Would it be better to fold into a single two argument ctor with default?</li> 131 <li>Add the push_directory class from tools/release/required_files.cpp</li> 132</ul> 133 134<h3>Miscellaneous</h3> 135<ul> 136 <li style="font-size: 10pt"><i>Regular</i> classes need hash functions.</li> 137</ul> 138 139<hr> 140<p>© Copyright Beman Dawes, 2010</p> 141<p>Distributed under the Boost Software License, Version 1.0. See 142<a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a></p> 143 144</body> 145 146</html> 147