misc: Remove CommandLine
This commit is contained in:
parent
3ca016e952
commit
5bdca8a608
60
src/misc.cpp
60
src/misc.cpp
|
@ -132,63 +132,3 @@ void prefetch_range(void *addr, size_t len)
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <direct.h>
|
|
||||||
#define GETCWD _getcwd
|
|
||||||
#else
|
|
||||||
#include <unistd.h>
|
|
||||||
#define GETCWD getcwd
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace CommandLine
|
|
||||||
{
|
|
||||||
|
|
||||||
string argv0; // path+name of the executable binary, as given by argv[0]
|
|
||||||
string binaryDirectory; // path of the executable directory
|
|
||||||
string workingDirectory; // path of the working directory
|
|
||||||
|
|
||||||
void init(int argc, const char *argv[])
|
|
||||||
{
|
|
||||||
(void)argc;
|
|
||||||
string pathSeparator;
|
|
||||||
|
|
||||||
// extract the path+name of the executable binary
|
|
||||||
argv0 = argv[0];
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
pathSeparator = "\\";
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
// Under windows argv[0] may not have the extension. Also _get_pgmptr() had
|
|
||||||
// issues in some windows 10 versions, so check returned values carefully.
|
|
||||||
char *pgmptr = nullptr;
|
|
||||||
if (!_get_pgmptr(&pgmptr) && pgmptr != nullptr && *pgmptr)
|
|
||||||
argv0 = pgmptr;
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
pathSeparator = "/";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// extract the working directory
|
|
||||||
workingDirectory = "";
|
|
||||||
char buff[40000];
|
|
||||||
const char *cwd = GETCWD(buff, 40000);
|
|
||||||
if (cwd)
|
|
||||||
workingDirectory = cwd;
|
|
||||||
|
|
||||||
// extract the binary directory path from argv0
|
|
||||||
binaryDirectory = argv0;
|
|
||||||
const size_t pos = binaryDirectory.find_last_of("\\/");
|
|
||||||
if (pos == std::string::npos)
|
|
||||||
binaryDirectory = "." + pathSeparator;
|
|
||||||
else
|
|
||||||
binaryDirectory.resize(pos + 1);
|
|
||||||
|
|
||||||
// pattern replacement: "./" at the start of path is replaced by the working directory
|
|
||||||
if (binaryDirectory.find("." + pathSeparator) == 0)
|
|
||||||
binaryDirectory.replace(0, 1, workingDirectory);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace CommandLine
|
|
||||||
|
|
|
@ -134,11 +134,4 @@ constexpr uint64_t mul_hi64(uint64_t a, uint64_t b) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace CommandLine {
|
|
||||||
void init(int argc, char* argv[]);
|
|
||||||
|
|
||||||
extern std::string binaryDirectory; // path of the executable directory
|
|
||||||
extern std::string workingDirectory; // path of the working directory
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // #ifndef MISC_H_INCLUDED
|
#endif // #ifndef MISC_H_INCLUDED
|
||||||
|
|
Loading…
Reference in New Issue