From ebc32253bc7a101b205eb8f9ab4f3f9b7ee0bc60 Mon Sep 17 00:00:00 2001
From: Alexandre Julliard <julliard@winehq.org>
Date: Fri, 17 Mar 2000 15:09:48 +0000
Subject: [PATCH] Made MPR a separate dll.

---
 Make.rules.in        |  1 +
 Makefile.in          |  2 --
 dlls/Makefile.in     |  4 ++++
 dlls/mpr/.cvsignore  |  1 +
 dlls/mpr/Makefile.in |  6 ++----
 misc/network.c       | 38 +++++++++++++++++++++++++++++++++-----
 6 files changed, 41 insertions(+), 11 deletions(-)

diff --git a/Make.rules.in b/Make.rules.in
index a6c0b563338..8c749001890 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -98,6 +98,7 @@ DLLS = \
 	mciseq.drv \
 	mciwave.drv \
 	midimap.drv \
+	mpr \
 	msacm \
 	msacm.drv \
 	msacm32 \
diff --git a/Makefile.in b/Makefile.in
index 9bb7b414562..17dcc2382ec 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -35,7 +35,6 @@ LIBSUBDIRS = \
 	dlls/crtdll \
 	dlls/display \
 	dlls/mouse \
-	dlls/mpr \
 	dlls/ntdll \
 	files \
 	graphics \
@@ -111,7 +110,6 @@ LIBOBJS = \
 	dlls/crtdll/crtdll.o \
 	dlls/display/display.o \
 	dlls/mouse/mouse.o \
-	dlls/mpr/mpr.o \
 	dlls/ntdll/ntdll.o \
 	files/files.o \
 	graphics/graphics.o \
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 3cb7a35cd4a..45a5bfdfbdc 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -14,6 +14,7 @@ DLLFILES = \
 	imagehlp/libimagehlp.@LIBEXT@ \
 	imm32/libimm32.@LIBEXT@ \
 	lzexpand/liblz32.@LIBEXT@ \
+	mpr/libmpr.@LIBEXT@ \
 	msacm/libmsacm.@LIBEXT@ \
 	msacm32/libmsacm32.@LIBEXT@ \
 	msnet32/libmsnet32.@LIBEXT@ \
@@ -132,6 +133,9 @@ libmciwave.drv.@LIBEXT@: winmm/mciwave/libmciwave.drv.@LIBEXT@
 libmidimap.drv.@LIBEXT@: winmm/midimap/libmidimap.drv.@LIBEXT@
 	$(RM) $@ && $(LN_S) winmm/midimap/libmidimap.drv.@LIBEXT@ $@
 
+libmpr.@LIBEXT@: mpr/libmpr.@LIBEXT@
+	$(RM) $@ && $(LN_S) mpr/libmpr.@LIBEXT@ $@
+
 libmsacm.@LIBEXT@: msacm/libmsacm.@LIBEXT@
 	$(RM) $@ && $(LN_S) msacm/libmsacm.@LIBEXT@ $@
 
diff --git a/dlls/mpr/.cvsignore b/dlls/mpr/.cvsignore
index 7d7523f38da..981242d3b57 100644
--- a/dlls/mpr/.cvsignore
+++ b/dlls/mpr/.cvsignore
@@ -1,2 +1,3 @@
 Makefile
+libmpr.so.1.0
 mpr.spec.c
diff --git a/dlls/mpr/Makefile.in b/dlls/mpr/Makefile.in
index 7caccfa3e58..5dc5fac8927 100644
--- a/dlls/mpr/Makefile.in
+++ b/dlls/mpr/Makefile.in
@@ -1,9 +1,9 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = mpr
+SOVERSION = 1.0
 
 SPEC_SRCS = mpr.spec
 
@@ -15,9 +15,7 @@ C_SRCS = \
 	pwcache.c \
 	wnet.c
 
-all: $(MODULE).o
-
-@MAKE_RULES@
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/misc/network.c b/misc/network.c
index 9f870bb6bfd..a7ea2b03b2b 100644
--- a/misc/network.c
+++ b/misc/network.c
@@ -147,7 +147,9 @@ WORD WINAPI WNetUnlockQueueData16( LPSTR szQueue )
 WORD WINAPI WNetAddConnection16( LPSTR lpNetPath, LPSTR lpPassWord,
                                  LPSTR lpLocalName )
 {	
-   return WNetAddConnectionA( lpNetPath, lpPassWord, lpLocalName );
+    FIXME( "(%s, %p, %s): stub\n", 
+           debugstr_a(lpNetPath), lpPassWord, debugstr_a(lpLocalName) );
+    return WN16_NET_ERROR;
 }
 
 /********************************************************************
@@ -165,10 +167,36 @@ WORD WINAPI WNetCancelConnection16( LPSTR lpName, BOOL16 bForce )
 WORD WINAPI WNetGetConnection16( LPSTR lpLocalName, 
                                  LPSTR lpRemoteName, UINT16 *cbRemoteName )
 {
-    DWORD len = *cbRemoteName;
-    WORD retv = WNetGetConnectionA( lpLocalName, lpRemoteName, &len );
-    *cbRemoteName = (UINT16)len;
-    return retv;
+    const char *path;
+
+    TRACE( "local %s\n", lpLocalName );
+    if (lpLocalName[1] == ':')
+    {
+        int drive = toupper(lpLocalName[0]) - 'A';
+        switch(DRIVE_GetType(drive))
+        {
+        case TYPE_INVALID:
+            return WN16_BAD_LOCALNAME;
+        case TYPE_NETWORK:
+            path = DRIVE_GetLabel(drive);
+            if (strlen(path) + 1 > *cbRemoteName)
+            {
+                *cbRemoteName = strlen(path) + 1;
+                return WN16_MORE_DATA;
+            }
+            strcpy( lpRemoteName, path );
+            *cbRemoteName = strlen(lpRemoteName) + 1;
+            return WN16_SUCCESS;
+	case TYPE_FLOPPY:
+	case TYPE_HD:
+	case TYPE_CDROM:
+	  TRACE("file is local\n");
+	  return WN16_NOT_CONNECTED;
+	default:
+	    return WN16_BAD_LOCALNAME;
+        }
+    }
+    return WN16_BAD_LOCALNAME;
 }
 
 /**************************************************************************
-- 
GitLab