Commit Graph

354 Commits

Author SHA1 Message Date
Andrey Semashev
9df2bfab58 Corrected docs formatting and invalid characters.
[ci skip]
2021-06-12 19:54:59 +03:00
Andrey Semashev
60e908dfcf Don't return root directory from path::filename().
This is a breaking change.

path::filename accessor now only returns the actual filename or the implied
trailing dot element of the path, if it ends with a separator other than
root directory. This makes boost::filesystem::path behavior closer to that
of std::filesystem::path.

Updated tests and docs accordingly.

Closes https://github.com/boostorg/filesystem/issues/194.
2021-06-10 03:49:30 +03:00
Andrey Semashev
e2371dd89f Updated docs for path::stem and path::extension. 2021-06-10 03:41:37 +03:00
Andrey Semashev
26a07aad53 Allow creating symlinks on Windows in non-elevated mode.
If Windows is running in Developer mode, it is possible to specify
SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag to CreateSymbolicLinkW
so that the call doesn't require elevated privileges.

While at it, explicitly separated implementation of create_symlink and
create_directory_symlink for POSIX and Windows.
2021-06-09 19:09:24 +03:00
Andrey Semashev
29ef7d683d Reverted using std::filesystem::path to pass paths to file streams.
This doesn't compile with gcc 8 on MinGW-w64, and fails in runtime with
gcc 10.2 and clang 8.0.1 on Cygwin64 because character code conversion errors,
so basically std::filesystem never works with wide paths on Windows.

We still use wide paths as `const wchar_t*` with libc++ though.

Also, changed BOOST_FILESYSTEM_C_STR definition to accept the path as
an argument and use that definition in the tests rather than duplicating it.

Related to https://github.com/boostorg/filesystem/issues/181.
2021-06-09 18:28:28 +03:00
Andrey Semashev
179878d39e Enable wide character paths for file streams with more standard libraries.
libstdc++ starting 8.1.0 in C++17 mode support std::filesystem and is able to
open the file streams with std::filesystem::path constructible from wide
strings.

libc++ starting 7.0 also supports std::filesystem::path in C++17 mode and may
also support passing `const wchar_t*` strings to open files.

