X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=os_posix.cpp;h=4c16096de0d38f052fca40881b494dd7516b5069;hb=2471295dd8777239deefe08455872bdedc9c50a5;hp=5b275196d14869e04f0dfc2b13666ca1f993d1cb;hpb=1630be10e241e2741af716988da3e51dded481a6;p=apitrace diff --git a/os_posix.cpp b/os_posix.cpp index 5b27519..4c16096 100644 --- a/os_posix.cpp +++ b/os_posix.cpp @@ -24,7 +24,11 @@ **************************************************************************/ #include +#include +#include + #include +#include #include #include "os.hpp" @@ -53,22 +57,60 @@ ReleaseMutex(void) bool GetProcessName(char *str, size_t size) { + ssize_t len; char szProcessPath[PATH_MAX + 1]; char *lpProcessName; - + // http://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe - if (readlink("/proc/self/exe", szProcessPath, sizeof(szProcessPath) - 1) == -1) { + len = readlink("/proc/self/exe", szProcessPath, sizeof(szProcessPath) - 1); + if (len == -1) { *str = 0; return false; } + szProcessPath[len] = 0; lpProcessName = strrchr(szProcessPath, '/'); lpProcessName = lpProcessName ? lpProcessName + 1 : szProcessPath; - + strncpy(str, lpProcessName, size); + if (size) + str[size - 1] = 0; return true; } +bool +GetCurrentDir(char *str, size_t size) +{ + char *ret; + ret = getcwd(str, size); + str[size - 1] = 0; + return ret ? true : false; +} + +void +DebugMessage(const char *format, ...) +{ + va_list ap; + va_start(ap, format); + fflush(stdout); + vfprintf(stderr, format, ap); + va_end(ap); +} + +long long GetTime(void) +{ + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_usec + tv.tv_sec*1000000LL; +} + +void +Abort(void) +{ + exit(0); +} + } /* namespace OS */ +