summaryrefslogtreecommitdiffhomepage
path: root/protocol-wine/opentrack-wrapper-wine-windows.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'protocol-wine/opentrack-wrapper-wine-windows.cxx')
-rw-r--r--protocol-wine/opentrack-wrapper-wine-windows.cxx40
1 files changed, 40 insertions, 0 deletions
diff --git a/protocol-wine/opentrack-wrapper-wine-windows.cxx b/protocol-wine/opentrack-wrapper-wine-windows.cxx
new file mode 100644
index 00000000..19ee8ffd
--- /dev/null
+++ b/protocol-wine/opentrack-wrapper-wine-windows.cxx
@@ -0,0 +1,40 @@
+#ifndef __WIN32
+# error "bad cross"
+#endif
+
+#define PortableLockedShm ShmWine
+#include "opentrack-compat/shm.h"
+#include "opentrack-compat/shm.cpp"
+#include "wine-shm.h"
+
+static void write_path(const char* key, const char* subkey)
+{
+ char dir[8192];
+
+ if (GetCurrentDirectoryA(8192, dir) < 8190)
+ {
+ HKEY hkpath;
+ if (RegCreateKeyExA(HKEY_CURRENT_USER,
+ key,
+ 0,
+ NULL,
+ 0,
+ KEY_ALL_ACCESS,
+ NULL,
+ &hkpath,
+ NULL) == ERROR_SUCCESS)
+ {
+ for (int i = 0; dir[i]; i++)
+ if (dir[i] == '\\')
+ dir[i] = '/';
+ strcat(dir, "/");
+ (void) RegSetValueExA(hkpath, subkey, 0, REG_SZ, (BYTE*) dir, strlen(dir) + 1);
+ RegCloseKey(hkpath);
+ }
+ }
+}
+
+void create_registry_key(void) {
+ write_path("Software\\NaturalPoint\\NATURALPOINT\\NPClient Location", "Path");
+ write_path("Software\\Freetrack\\FreeTrackClient", "Path");
+}