Closes https://github.com/boostorg/filesystem/issues/181.
2021-06-07 00:10:24 +03:00
Andrey Semashev
4b5023c94b Use preferred separator for root directory in (weakly_)canonical.
Using preferred separators in paths on Windows works around "file not found"
errors returned by GetFileAttributesW, when a forward slash is used in some paths.
Specifically, this can happen with UNC paths and paths starting with the Win32
filesystem prefix ("\\?\").

Closes https://github.com/boostorg/filesystem/issues/87.
Closes https://github.com/boostorg/filesystem/issues/187.
2021-06-06 22:56:16 +03:00
Andrey Semashev
8328bb277b Treat filenames starting with a dot as filenames rather than extension.
Filenames starting with a dot (and no other dots) are commonly treated
as filenames with no extension rather than an extension. This is also
the behavior mandated in C++17 filesystem.

Reported in https://github.com/boostorg/filesystem/issues/88.
2021-06-06 18:31:41 +03:00
Andrey Semashev
a252f15f06 Use substitute names to obtain the target of a reparse point.
The print name can be empty for some reparse points (e.g. mount points
created by Box cloud storage driver and directory junctions created by
junction.exe). It is supposed to be mostly used for presenting a "simple"
path to the user and not to actually locate the file.

The substitute name is the actionable replacement path, but it is in
NT path format and can potentially point to unmounted volumes and
UNC resources. The implementation attempts to convert the NT path
to Win32 path by matching commonly known patterns against the NT path.
If no pattern matches, we create a Win32 path by converting the NT path
prefix to "\\?\".

Related to https://github.com/boostorg/filesystem/issues/187.
2021-06-06 04:20:24 +03:00
Andrey Semashev
16bd89b7c0 Reworked path::lexically_normal to remove some redundant dot path elements.
The new implementation is also not relying on the root name format and
is more pertormant as it avoids unnecessarily copying path elements during
operation.

Note that this commit does not remove the trailing dot elements in the
normalized paths.
2021-06-05 23:34:49 +03:00
Andrey Semashev
4b84226783 Refactored path implementation for better support Windows path prefixes.
- Unified root name and root directory parsing that was scattered and
  duplicated across different algorithms. The new implementation is
  consolidated in a single function for parsing root name and root
  directory, which is used from various algorithms.

- The new root name parsing now supports Windows local device ("\\.\")
  and NT path ("\??\") prefixes. It also adds support for filesystem
  ("\\?\") prefix to some of the higher level algorithms that were
  using custom parsing previously. Tests updated to verify these prefixes.

- Some of the path decomposition methods were unified with presence checking
  methods (e.g. root_name with has_root_name). This makes these methods
  work consistently and also makes the has_* methods less expensive as
  they no longer have to construct a path only to check if it is empty.

- The filename accessor no longer returns root name if the whole path
  only consists of a root name. This also affects stem and extension as
  those accessors are based on filename. This is a breaking change.

- Cleaned up code:
  - Removed redundant checks for std::wstring support.
  - Added header/footer headers to globally disable compiler warnings.
  - Removed commented out super-deprecated code.
  - Added missing includes and removed includes that are not needed.
  - Nonessential code formatting.
2021-06-05 19:52:33 +03:00
Andrey Semashev
0eb5290401 Added weakly_canonical overloads taking base path as an argument.
This can be useful when current_path is not supported by the system.
2021-05-29 18:40:51 +03:00
Andrey Semashev
491369de3f Removed mention of error code for current_path when it is not supported.
We may change error codes reported for unsupported functions in the future,
so don't document them for now.

[ci skip]
2021-05-29 17:15:27 +03:00
Andrey Semashev
a7ff5b43f3 Implemented a limit on the number of symlinks resolved in canonical().
This protects from an infinite loop in case if symlinks form a loop.

The limit is currently system-dependent, with a lower bound of 40.
2021-05-29 03:09:29 +03:00
Andrey Semashev
267b945993 Fail current_path on Windows CE with ERROR_NOT_SUPPORTED.
Windows CE does not support current directory.
2021-05-28 17:48:43 +03:00
Andrey Semashev
616dab9b8c Update root in canonical if resolved link is absolute with a different root.
When canonical() resolves symlink, it is possible that a symlink resolves
to an absolute path with a different root. We need to update the root
path so that when we restart symlink resolution the check for the
root path still works.

Also, slightly refactored the canonical() implementation to reduce code
size and possibly optimize the generated code.
2021-05-28 16:03:28 +03:00
Andrey Semashev
d44b4ce865 Use a variable buffer size for read/write loop.
The buffer size is now selected based on the file size and filesystem block
size and is limited with min and max. This allows to reduce memory consumption
and possibly increase performance when copying smaller files.
2021-05-19 10:54:03 +03:00
Andrey Semashev
2accecc330 Removed machine-specific scripts that are not used anymore. 2021-05-19 03:19:08 +03:00
Andrey Semashev
88c2a2df8c Check the source filesystem type before using sendfile/copy_file_range.
Some filesystems have regular files with generated content. Such files have
arbitrary size, including zero, but have actual content. Linux system calls
sendfile or copy_file_range will not copy contents of such files, so we must
use a read/write loop to handle them.

Check the type of the source filesystem before using sendfile or
copy_file_range and fallback to the read/write loop if it matches one of
the blacklisted filesystems: procfs, sysfs, tracefs or debugfs.

Also, added a test to verify that copy_file works on procfs.
2021-05-19 01:43:22 +03:00
Andrey Semashev
b27ad65326 Increased the minimum buffer size in read/write loop in copy_file.
Also, take into account the target filesystem block size, if available.
2021-05-19 00:22:31 +03:00
Andrey Semashev
4b9052f1e0 Fallback to read/write loop if sendfile/copy_file_range fail.
Since sendfile and copy_file_range can fail for some filesystems
(e.g. eCryptFS), we have to fallback to the read/write loop in copy_file
implementation. Additionally, since we implement the fallback now,
fallback to sendfile if copy_file_range fails with EXDEV and use
copy_file_range on older kernels that don't implement it for
cross-filesystem copying. This may be beneficial if copy_file_range
is used within a filesystem, and is performed on a remote server NFS or CIFS).

Also, it was discovered that copy_file_range can also fail with EOPNOTSUPP
when it is performed on an NFSv4 filesystem and the remote server does
not support COPY operation. This happens on some patched kernels in RHEL/CentOS.

Lastly, to make sure the copy_file_data pointer is accessed atomically,
it is now declared as an atomic value. If std::atomic is unavailable,
Boost.Atomic is used.

Fixes https://github.com/boostorg/filesystem/issues/184.
2021-05-18 23:16:02 +03:00
Andrey Semashev
3c8408995f Added copy_options::synchronize_data and copy_options::synchronize.
These options allow to synchronize the copied data and attributes with
the permanent storage. Note that by default on POSIX systems copy_file
used to synchronize data in previous releases, and this commit changes
this. The caller now has to explicitly request syncing, as it has
significant performance implications.

Closes https://github.com/boostorg/filesystem/issues/186.
2021-05-17 20:33:57 +03:00
Andrey Semashev
be900df3e6 Added EINTR handling on close(2).
At least HP-UX is known to leave the file descriptor open if close() returns
EINTR. On other systems (Linux, BSD, Solaris, AIX) the file descriptor
is closed in the same situation, and closing it again may potentially close
the wrong descriptor if it is reused by another thread. We introduce
close_fd internal helper to abstract away these platform differences.
2021-05-17 18:39:46 +03:00
Andrey Semashev
05de74a000 Added config macros for disabling use of some system APIs.
By defining these new config macros the user can configure the library
to avoid using some system APIs even if they are detected as available
by the library build scripts. This can be useful in case if the API
is known to consistently fail at runtime on the target system.

Related to https://github.com/boostorg/filesystem/issues/172.
2021-05-16 20:44:09 +03:00
Andrey Semashev
c03249c375 Reformatted code for more consistent look and better readability. 2021-04-24 22:37:57 +03:00
Andrey Semashev
83429c9bfd Check file status for status_error in create_directories.
create_directories used to ignore errors returned by status()
calls issued internally. The operation would likely fail anyway,
but the error codes returned by create_directories would be incorrect.
Also, it is better to terminate the operation as early as possible
when an error is encountered.

Reported in https://github.com/boostorg/filesystem/issues/182.
2021-03-29 20:20:34 +03:00
Benjamin Nauck
4e992efc2e
Fix misplaced link opening tag for is_directory
The opening tag was placed between the letter i and s in is_directory
instead of before the i.
2021-03-12 16:57:07 +01:00
Andrey Semashev
cc57d28995 Fixed an exception being thrown by path::remove_filename if the path is "////".
Also added tests verifying the case.

Fixes https://github.com/boostorg/filesystem/issues/176.
2021-02-26 14:51:04 +03:00
Andrey Semashev
d3d8d12afa Added a release note about updated WASI support. 2020-12-23 11:15:04 +03:00
Andrey Semashev
6c2bf50c3a Fixed space operation on Windows not failing for a non-existing path.
Fixes https://github.com/boostorg/filesystem/issues/167.
2020-11-25 18:15:30 +03:00
Andrey Semashev
6b5e38134a On OpenBSD 4.4 and newer, use statvfs to obtain filesystem space info.
Closes https://github.com/boostorg/filesystem/pull/162.
2020-10-04 15:31:29 +03:00
Andrey Semashev
e260f134d4 Removed const qualification from return types of path methods.
The qualification serves no practical purpose and may prevent optimizations
like move construction or assignment.

Closes https://github.com/boostorg/filesystem/issues/160.
2020-09-23 20:01:04 +03:00
Andrey Semashev
ec64afc0f5 Ported most of the operations to Linux statx system call.
The Linux statx system call allows to specify the data the caller is
interested in. This has the potential of improving performance
if some information is expensive to provide.

Also, changed hard_link_count to return static_cast<uintmax_t>(-1)
in case of errors. Changed file_size to report ENOSYS instead of
EPERM when the operation is invoked on a non-regular file.
2020-08-21 01:33:44 +03:00
Andrey Semashev
8d6eaeb5af Changed returned value of last_write_time in case of error to min std::time_t.
This follows C++20 definition, which returns a minimum representable time
point value in case of error.

Also, slight refactoring of last_write_time setter function and a fix
to ensure the error code is cleared incase of success.
2020-08-21 01:32:17 +03:00
Andrey Semashev
a031e4ffa9 Added creation_time operation.
The operation allows to query file creation time.

Implementation partially inspired by:

https://github.com/boostorg/filesystem/pull/134

Closes https://github.com/boostorg/filesystem/pull/134.
2020-08-21 01:32:04 +03:00
Andrey Semashev
db390391bb Restored auto-linking and Windows CE support.
Auto-linking can still be useful to users of MSVC and compatible
compilers on Windows, when the user links against static build of
Boost.Filesystem. This feature is marked deprecated though, so
it can be removed in the future, when the generated CMake config
files include information about third-party dependencies of Boost
libraries.

Additionally, restored support for linking against Windows CE-cpecific
coredll library. This platform is not tested though and therefore not
properly supported.

Closes https://github.com/boostorg/filesystem/issues/156.
2020-07-28 14:48:42 +03:00
Andrey Semashev
9ea8bfa108 Corrected a typo in release history. 2020-07-16 13:02:42 +03:00
Andrey Semashev
e7c05beebc Added a release note about improving support for Embarcadero compilers. 2020-07-15 00:30:07 +03:00
Andrey Semashev
7e300b986b Corrected system_complete description in the docs.
The updated description refers to absolute operation instead of
complete, which was deprecated and no longer documented in the
reference section. Also, removed a broken link to non-existing
not in the complete docs.

Closes https://github.com/boostorg/filesystem/pull/154.
2020-07-08 17:54:02 +03:00
Andrey Semashev
7487e33da9 Added unique_path implementation based on BCrypt API on Windows. 2020-06-05 03:17:24 +03:00
Andrey Semashev
eab0e77f24 Added implementation of unique_path based on arc4random. 2020-06-05 01:40:52 +03:00
Andrey Semashev
e2e4b85ee0 Added unique_path based on Linux getrandom system call.
The new backend is not vulnerable to file descriptor exhaustion attacks.
2020-06-05 01:22:55 +03:00
Andrey Semashev
a6eb102f3d Added missing status inspection functions for directory_entry and error_code.
Also, removed incorrect noexcept markup for the overloads not taking error_code.
2020-06-04 23:42:32 +03:00
Andrey Semashev
362696738f Added a release note about fixing is_symlink(directory_entry). 2020-06-04 23:28:55 +03:00
Andrey Semashev
bad98ad954 Added a release note about improving support for WASI platform. 2020-05-23 17:25:22 +03:00
Andrey Semashev
559b0c291a In copy, support symlink creation when target directory is not current.
When the source path is not absolute and copy_options::create_symlinks is
specified, deduce the relative path from the target location to the source
file to create a symlink. This allows to copy to a path that is not the current
path.

Also, added absolute overloads taking error_code argyment.

Also, when current_path() is used as a default argument to other operations,
and the operation also accepts error_code, use current_path(ec) to report
errors through the error code rather than throwing an exception.

Also, added a test for copy operation.
2020-05-11 15:10:23 +03:00
Andrey Semashev
80709a9411 Reworked copy operation. Added create_directory with two paths.
The updated copy implementation follows C++20 [fs.op.copy] definition
and implements additional copy options.

The new create_directory overloads accepting two paths are functionally
similar to copy_directory, but are compliant with C++20
[fs.op.create.directory]. The copy_directory operation has been deprecated
in favor of create_directory.
2020-05-10 03:02:32 +03:00
Andrey Semashev
4e6317e4b0 Make copy_file return bool, indicating whether file has been copied.
This corresponds to C++20.
2020-05-09 19:38:50 +03:00
Andrey Semashev
ac02dbed2e Added support for copy_options::update_existing to copy_file. 2020-05-09 19:19:33 +03:00
Andrey Semashev
8c3ae354a0 Require at most one copy option to be specified in copy_file. 2020-05-08 22:54:19 +03:00
Andrey Semashev
5d3082b4d4 Use a better highlight for the new feature in release notes. 2020-05-08 19:13:11 +03:00
Andrey Semashev
dea37d899e Added support for copy_options::skip_existing. 2020-05-08 19:09:39 +03:00
Andrey Semashev
9182b4caa3 Added copy_file implementations based on sendfile and copy_file_range on Linux.
This may improve file copying performance.
2020-05-05 20:31:41 +03:00
Andrey Semashev
f199152b7d Refactored copy_file, added copy_options, deprecated copy_option.
The copy_file operation implementation has been inlined into the
detail::copy_file function. The part that copies the file body has been
extracted to a separate function, so that addition of specialized copy
implementations later is possible.

Added copy_options enum, which reflects the enum from C++20. Currently,
only overwrite_existing option is supported. Other options will be added
later.

The old enum copy_option is deprecated in favor of copy_options.

Updated docs to reflect recent changes to copy_file behavior.
2020-05-05 18:34:20 +03:00
Andrey Semashev
fcbdae1581 Added temp_directory_path implementation for Windows CE. Refactor POSIX version.
The Windows CE implementation is based on the code proposed in
https://github.com/boostorg/filesystem/pull/25, updated and corrected.

Closes https://github.com/boostorg/filesystem/pull/25.
2020-05-05 01:54:35 +03:00
Andrey Semashev
a26ead7402 Updated space() behavior to match C++20. Add support for file paths on Windows.
space() now initializes space_info members to -1 values, which is used when the
structure is returned in case of error.

On Windows, check if the path refers to a directory, and use the parent
directory if not. In order to make sure we return space information for the
target filesystem, we have to resolve symlinks in this case.

Fixes https://github.com/boostorg/filesystem/issues/73.
2020-05-05 01:14:00 +03:00
Andrey Semashev
726d2bfa35 Specify file sharing flags in read_symlink on Windows.
This fixes potential sharing violation errors when the same file
is opened concurrently by read_symlink and someone else.

Fixes https://github.com/boostorg/filesystem/issues/138.
2020-05-03 20:29:19 +03:00
Andrey Semashev
eedaa1f565 Set S_IWUSR perm on the file created by copy_file and copy source perms on completion.
This ensures that the files overwritten or created by copy_file have the same
permission bits as the source file, as required by C++20. Also, for the duration
of the copy operation we ensure the target file has writing permission set.
This is important e.g. for NFS, which checks the permission on the server,
so a writable file descriptor on the client is not enough for the write
operation to succeed.

Notably, this doesn't save the case of overwriting the file with no write
permission set. In this case the operation will fail with EPERM.

Also, use fsync/fdatasync to guarantee that the target file is written
completely without errors before closing the file descriptor.
2020-05-03 19:43:55 +03:00
Andrey Semashev
1f06d4f064 Added release notes for the fixes in canonical, read_symlink and equivalent. 2020-05-02 21:41:15 +03:00
Andrey Semashev
a5fc1faf28 Add source and target file checks to copy_file, simplify file equivalence checks
The POSIX copy_file implementation has beed reworked to perform checks for
whether the source and target files are regilar files and whether the source
and target paths identify the same file. Also, the implementation has been fixed
to report the correct error code from the failed operation to the caller
in case of failure. The implementation is now also protected against EINTR
errors and uses O_CLOEXEC when possible to avoid leaking file descriptors
if the caller process forks.

Also, the file equivalence test is now simplified to not test the file size
and last modification time. These tests had a potential of causing a false
negative, if the file that is being tested was modified between the stat()
calls that were used to obtain file information from the paths.

Closes https://github.com/boostorg/filesystem/pull/48.
2020-05-01 20:09:37 +03:00
Andrey Semashev
79e8d844f5 Added a release note about removing compile-time checks for symlinks and hardlinks on Windows. 2020-05-01 20:09:37 +03:00
Glen Fernandes
aaf54ada48 Fix link to use Boost ML archive instead of GMANE 2020-04-09 08:23:40 -04:00
Andrey Semashev
93f0c76869 Added a note about moving filesystem_error implementation to the compiled library. 2019-10-26 01:06:44 +03:00
Andrey Semashev
e4de1c4138 Removed "new" content markup, HTML fixes, added lexically_proximate docs. 2019-10-05 23:18:30 +03:00
Andrey Semashev
06d8d660a1 Fixed path::lexically_relative to handle empty, dot and dot-dot elements.
The algorithm implementation now ignores empty and dot path elements in the
argument path and accounts dot-dot elements by decreasing the number of
dot-dot elements to generate in the resulting relative path. This is
according to C++17 std::path specification [fs.path.gen]/4.

Fixes https://github.com/boostorg/filesystem/issues/76.
2019-10-05 19:14:21 +03:00
Andrey Semashev
03c797998f Added directory_options::skip_dangling_symlinks.
The new option allows to skip dangling directory symlinks when iterating
over a directory using recursive_directory_iterator.

This also updates the operations_test, which failed spuriously because
the test created dangling symlinks for some of its checks. Since the order
of iteration is undefined, the tests sometimes passed, when the dangling
symlinks were encountered late during the iteration.
2019-08-20 19:02:56 +03:00
Andrey Semashev
9a14c37d6f Added directory_options. Set recursive_dir_iterator to end or pop on errors.
The directory_options enum reflects the same-named enum from C++20. It is now
supported by both directory_iterator and recursive_directory_iterator. In
particular, both iterators now support skip_permission_denied option.

recursive_directory_iterator is now set to end by default on errors, as
required by C++20. An additional directory_options::pop_on_error policy
is added to allow the iterator recover from an error. When this option is
specified and an error occurs, the iterator repeatedly pops the recursion level
until the pop completes successfully or the end state is reached.

recursive_directory_iterator that have standard counterparts (level,
no_push_pending, no_push_request and no_push) are now deprecated and can be
removed by defining BOOST_FILESYSTEM_NO_DEPRECATED. These members will be
removed in a future release.

Docs and tests updated accordingly. Also, in docs reconstructed release history
for the past releases from Boost release notes.

Fixes https://github.com/boostorg/filesystem/issues/112
Fixes https://github.com/boostorg/filesystem/issues/113
2019-08-02 19:43:46 +03:00
Andrey Semashev
27256f9d55 Removed asynch-exceptions=on for MSVC. 2019-01-14 20:46:59 +03:00
Andrey Semashev
c0c93a0c58 Removed linking with Boost.System from docs and examples. 2019-01-14 20:40:06 +03:00
Andrey Semashev
613df5a93d
Merge pull request #38 from jwilk-forks/spelling
Fix typos in documentation
2018-11-24 20:17:54 +03:00
Andrey Semashev
fe0e264cf6
Merge pull request #46 from programmerjake/develop
fix ISO9660 Joliet name and remove extraneous character
2018-11-24 19:57:14 +03:00
Beman
49218481e5 Clean up some tutorial example code and fix the wording for it in the tutorial. Thanks to Anmol-Singh-Jaggi for pull request #11. 2017-08-07 20:01:08 -04:00
Jacob Lifshay
9f926b83d9 fix ISO9660 Joliet name 2017-06-26 21:10:06 -07:00
Jacob Lifshay
e7d2e325f9 remove extraneous character in #name_check_functions 2017-06-26 21:07:46 -07:00
Beman
7fd4214912 is_empty()overload with error_code parameter should not throw on error. Thanks to ldqrk for pull request #42 2017-04-03 09:36:43 -04:00
Beman
9144a8ebd7 Update release history. 2017-04-03 08:29:00 -04:00
Beman
4ccb6c38f2 Start release history for 1.64 2016-12-30 14:52:52 -05:00
Jakub Wilk
97cb638138 Fix typos in documentation. 2016-12-07 12:54:33 +01:00
Beman
93429f24a1 Update release_history.html for pull request #31. 2016-11-26 14:27:33 -05:00
Beman Dawes
fca046d0c4 Merge pull request #31 from faithandbrave/patch-1
fix docs for signature stem(), extension() member functions
2016-11-26 14:18:26 -05:00
Beman
4e4374336c Fix #7307, remove_all(dirname,ec) throws on write protected directories. This is a tough one to test. There are three internal function calls where errors might arise, and it would take too much time to write tests for each of those cases. Someday we will have Titus Winter's mock installable file system, but for now are relying on code inspection rather than testing. 2016-11-23 12:02:09 -05:00
Beman
e34b838041 Document a couple of pull requests. 2016-11-23 10:51:47 -05:00
Beman Dawes
51e51fc735 Merge pull request #34 from tbeu/tbeu-patch-1
Fix link text in reference.
2016-11-23 10:39:57 -05:00
Beman
216720de55 Fix #12495, create_directories() crashes when passed empty string as path, from Samantha Ritter. Also affected create_directory(). Charles Olivi submitted a pull request with some particularly helpful test cases. 2016-11-23 09:58:43 -05:00
Beman
5004d7b177 Fix #12578 - Bug in directory_iterator, recursive_directory_iterator, equality testing of copied iterator also at end. 2016-11-23 09:21:32 -05:00
Beman
a3c1014b21 Tweak release history. 2016-11-23 05:33:53 -05:00
Beman
48faf2b1ee Add deprecated path::generic() 2016-11-22 16:51:45 -05:00
Rene Rivera
c8f1b16989 Add, and update, documentation build targets. 2016-10-07 23:07:33 -05:00
tbeu
ce0be4bfe7 Fix link text 2016-09-13 14:01:19 +02:00
Akira Takahashi
0027b3ef53 fix signature stem(), extension() member functions
`stem()` and `extension()` member functions doesn't have parameter.
2016-07-07 15:55:34 +09:00
Beman
2f6391b931 Add class path constexpr constants separator and dot of the type appropriate for the platform, and add class path member query functions filename_is_dot() and filename_is_dot_dot(). These add convenience and the implementations may be more efficient that user coded equivalent functions. Also add detail functions is_directory_separator() and is_element_separator(), and replace all uses of local is_separator() in path.cpp with detail::is_directory_separator(). 2015-12-01 10:17:45 -05:00
Beman
7b31aa0259 Fix typo in issue # and link (Daniel Krügler) 2015-11-21 08:06:49 -05:00
Beman
3c344a5f0b Revert to lexical functions back to being members of class path. This is not the time to redesign the library's lexical vs operational conventions. It would break existing users mental model of lexical vs operational.
See doc/relative_proposal.html#Add-lexical-functions for additional rationale.
2015-10-25 13:28:49 -04:00
Beman
b0091c2eeb Revert to lexical functions being members of class path. This is not the time to redesign the library's lexical vs operational conventions. It would break existing users mental model of lexical vs operational. 2015-10-25 08:23:40 -04:00
Beman
8c179bf1df Add 1.58.0 BOOST_SCOPED_ENUM fix history 2015-10-25 05:47:45 -04:00
Beman
7e3e5ef60c Fix #11733, Missing unistd.h include in boost/libs/filesystem/src/unique_path.cpp by apply a patch from Idar Tollefsen. 2015-10-16 16:03:45 -04:00
Beman
06968ee032 Fix pull request 17, 'some_function() noexcept = default;' from Antony Polukhin, by never relying on "= default". Antony's pull request would have fixed the problem interaction with noexcept by eliminating the noexcept. I preferred to retain the noexcept rather than the "= default", as applying "= default" has been exceedingly troublesome for both VC++ and GCC due to interactions between the two C++11 features. GCC interactions varied not just for the version, but also for the platform. 2015-10-08 07:19:55 -04:00
Beman
c3f9a2ec92 Correct some file names 2015-09-18 10:39:38 -04:00
Beman
865102a87a Initial commit 2015-09-18 07:49:00 -04:00
Beman
a5ecdd44d2 Acknowledge minor fixes. 2015-09-17 07:50:28 -04:00