diff options
| author | jhurst <jhurst@cinecert.com> | 2016-12-03 21:26:24 +0000 |
|---|---|---|
| committer | jhurst <> | 2016-12-03 21:26:24 +0000 |
| commit | 74e6b1105dffe52c6f347d723507ab346eabbb5a (patch) | |
| tree | b0e166ee8988cc9f2b150691effd0c4a1fa77cbd /src/KM_fileio.cpp | |
| parent | 779d581d1176e0d09ae13a65d8047509bfa11eeb (diff) | |
o Fixed *all* Partiton version numbers in AS-02 files
Diffstat (limited to 'src/KM_fileio.cpp')
| -rw-r--r-- | src/KM_fileio.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/KM_fileio.cpp b/src/KM_fileio.cpp index b35e8ac..231f3b8 100644 --- a/src/KM_fileio.cpp +++ b/src/KM_fileio.cpp @@ -48,6 +48,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <mach-o/dyld.h> #endif +#if defined(__OpenBSD__) +#include <sys/sysctl.h> +#endif + using namespace Kumu; #ifdef KM_WIN32 @@ -658,17 +662,23 @@ Kumu::GetExecutablePath(const std::string& default_path) size_t size = X_BUFSIZE; ssize_t rc = readlink("/proc/self/exe", path, size); success = ( rc != -1 ); -#elif defined(__OpenBSD__) || defined(__FreeBSD__) - size_t size = X_BUFSIZE; - ssize_t rc = readlink("/proc/curproc/file", path, size); - success = ( rc != -1 ); +#elif defined(__OpenBSD__) + // This fails if the CWD changes after the program has started but before the + // call to GetExecutablePath(). For least surprise, call GetExecutablePath() + // immediately in main() and save the value for later use. + const, char* p = getenv("_"); + if ( p ) + { + return Kumu::PathMakeAbsolute(p); + } #elif defined(__FreeBSD__) + // requires procfs size_t size = X_BUFSIZE; ssize_t rc = readlink("/proc/curproc/file", path, size); success = ( rc != -1 ); #elif defined(__NetBSD__) size_t size = X_BUFSIZE; - ssize_t rc = readlink("/proc/curproc/file", path, size); + ssize_t rc = readlink("/proc/curproc/exe", path, size); success = ( rc != -1 ); #elif defined(__sun) && defined(__SVR4) size_t size = X_BUFSIZE; |
