Pipe names are case sensitive.

Troy Rollo wine at troy.rollo.name
Tue Apr 19 01:20:48 CDT 2005


Pipe names are currently case sensitive. This affects instmsiw.exe since the 
service is created as "MSIService" and connected to as "MsiService". The 
result is that instmsiw.exe always fails to query the service status.

I have insmsiw.exe from Office 2K working (at least to get as far as 
installing Microsoft's version of MSI) with the patches I just sent through 
to wine-patches, plus the hack below (which will also fix the problem for 
other IPC objects).

One alternative to this hack would appear to be to make sync_namespace case 
insensitive in wineserver, although I am not sure if that is the correct 
approach. It seems to me that sync_namespace must have been chosen as case 
sensitive for a reason, although a grep doesn't reveal anything that should 
obviously be case sensitive in that namespace.

A third alternative would be to have find_object and create_object take a flag 
that forces case insensitivity even in a case sensitive namespace.

Which approach is to be preferred here?

Index: ntdll/path.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/path.c,v
retrieving revision 1.28
diff -u -r1.28 path.c
--- ntdll/path.c	13 Aug 2004 23:53:44 -0000	1.28
+++ ntdll/path.c	19 Apr 2005 05:34:20 -0000
@@ -360,6 +360,16 @@
         break;
     }
 
+    /* This is an ugly hack that will never make it into WINE */
+    if (offset == 4)
+    {
+	    WCHAR *src = ptr + offset;
+	    WCHAR *dst = ntpath->Buffer + strlenW(ntpath->Buffer);
+
+	    while (*src)
+		    *dst++ = RtlUpcaseUnicodeChar(*src++);
+	    *dst = 0;
+    } else
     strcatW(ntpath->Buffer, ptr + offset);
     ntpath->Length = strlenW(ntpath->Buffer) * sizeof(WCHAR);
 



More information about the wine-devel mailing list