5#define access _access_s
11#include <mach-o/dyld.h>
21#define PROC_SELF_EXE "/proc/self/path/a.out"
23#define PROC_SELF_EXE "/proc/self/exe"
32std::string getExecutablePath() {
33 char rawPathName[MAX_PATH];
34 GetModuleFileName(NULL, rawPathName, MAX_PATH);
35 return std::string(rawPathName);
38std::string getExecutableDir() {
39 std::string executablePath = getExecutablePath();
40 char* exePath =
new char[executablePath.length()];
41 strcpy(exePath, executablePath.c_str());
42 PathRemoveFileSpecA(exePath);
43 std::string directory = std::string(exePath);
48std::string mergePaths(std::string pathA, std::string pathB) {
49 char combined[MAX_PATH];
50 PathCombineA(combined, pathA.c_str(), pathB.c_str());
51 std::string mergedPath(combined);
59std::string getExecutablePath() {
65 ssize_t count = readlink(
"/proc/self/exe", path, PATH_MAX);
68 return std::string(path);
70 throw std::runtime_error(
"Failed to get executable path.");
74std::string getExecutableDir() {
75 std::string executablePath = getExecutablePath();
76 vector<string> dir = divide_string(getExecutablePath(),
'/');
79 for (
int n = 0; n < dir.size(); n++) {
80 Dir = Dir + dir[n] +
"/";
90std::string mergePaths(std::string pathA, std::string pathB) {
return pathA +
"/" + pathB; }
95std::string getExecutablePath() {
96 char rawPathName[PATH_MAX];
97 char realPathName[PATH_MAX];
98 uint32_t rawPathSize = (uint32_t)
sizeof(rawPathName);
100 if (!_NSGetExecutablePath(rawPathName, &rawPathSize)) {
101 realpath(rawPathName, realPathName);
103 return std::string(realPathName);
106std::string getExecutableDir() {
107 std::string executablePath = getExecutablePath();
108 char* executablePathStr =
new char[executablePath.length() + 1];
109 strcpy(executablePathStr, executablePath.c_str());
110 char* executableDir = dirname(executablePathStr);
111 delete[] executablePathStr;
112 return std::string(executableDir);
115std::string mergePaths(std::string pathA, std::string pathB) {
return pathA +
"/" + pathB; }
125std::string getFileDirectory() {
126 std::string filePath = __FILE__;
127 size_t pos = filePath.find_last_of(
"/\\");
128 return (pos == std::string::npos) ?
"" : filePath.substr(0, pos);
131std::string getCurrentDirectory() {
133 if (getcwd(cwd,
sizeof(cwd)) != NULL) {
134 return std::string(cwd);
136 perror(
"getcwd() error");
137 return std::string();
141std::string getActualDir(
string file_path) {
142 vector<string> dir = divide_string(file_path,
'/');
145 for (
size_t n = 0; n < dir.size(); n++) {
146 Dir = Dir + dir[n] +
"/";
151std::string project_name() {
152 std::string executablePath = MyPaths::getExecutablePath();
153 vector<string> dir = divide_string(MyPaths::getExecutablePath(),
'/');
154 vector<string> name = divide_string(dir[dir.size() - 1],
'.');