]> git.cworth.org Git - apitrace/blobdiff - os_posix.cpp
Attempt to use glVertexAttribPointerNV when NV_vertex_program is used.
[apitrace] / os_posix.cpp
index b13646fec755e653717576f8b00ba3974f2c4f90..fdcaca9aa80685837efeccd1c2e9f1b5820d53a1 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
  *
- * Copyright 2010 VMware, Inc.
+ * Copyright 2010-2011 VMware, Inc.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  *
  **************************************************************************/
 
+
 #include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
 #include <unistd.h>
+#include <sys/time.h>
 #include <pthread.h>
 
+#ifdef __APPLE__
+#include <mach-o/dyld.h>
+#endif
+
 #include "os.hpp"
 
+
 namespace OS {
 
 
@@ -53,16 +63,24 @@ 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
-    len = readlink("/proc/self/exe", szProcessPath, sizeof(szProcessPath) - 1);
-    if (len == -1) {
+#ifdef __APPLE__
+    uint32_t len = sizeof szProcessPath;
+    if (_NSGetExecutablePath(szProcessPath, &len) != 0) {
         *str = 0;
         return false;
     }
+#else
+    ssize_t len;
+    len = readlink("/proc/self/exe", szProcessPath, sizeof(szProcessPath) - 1);
+    if (len == -1) {
+        snprintf(str, size, "%i", (int)getpid());
+        return true;
+    }
+#endif
     szProcessPath[len] = 0;
 
     lpProcessName = strrchr(szProcessPath, '/');
@@ -75,5 +93,38 @@ GetProcessName(char *str, size_t size)
     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 */
+