diff --git a/ChangeLog b/ChangeLog
index 559ce86..002347a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Fri May 25 09:36:26 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
+
+	* Makefile.am include/Makefile.am: small change to have
+	  include/libxml rebuilt if working from CVS.
+	* uri.c: applied another patch from Carl Douglas for URI escaping,
+	  this should close bug #51876
+
 Wed May 23 15:40:27 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
 
 	* xinclude.c: fixed XInclude recursive behaviour bug #54678
diff --git a/Makefile.am b/Makefile.am
index 67dceba..cf6c79d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-SUBDIRS = . include doc example
+SUBDIRS = include . doc example
 
 INCLUDES = -I@srcdir@/include -I./include @Z_CFLAGS@ @CORBA_CFLAGS@ 
 
diff --git a/include/Makefile.am b/include/Makefile.am
index 12d2b1d..5f7e733 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -34,3 +34,10 @@
 	$(mkinstalldirs) $(DESTDIR)$(xmlincdir) $(DESTDIR)$(xmlincdir)/libxml
 
 EXTRA_DIST = win32config.h libxml/xmlversion.h.in
+
+all: $(srcdir)/libxml
+
+$(xmlinc_HEADERS): $(srcdir)/libxml
+
+$(srcdir)/libxml:
+	@(cd $(srcdir); ln -s .. libxml)
diff --git a/uri.c b/uri.c
index 779ca6f..b455460 100644
--- a/uri.c
+++ b/uri.c
@@ -1051,17 +1051,102 @@
  * It will try to escape the chars needing this, but this is heuristic
  * based it's impossible to be sure.
  *
- * TODO: make the proper implementation of this function by calling
- *       xmlParseURIReference() and escaping each section accordingly
- *       to the rules (c.f. bug 51876)
- *
  * Returns an copy of the string, but escaped
+ *
+ * 25 May 2001
+ * Uses xmlParseURI and xmlURIEscapeStr to try to escape correctly
+ * according to RFC2396.
+ *   - Carl Douglas
  */
 xmlChar *
 xmlURIEscape(const xmlChar *str) {
-    xmlChar *ret;
+    xmlChar *ret, *segment = NULL;
+    xmlURIPtr uri;
 
-    ret = xmlURIEscapeStr(str, BAD_CAST "#");
+#define NULLCHK(p) if(!p) { \
+                   xmlGenericError(xmlGenericErrorContext, \
+                        "xmlURIEscape: out of memory\n"); \
+                   return NULL; }
+
+    uri = xmlParseURI( (const char *) str);
+
+    if(!uri)
+	return NULL;
+
+    ret = NULL;
+
+    if(uri->scheme) {
+	segment = xmlURIEscapeStr( BAD_CAST uri->scheme, BAD_CAST "+-.");
+	NULLCHK(segment)
+	xmlStrcat(ret, segment);
+	xmlStrcat(ret, BAD_CAST ":");
+	xmlFree(segment);
+    }
+
+    if(uri->authority) {
+	segment = xmlURIEscapeStr( BAD_CAST uri->authority, BAD_CAST "/?;:@");
+	NULLCHK(segment)
+	xmlStrcat(ret, BAD_CAST "//");
+	xmlStrcat(ret, segment);
+	xmlFree(segment);
+    }
+
+    if(uri->user) {
+	segment = xmlURIEscapeStr( BAD_CAST uri->user, BAD_CAST ";:&=+$,");
+	NULLCHK(segment)
+	xmlStrcat(ret, segment);
+	xmlStrcat(ret, BAD_CAST "@");
+	xmlFree(segment);
+    }
+
+    if(uri->server) {
+	segment = xmlURIEscapeStr( BAD_CAST uri->server, BAD_CAST "/?;:@");
+	NULLCHK(segment)
+	xmlStrcat(ret, BAD_CAST "//");
+	xmlStrcat(ret, segment);
+	xmlFree(segment);
+    }
+
+    if(uri->port) {
+	xmlChar port[10];
+	snprintf(segment, 10, "%d", uri->port);
+	xmlStrcat(ret, BAD_CAST ":");
+	xmlStrcat(ret, port);
+	xmlFree(segment);
+    }
+
+    if(uri->path) {
+	segment = xmlURIEscapeStr( BAD_CAST uri->path, BAD_CAST ":@&=+$,/?;");
+	NULLCHK(segment)
+	xmlStrcat(ret, segment);
+	xmlFree(segment);
+    }
+
+    if(uri->query) {
+	segment = xmlURIEscapeStr( BAD_CAST uri->query, BAD_CAST ";/?:@&=+,$");
+	NULLCHK(segment)
+	xmlStrcat(ret, BAD_CAST "?");
+	xmlStrcat(ret, segment);
+	xmlFree(segment);
+    }
+
+    if(uri->opaque) {
+	segment = xmlURIEscapeStr( BAD_CAST uri->opaque, BAD_CAST "");
+	NULLCHK(segment)
+	xmlStrcat(ret, segment);
+	xmlStrcat(ret, BAD_CAST ":");
+	xmlFree(segment);
+    }
+
+    if(uri->fragment) {
+	segment = xmlURIEscapeStr( BAD_CAST uri->fragment, BAD_CAST "#");
+	NULLCHK(segment)
+	xmlStrcat(ret, BAD_CAST "#");
+	xmlStrcat(ret, segment);
+	xmlFree(segment);
+    }
+
+#undef NULLCHK
 
     return(ret);
 }
