support current_executable_path on FreeBSD
- add support for current_executable_path on FreeBSD Closes #878
Esse commit está contido em:
@@ -22,6 +22,10 @@
|
||||
#include <mach-o/dyld.h>
|
||||
#endif
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
#include <sys/sysctl.h>
|
||||
#endif
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
std::string current_executable_path() {
|
||||
@@ -34,8 +38,22 @@ std::string current_executable_path() {
|
||||
uint32_t size = sizeof(result);
|
||||
uint32_t success = _NSGetExecutablePath(result, &size);
|
||||
return std::string(result, (success == 0) ? size : 0);
|
||||
#elif defined(__FreeBSD__)
|
||||
char result[PATH_MAX];
|
||||
size_t size = sizeof(result);
|
||||
int mib[4];
|
||||
|
||||
mib[0] = CTL_KERN;
|
||||
mib[1] = KERN_PROC;
|
||||
mib[2] = KERN_PROC_PATHNAME;
|
||||
mib[3] = -1;
|
||||
|
||||
if (sysctl(mib, 4, result, &size, nullptr, 0) < 0) {
|
||||
return std::string();
|
||||
}
|
||||
return std::string(result, (size > 0) ? size : 0);
|
||||
#else
|
||||
// Return empty string for all other platforms for now (e.g. FreeBSD)
|
||||
// XXX: How do you do this on your platform?
|
||||
return std::string();
|
||||
#endif
|
||||
}
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário