diff --git a/Make.rules.in b/Make.rules.in
index a6c0b563338711a0df5e7fb65cd09ea47f821017..8c74900189037b24f3d481a206242d1c273e848c 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 9bb7b414562176a513533c63adbdedda658fb89a..17dcc2382ec0a02e7d102d43a1057f8ddfe5dba7 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 3cb7a35cd4aafc352012393344928ac21842ffd6..45a5bfdfbdccff40b3dc5affdca3b1302efee348 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 7d7523f38da903081e43cbc5778bb7364fd58493..981242d3b57bfa565184793b930cd726461def69 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 7caccfa3e58887defe5c943168aae385c1799afe..5dc5fac8927cd6ba11b99cbadd10d6cfe6870048 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 9f870bb6bfdfc3865db3ab7633a514065d08dc76..a7ea2b03b2b71c985e887110dc2670ad7e35de99 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;
 }
 
 /**************************************************************************