Fix several bugs in common/src/pathName.C
authorTim Haines <thaines.astro@gmail.com>
Tue, 5 Feb 2019 19:31:10 +0000 (13:31 -0600)
committerGitHub <noreply@github.com>
Tue, 5 Feb 2019 19:31:10 +0000 (13:31 -0600)
commitf3a01e30833221d1fe39026bb478e535131a3620
treed95369c118b8b53b276da205bf20b74b9d153d97
parent1acaa0ae55c63828838aac09bb804940d45c0b75
Fix several bugs in common/src/pathName.C

FIXED:
1. Tilde expansion is done _before_ the existence check.
Since `stat` does not do shell expansions, resolve_file_path("~")
    always returned an empty string instead of the expanded path.

2. Tilde detection logic was inverted

3. Remove possible buffer overflow when making path relative to CWD

ADDED features:

1. Removes leading and trailing whitespace

2. Add basic support for Windows file system by using Boost::filesystem
Expansion of Windows-specific shell variables, e.g. %HOME%, is _not_
    supported.

3. Leverage move semantics to reduce copying
This reduces the maximum number of string copies from 5 to 3. When
resolve_file_path is invoked with an r-value, there are only two
    copies.
common/src/addrtranslate-linux.C
common/src/addrtranslate-sysv.C
common/src/pathName.C
common/src/pathName.h
common/src/serialize-bin.C
dyninstAPI/src/freebsd.C
proccontrol/src/linux.C
proccontrol/src/loadLibrary/codegen-freebsd.C