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>Filesystem Deprecated Features</title> 9<link href="styles.css" rel="stylesheet"> 10</head> 11 12<body> 13 14<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111"> 15 <tr> 16 <td width="277"> 17<a href="../../../index.htm"> 18<img src="../../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="300" height="86" border="0"></a></td> 19 <td align="middle"> 20 <font size="7">Filesystem Deprecated Features</font> 21 </td> 22 </tr> 23</table> 24 25<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" 26 bordercolor="#111111" bgcolor="#D7EEFF" width="100%"> 27 <tr> 28 <td><a href="index.htm">Home</a> 29 <a href="tutorial.html">Tutorial</a> 30 <a href="reference.html">Reference</a> 31 <a href="faq.htm">FAQ</a> 32 <a href="release_history.html">Releases</a> 33 <a href="portability_guide.htm">Portability</a> 34 <a href="v3.html">V3 Intro</a> 35 <a href="v3_design.html">V3 Design</a> 36 <a href="deprecated.html">Deprecated</a> 37 <a href="issue_reporting.html">Bug Reports </a> 38 </td> 39</table> 40 41<h2><a name="Deprecated-names">Deprecated names</a> and features</h2> 42<p style="font-size: 10pt">As the library evolves over time, names sometimes 43change or old features are removed to make way for new features. To ease transition, Boost.Filesystem deprecates 44the old names and features, but by default continues to provide many of them. 45The deprecated names and other workarounds can be suppressed by defining macro <code> 46BOOST_FILESYSTEM_NO_DEPRECATED</code>, and this is recommended for all new code.</p> 47<p style="font-size: 10pt">In the table, ✔ indicates a synonym or other 48workaround is provided unless <code> 49BOOST_FILESYSTEM_NO_DEPRECATED</code> is defined.</p> 50<table border="1" cellpadding="5" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111"> 51 <tr> 52 <td style="font-size: 10pt" valign="top"> 53 <b><i>Component or location</i></b></td> 54 <td style="font-size: 10pt" valign="top"> 55 <p style="font-size: 10pt"><b><i>Old name, now deprecated</i></b></td> 56 <td style="font-size: 10pt" valign="top"> 57 ✔</td> 58 <td style="font-size: 10pt" valign="top"> 59 <p style="font-size: 10pt"><b><i>New name</i></b></td> 60 </tr> 61 <tr> 62 <td style="font-size: 10pt" valign="top"><code>class path</code></td> 63 <td style="font-size: 10pt" valign="top"><code>branch_path()</code></td> 64 <td style="font-size: 10pt" valign="top">✔</td> 65 <td style="font-size: 10pt" valign="top"><code>parent_path()</code></td> 66 </tr> 67 <tr> 68 <td style="font-size: 10pt" valign="top"> 69 <code>class path</code></td> 70 <td style="font-size: 10pt" valign="top"> 71 <code>canonize()</code></td> 72 <td style="font-size: 10pt" valign="top"> 73 </td> 74 <td style="font-size: 10pt" valign="top"> 75 <i>Function removed</i></td> 76 </tr> 77 <tr> 78 <td style="font-size: 10pt" valign="top"> 79 <code>class path</code></td> 80 <td style="font-size: 10pt" valign="top"> 81 <code>default_name_check()</code></td> 82 <td style="font-size: 10pt" valign="top"> 83 ✔</td> 84 <td style="font-size: 10pt" valign="top"> 85 <i>Function removed</i></td> 86 </tr> 87 <tr> 88 <td style="font-size: 10pt" valign="top"> 89 <code>class path</code></td> 90 <td style="font-size: 10pt" valign="top"> 91 <code>default_name_check(name_check)</code></td> 92 <td style="font-size: 10pt" valign="top"> 93 ✔</td> 94 <td style="font-size: 10pt" valign="top"> 95 <i>Function removed</i></td> 96 </tr> 97 <tr> 98 <td style="font-size: 10pt" valign="top"> 99 <code>class path</code></td> 100 <td style="font-size: 10pt" valign="top"> 101 <code>default_name_check_writable()</code></td> 102 <td style="font-size: 10pt" valign="top"> 103 ✔</td> 104 <td style="font-size: 10pt" valign="top"> 105 <i>Function removed</i></td> 106 </tr> 107 <tr> 108 <td style="font-size: 10pt" valign="top"><code>class path</code></td> 109 <td style="font-size: 10pt" valign="top"><code>directory_string()</code></td> 110 <td style="font-size: 10pt" valign="top">✔</td> 111 <td style="font-size: 10pt" valign="top"><code>string</code></td> 112 </tr> 113 <tr> 114 <td style="font-size: 10pt" valign="top"><code>class path</code></td> 115 <td style="font-size: 10pt" valign="top"><code>external_directory_string()</code></td> 116 <td style="font-size: 10pt" valign="top">✔</td> 117 <td style="font-size: 10pt" valign="top"><code>native()</code></td> 118 </tr> 119 <tr> 120 <td style="font-size: 10pt" valign="top"><code>class path</code></td> 121 <td style="font-size: 10pt" valign="top"><code>external_file_string()</code></td> 122 <td style="font-size: 10pt" valign="top">✔</td> 123 <td style="font-size: 10pt" valign="top"><code>native()</code></td> 124 </tr> 125 <tr> 126 <td style="font-size: 10pt" valign="top"><code>class path</code></td> 127 <td style="font-size: 10pt" valign="top"><code>file_string()</code></td> 128 <td style="font-size: 10pt" valign="top">✔</td> 129 <td style="font-size: 10pt" valign="top"><code>string()</code></td> 130 </tr> 131 <tr> 132 <td style="font-size: 10pt" valign="top"><code>class path</code></td> 133 <td style="font-size: 10pt" valign="top"><code>has_branch_path()</code></td> 134 <td style="font-size: 10pt" valign="top">✔</td> 135 <td style="font-size: 10pt" valign="top"><code>has_parent_path()</code></td> 136 </tr> 137 <tr> 138 <td style="font-size: 10pt" valign="top"><code>class path</code></td> 139 <td style="font-size: 10pt" valign="top"><code>has_leaf()</code></td> 140 <td style="font-size: 10pt" valign="top">✔</td> 141 <td style="font-size: 10pt" valign="top"><code>has_filename()</code></td> 142 </tr> 143 <tr> 144 <td style="font-size: 10pt" valign="top"><code>class path</code></td> 145 <td style="font-size: 10pt" valign="top"><code>is_complete()</code></td> 146 <td style="font-size: 10pt" valign="top">✔</td> 147 <td style="font-size: 10pt" valign="top"><code>is_absolute()</code></td> 148 </tr> 149 <tr> 150 <td style="font-size: 10pt" valign="top"><code>class path</code></td> 151 <td style="font-size: 10pt" valign="top"><code>leaf()</code></td> 152 <td style="font-size: 10pt" valign="top">✔</td> 153 <td style="font-size: 10pt" valign="top"><code>filename()</code></td> 154 </tr> 155 <tr> 156 <td style="font-size: 10pt" valign="top"> 157 <code>class path</code></td> 158 <td style="font-size: 10pt" valign="top"> 159 <code>native_directory_string()</code></td> 160 <td style="font-size: 10pt" valign="top"> 161 ✔</td> 162 <td style="font-size: 10pt" valign="top"> 163 <code>string()</code></td> 164 </tr> 165 <tr> 166 <td style="font-size: 10pt" valign="top"> 167 <code>class path</code></td> 168 <td style="font-size: 10pt" valign="top"> 169 <code>native_file_string()</code></td> 170 <td style="font-size: 10pt" valign="top"> 171 ✔</td> 172 <td style="font-size: 10pt" valign="top"> 173 <code>string()</code></td> 174 </tr> 175 <tr> 176 <td style="font-size: 10pt" valign="top"> 177 <code>class path</code></td> 178 <td style="font-size: 10pt" valign="top"> 179 <code>normalize()</code></td> 180 <td style="font-size: 10pt" valign="top"> 181 ✔</td> 182 <td style="font-size: 10pt" valign="top"> 183 <i>Function removed</i></td> 184 </tr> 185 <tr> 186 <td style="font-size: 10pt" valign="top"> 187 <code>class path</code></td> 188 <td style="font-size: 10pt" valign="top"> 189 <code>path(const string_type& str, name_check)</code></td> 190 <td style="font-size: 10pt" valign="top"> 191 ✔</td> 192 <td style="font-size: 10pt" valign="top"> 193 <i>Function removed. Workaround ignores </i><code>name_check</code><i> 194 argument.</i></td> 195 </tr> 196 <tr> 197 <td style="font-size: 10pt" valign="top"> 198 <code>class path</code></td> 199 <td style="font-size: 10pt" valign="top"> 200 <code>path(const string_type::value_type* s, name_check)</code></td> 201 <td style="font-size: 10pt" valign="top"> 202 ✔</td> 203 <td style="font-size: 10pt" valign="top"> 204 <i>Function removed. Workaround ignores </i><code>name_check</code><i> 205 argument.</i></td> 206 </tr> 207 <tr> 208 <td style="font-size: 10pt" valign="top"> 209 <code>class path</code></td> 210 <td style="font-size: 10pt" valign="top"> 211 <p style="font-size: 10pt"><code>remove_leaf()</code></td> 212 <td style="font-size: 10pt" valign="top"> 213 ✔</td> 214 <td style="font-size: 10pt" valign="top"> 215 <p style="font-size: 10pt"><code>remove_filename()</code></td> 216 </tr> 217 <tr> 218 <td style="font-size: 10pt" valign="top"> 219 <code>path.hpp</code></td> 220 <td style="font-size: 10pt" valign="top"> 221 <code>template<class String, class Traits><br> 222 class basic_path;</code></td> 223 <td style="font-size: 10pt" valign="top"> 224 </td> 225 <td style="font-size: 10pt" valign="top"> 226 Class template <code>basic_path</code> is replaced by <code>class path</code>. 227 No workaround for an explicitly coded <code>basic_path</code> is provided, 228 but see the next row - <code>path</code>.</td> 229 </tr> 230 <tr> 231 <td style="font-size: 10pt" valign="top"> 232 <code>path.hpp</code></td> 233 <td style="font-size: 10pt" valign="top"> 234 <code>typedef basic_path<std::string, path_traits> path</code></td> 235 <td style="font-size: 10pt" valign="top"> 236 ✔</td> 237 <td style="font-size: 10pt" valign="top"> 238 <code>class path</code></td> 239 </tr> 240 <tr> 241 <td style="font-size: 10pt" valign="top"> 242 <code>path.hpp</code></td> 243 <td style="font-size: 10pt" valign="top"> 244 <code>typedef basic_path<std::wstring, wpath_traits> wpath</code></td> 245 <td style="font-size: 10pt" valign="top"> 246 ✔</td> 247 <td style="font-size: 10pt" valign="top"> 248 <i>Removed; use </i><code>class path</code><i> instead. Workaround provides 249 </i><code>typedef path wpath</code></td> 250 </tr> 251 <tr> 252 <td style="font-size: 10pt" valign="top"> 253 <code>operations.hpp</code></td> 254 <td style="font-size: 10pt" valign="top"> 255 <code>initial_path()</code></td> 256 <td style="font-size: 10pt" valign="top"> 257 ✔</td> 258 <td style="font-size: 10pt" valign="top"> 259 <i>Function removed</i></td> 260 </tr> 261 <tr> 262 <td style="font-size: 10pt" valign="top"> 263 <code>operations.hpp</code></td> 264 <td style="font-size: 10pt" valign="top"> 265 <p dir="ltr"><code>template <class Path><br> 266 Path complete(const Path& p,<br> 267 const Path& base=<br> 268 initial_path<Path>())</code></td> 269 <td style="font-size: 10pt" valign="top"> 270 ✔</td> 271 <td style="font-size: 10pt" valign="top"> 272 <p dir="ltr"><code>path absolute(const path& p, const path& base=<br> 273 current_path())</code></td> 274 </tr> 275 <tr> 276 <td style="font-size: 10pt" valign="top"> 277 <code>operations.hpp</code></td> 278 <td style="font-size: 10pt" valign="top"> 279 <code>is_regular(file_status f)</code></td> 280 <td style="font-size: 10pt" valign="top"> 281 ✔</td> 282 <td style="font-size: 10pt" valign="top"> 283 <p dir="ltr"> 284 <code>is_regular_file(file_status f)</code></td> 285 </tr> 286 <tr> 287 <td style="font-size: 10pt" valign="top"> 288 <code>operations.hpp</code></td> 289 <td style="font-size: 10pt" valign="top"> 290 <code>symbolic_link_exists(const path& ph)</code></td> 291 <td style="font-size: 10pt" valign="top"> 292 </td> 293 <td style="font-size: 10pt" valign="top"> 294 <i>Function removed</i></td> 295 </tr> 296 <tr> 297 <td style="font-size: 10pt" valign="top"> 298 <code>operations.hpp</code></td> 299 <td style="font-size: 10pt" valign="top"> 300 <code>copy_directory(const path& from, const path& to)</code></td> 301 <td style="font-size: 10pt" valign="top"> 302 </td> 303 <td style="font-size: 10pt" valign="top"> 304 <i>Function removed, use <code>create_directory(const path& to, const path& from)</code> instead (note the reversed order of arguments)</i></td> 305 </tr> 306 <tr> 307 <td style="font-size: 10pt" valign="top"> 308 <code>class directory_entry</code></td> 309 <td style="font-size: 10pt" valign="top"> 310 <code>filename()</code></td> 311 <td style="font-size: 10pt" valign="top"> 312 ✔</td> 313 <td style="font-size: 10pt" valign="top"> 314 <i>Function removed, use </i><code>path().filename()</code><i> instead.</i></td> 315 </tr> 316 <tr> 317 <td style="font-size: 10pt" valign="top"> 318 <code>class directory_entry</code></td> 319 <td style="font-size: 10pt" valign="top"> 320 <code>leaf()</code></td> 321 <td style="font-size: 10pt" valign="top"> 322 ✔</td> 323 <td style="font-size: 10pt" valign="top"> 324 <i>Function removed, use </i><code>path().filename()</code><i> instead.</i></td> 325 </tr> 326 <tr> 327 <td style="font-size: 10pt" valign="top"> 328 <code>class directory_entry</code></td> 329 <td style="font-size: 10pt" valign="top"> 330 <code>string()</code></td> 331 <td style="font-size: 10pt" valign="top"> 332 ✔</td> 333 <td style="font-size: 10pt" valign="top"> 334 <i>Function removed, use </i><code>path().string()</code><i> instead.</i></td> 335 </tr> 336 <tr> 337 <td style="font-size: 10pt" valign="top"><code>class recursive_directory_iterator</code></td> 338 <td style="font-size: 10pt" valign="top"><code>level()</code></td> 339 <td style="font-size: 10pt" valign="top">✔</td> 340 <td style="font-size: 10pt" valign="top"><code>depth()</code></td> 341 </tr> 342 <tr> 343 <td style="font-size: 10pt" valign="top"><code>class recursive_directory_iterator</code></td> 344 <td style="font-size: 10pt" valign="top"><code>no_push_pending()</code></td> 345 <td style="font-size: 10pt" valign="top">✔</td> 346 <td style="font-size: 10pt" valign="top"><code>!recursion_pending()</code></td> 347 </tr> 348 <tr> 349 <td style="font-size: 10pt" valign="top"><code>class recursive_directory_iterator</code></td> 350 <td style="font-size: 10pt" valign="top"><code>no_push()</code></td> 351 <td style="font-size: 10pt" valign="top">✔</td> 352 <td style="font-size: 10pt" valign="top"><code>disable_recursion_pending()</code></td> 353 </tr> 354 <tr> 355 <td style="font-size: 10pt" valign="top"><code>directory.hpp</code></td> 356 <td style="font-size: 10pt" valign="top"><code>enum class symlink_option</code></td> 357 <td style="font-size: 10pt" valign="top">✔</td> 358 <td style="font-size: 10pt" valign="top"><i>Removed; use corresponding values of </i><code>enum class directory_options</code><i> instead.</i></td> 359 </tr> 360 <tr> 361 <td style="font-size: 10pt" valign="top"> 362 <code>directory.hpp</code></td> 363 <td style="font-size: 10pt" valign="top"> 364 <code>wrecursive_directory_iterator</code> typedef</td> 365 <td style="font-size: 10pt" valign="top"> 366 ✔</td> 367 <td style="font-size: 10pt" valign="top"> 368 <i>Removed; use </i><code>class recursive_directory_iterator</code><i> instead. Workaround provides 369 </i><code>typedef recursive_directory_iterator wrecursive_directory_iterator</code></td> 370 </tr> 371 <tr> 372 <td style="font-size: 10pt" valign="top"> 373 <code>operations.hpp</code></td> 374 <td style="font-size: 10pt" valign="top"> 375 The header provides <code>filesystem_error</code>, <code>file_status</code>, <code>directory_entry</code>, <code>directory_iterator</code>, <code>recursive_directory_iterator</code> and associated enums and functions.</td> 376 <td style="font-size: 10pt" valign="top"> 377 ✔</td> 378 <td style="font-size: 10pt" valign="top"> 379 <i>These components were moved to separate headers </i><code>exception.hpp</code><i>, </i><code>file_status.hpp</code><i> and </i><code>directory.hpp</code><i>. 380 The workaround is to include the new headers or </i><code>filesystem.hpp</code><i>. The new headers are still included by </i><code>operations.hpp</code><i> if 381 </i><code>BOOST_FILESYSTEM_NO_DEPRECATED</code><i> is not defined.</i></td> 382 </tr> 383 <tr> 384 <td style="font-size: 10pt" valign="top"> 385 Macro definitions</td> 386 <td style="font-size: 10pt" valign="top"> 387 <code>BOOST_WINDOW_API</code></td> 388 <td style="font-size: 10pt" valign="top"> 389 </td> 390 <td style="font-size: 10pt" valign="top"> 391 <i>No longer supported; API selection is always automatic.</i></td> 392 </tr> 393 <tr> 394 <td style="font-size: 10pt" valign="top"> 395 Macro definitions</td> 396 <td style="font-size: 10pt" valign="top"> 397 <code>BOOST_POSIX_API</code></td> 398 <td style="font-size: 10pt" valign="top"> 399 </td> 400 <td style="font-size: 10pt" valign="top"> 401 <i>No longer supported; API selection is always automatic.</i></td> 402 </tr> 403 <tr> 404 <td style="font-size: 10pt" valign="top"> 405 Macro definitions</td> 406 <td style="font-size: 10pt" valign="top"> 407 <code>BOOST_WINDOW_PATH</code></td> 408 <td style="font-size: 10pt" valign="top"> 409 </td> 410 <td style="font-size: 10pt" valign="top"> 411 <i>No longer supported; native path format selection is always automatic.</i></td> 412 </tr> 413 <tr> 414 <td style="font-size: 10pt" valign="top"> 415 Macro definitions</td> 416 <td style="font-size: 10pt" valign="top"> 417 <code>BOOST_POSIX_PATH</code></td> 418 <td style="font-size: 10pt" valign="top"> 419 </td> 420 <td style="font-size: 10pt" valign="top"> 421 <i>No longer supported; native path format selection is always automatic.</i></td> 422 </tr> 423 <tr> 424 <td style="font-size: 10pt" valign="top"> 425 Build system</td> 426 <td style="font-size: 10pt" valign="top"> 427 <code>Auto-linking on Windows</code></td> 428 <td style="font-size: 10pt" valign="top"> 429 </td> 430 <td style="font-size: 10pt" valign="top"> 431 <i>No longer supported. When users are linking against static library of Boost.Filesystem, 432 they are recommended to explicitly add Boost.Filesystem dependencies to their linker command 433 line. Shared library of Boost.Filesystem is not affected by this as it is already linked with 434 all its dependencies.</i></td> 435 </tr> 436</table> 437 438<h2>Deprecation rationale</h2> 439<h3><code>initial_path</code> function</h3> 440<p dir="ltr">Full implementation of <code>initial_path()</code> would require 441support from the C++ runtime startup code, and that doesn't seem likely to 442happen. Depending on the user to call <code>initial_path()</code> at the 443beginning of <code>main()</code> is too error prone. An equivalent 444function can trivially be provided by a user.</p> 445 446<hr> 447<p>Revised 448<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->29 December, 2014<!--webbot bot="Timestamp" endspan i-checksum="38652" --></p> 449 450<p>© Copyright Beman Dawes, 2002-2005, 2010</p> 451<p> Use, modification, and distribution are subject to the Boost Software 452License, Version 1.0. See <a href="http://www.boost.org/LICENSE_1_0.txt"> 453www.boost.org/LICENSE_1_0.txt</a></p> 454 455</body> 456 457</html> 458