Hans Leidekker : wbemprox: Return the machine ID for Win32_ComputerSystemProduct.UUID on Linux.

Alexandre Julliard julliard at winehq.org
Thu Nov 17 17:45:58 CST 2016


Module: wine
Branch: master
Commit: a2545727fea4c0e91dd67aa5000ad67645d6ed62
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a2545727fea4c0e91dd67aa5000ad67645d6ed62

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Thu Nov 17 13:07:59 2016 -0600

wbemprox: Return the machine ID for Win32_ComputerSystemProduct.UUID on Linux.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wbemprox/builtin.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index b0f5faa..cf9ae5c 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -22,6 +22,7 @@
 
 #include "config.h"
 #include <stdarg.h>
+#include <fcntl.h>
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif
@@ -1346,6 +1347,33 @@ static WCHAR *get_compsysproduct_uuid(void)
         return ret;
     }
 #endif
+#ifdef __linux__
+    int file;
+    if ((file = open( "/var/lib/dbus/machine-id", O_RDONLY )) != -1)
+    {
+        unsigned char buf[32];
+        if (read( file, buf, sizeof(buf) ) == sizeof(buf))
+        {
+            unsigned int i, j;
+            WCHAR *ret, *p;
+
+            close( file );
+            if (!(p = ret = heap_alloc( 37 * sizeof(WCHAR) ))) return NULL;
+            for (i = 0, j = 0; i < 8; i++) p[i] = toupperW( buf[j++] );
+            p[8] = '-';
+            for (i = 9; i < 13; i++) p[i] = toupperW( buf[j++] );
+            p[13] = '-';
+            for (i = 14; i < 18; i++) p[i] = toupperW( buf[j++] );
+            p[18] = '-';
+            for (i = 19; i < 23; i++) p[i] = toupperW( buf[j++] );
+            p[23] = '-';
+            for (i = 24; i < 36; i++) p[i] = toupperW( buf[j++] );
+            ret[i] = 0;
+            return ret;
+        }
+        close( file );
+    }
+#endif
     return heap_strdupW( compsysproduct_uuidW );
 }
 




More information about the wine-cvs mailing list