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) {
91 return pathA +
"/" + pathB;
97std::string getExecutablePath() {
98 char rawPathName[PATH_MAX];
99 char realPathName[PATH_MAX];
100 uint32_t rawPathSize = (uint32_t)
sizeof(rawPathName);
102 if (!_NSGetExecutablePath(rawPathName, &rawPathSize)) {
103 realpath(rawPathName, realPathName);
105 return std::string(realPathName);
108std::string getExecutableDir() {
109 std::string executablePath = getExecutablePath();
110 char *executablePathStr =
new char[executablePath.length() + 1];
111 strcpy(executablePathStr, executablePath.c_str());
112 char *executableDir = dirname(executablePathStr);
113 delete[] executablePathStr;
114 return std::string(executableDir);
117std::string mergePaths(std::string pathA, std::string pathB) {
118 return pathA +
"/" + pathB;
129std::string getFileDirectory() {
130 std::string filePath = __FILE__;
131 size_t pos = filePath.find_last_of(
"/\\");
132 return (pos == std::string::npos) ?
"" : filePath.substr(0, pos);
135std::string getCurrentDirectory() {
137 if (getcwd(cwd,
sizeof(cwd)) != NULL) {
138 return std::string(cwd);
140 perror(
"getcwd() error");
141 return std::string();
145std::string getActualDir(
string file_path) {
146 vector<string> dir = divide_string(file_path,
'/');
149 for (
size_t n = 0; n < dir.size(); n++) {
150 Dir = Dir + dir[n] +
"/";
155std::string project_name() {
156 std::string executablePath = MyPaths::getExecutablePath();
157 vector<string> dir = divide_string(MyPaths::getExecutablePath(),
'/');
158 vector<string> name = divide_string(dir[dir.size() - 1],
'.');