diff options
author | akhropov <akhropov@yandex-team.ru> | 2022-02-10 16:46:32 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:32 +0300 |
commit | 00afc96e9c0298054b7386fa7fb9e3cc3d67b974 (patch) | |
tree | cb7a9f4a92c0d4cc5a86eeed49ad71e810953c1f /util/system/execpath.cpp | |
parent | 83a8efcf3af051e3dd59c00d1d5dafc96412ec1e (diff) | |
download | ydb-00afc96e9c0298054b7386fa7fb9e3cc3d67b974.tar.gz |
Restoring authorship annotation for <akhropov@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'util/system/execpath.cpp')
-rw-r--r-- | util/system/execpath.cpp | 114 |
1 files changed, 57 insertions, 57 deletions
diff --git a/util/system/execpath.cpp b/util/system/execpath.cpp index 33198af58b0..7cff2d59737 100644 --- a/util/system/execpath.cpp +++ b/util/system/execpath.cpp @@ -9,9 +9,9 @@ #elif defined(_win_) #include "winint.h" #include <io.h> -#elif defined(_linux_) +#elif defined(_linux_) #include <unistd.h> -#elif defined(_freebsd_) +#elif defined(_freebsd_) #include <string.h> #include <sys/types.h> // for u_int not defined in sysctl.h #include <sys/sysctl.h> @@ -28,7 +28,7 @@ #include <util/string/cast.h> #include "filemap.h" -#include "execpath.h" +#include "execpath.h" #include "fs.h" #if defined(_freebsd_) @@ -36,28 +36,28 @@ static inline bool GoodPath(const TString& path) { return path.find('/') != TString::npos; } -static inline int FreeBSDSysCtl(int* mib, size_t mibSize, TTempBuf& res) { - for (size_t i = 0; i < 2; ++i) { - size_t cb = res.Size(); +static inline int FreeBSDSysCtl(int* mib, size_t mibSize, TTempBuf& res) { + for (size_t i = 0; i < 2; ++i) { + size_t cb = res.Size(); if (sysctl(mib, mibSize, res.Data(), &cb, nullptr, 0) == 0) { - res.Proceed(cb); - return 0; - } else if (errno == ENOMEM) { - res = TTempBuf(cb); - } else { - return errno; - } + res.Proceed(cb); + return 0; + } else if (errno == ENOMEM) { + res = TTempBuf(cb); + } else { + return errno; + } } - return errno; + return errno; } static inline TString FreeBSDGetExecPath() { int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1}; - TTempBuf buf; + TTempBuf buf; int r = FreeBSDSysCtl(mib, Y_ARRAY_SIZE(mib), buf); - if (r == 0) { + if (r == 0) { return TString(buf.Data(), buf.Filled() - 1); - } else if (r == ENOTSUP) { // older FreeBSD version + } else if (r == ENOTSUP) { // older FreeBSD version /* * BSD analogue for /proc/self is /proc/curproc. * See: @@ -65,7 +65,7 @@ static inline TString FreeBSDGetExecPath() { */ TString path("/proc/curproc/file"); return NFs::ReadLink(path); - } else { + } else { return TString(); } } @@ -74,56 +74,56 @@ static inline TString FreeBSDGetArgv0() { int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_ARGS, getpid()}; TTempBuf buf; int r = FreeBSDSysCtl(mib, Y_ARRAY_SIZE(mib), buf); - if (r == 0) { + if (r == 0) { return TString(buf.Data()); - } else if (r == ENOTSUP) { + } else if (r == ENOTSUP) { return TString(); - } else { - ythrow yexception() << "FreeBSDGetArgv0() failed: " << LastSystemErrorText(); - } + } else { + ythrow yexception() << "FreeBSDGetArgv0() failed: " << LastSystemErrorText(); + } } static inline bool FreeBSDGuessExecPath(const TString& guessPath, TString& execPath) { if (NFs::Exists(guessPath)) { - // now it should work for real - execPath = FreeBSDGetExecPath(); - if (RealPath(execPath) == RealPath(guessPath)) { - return true; - } - } - return false; -} - + // now it should work for real + execPath = FreeBSDGetExecPath(); + if (RealPath(execPath) == RealPath(guessPath)) { + return true; + } + } + return false; +} + static inline bool FreeBSDGuessExecBasePath(const TString& guessBasePath, TString& execPath) { return FreeBSDGuessExecPath(TString(guessBasePath) + "/" + getprogname(), execPath); -} - +} + #endif static TString GetExecPathImpl() { #if defined(_solaris_) return execname(); #elif defined(_darwin_) - TTempBuf execNameBuf; - for (size_t i = 0; i < 2; ++i) { + TTempBuf execNameBuf; + for (size_t i = 0; i < 2; ++i) { std::remove_pointer_t<TFunctionArg<decltype(_NSGetExecutablePath), 1>> bufsize = execNameBuf.Size(); int r = _NSGetExecutablePath(execNameBuf.Data(), &bufsize); if (r == 0) { return execNameBuf.Data(); - } else if (r == -1) { - execNameBuf = TTempBuf(bufsize); + } else if (r == -1) { + execNameBuf = TTempBuf(bufsize); } } - ythrow yexception() << "GetExecPathImpl() failed"; + ythrow yexception() << "GetExecPathImpl() failed"; #elif defined(_win_) - TTempBuf execNameBuf; + TTempBuf execNameBuf; for (;;) { DWORD r = GetModuleFileName(nullptr, execNameBuf.Data(), execNameBuf.Size()); - if (r == execNameBuf.Size()) { - execNameBuf = TTempBuf(execNameBuf.Size() * 2); - } else if (r == 0) { - ythrow yexception() << "GetExecPathImpl() failed: " << LastSystemErrorText(); - } else { + if (r == execNameBuf.Size()) { + execNameBuf = TTempBuf(execNameBuf.Size() * 2); + } else if (r == 0) { + ythrow yexception() << "GetExecPathImpl() failed: " << LastSystemErrorText(); + } else { return execNameBuf.Data(); } } @@ -133,23 +133,23 @@ static TString GetExecPathImpl() { // TODO(yoda): check if the filename ends with " (deleted)" #elif defined(_freebsd_) TString execPath = FreeBSDGetExecPath(); - if (GoodPath(execPath)) { - return execPath; - } - if (FreeBSDGuessExecPath(FreeBSDGetArgv0(), execPath)) { - return execPath; + if (GoodPath(execPath)) { + return execPath; } - if (FreeBSDGuessExecPath(getenv("_"), execPath)) { - return execPath; + if (FreeBSDGuessExecPath(FreeBSDGetArgv0(), execPath)) { + return execPath; } - if (FreeBSDGuessExecBasePath(getenv("PWD"), execPath)) { - return execPath; + if (FreeBSDGuessExecPath(getenv("_"), execPath)) { + return execPath; } + if (FreeBSDGuessExecBasePath(getenv("PWD"), execPath)) { + return execPath; + } if (FreeBSDGuessExecBasePath(NFs::CurrentWorkingDirectory(), execPath)) { - return execPath; - } + return execPath; + } - ythrow yexception() << "can not resolve exec path"; + ythrow yexception() << "can not resolve exec path"; #else #error dont know how to implement GetExecPath on this platform #endif |