Index: include/curl/curl.h
===================================================================
RCS file: /cvsroot/curl/curl/include/curl/curl.h,v
retrieving revision 1.115
diff -u -r1.115 curl.h
--- include/curl/curl.h	2002/01/08 08:25:45	1.115
+++ include/curl/curl.h	2002/01/14 05:49:14
@@ -493,6 +493,21 @@
 
   /* DNS cache timeout */
   CINIT(DNS_CACHE_TIMEOUT, LONG, 92),
+
+  /* Mutex initialization function */
+  CINIT(MUTEX_INITIALIZATION_FUNCTION, FUNCTIONPOINT, 93),
+
+  /* Mutex destruction function */
+  CINIT(MUTEX_DESTROY_FUNCTION, FUNCTIONPOINT, 94),
+
+  /* Mutex Lock function */
+  CINIT(MUTEX_LOCK_FUNCTION, FUNCTIONPOINT, 95),
+  
+  /* Mutex Unlock function */
+  CINIT(MUTEX_UNLOCK_FUNCTION, FUNCTIONPOINT, 96),
+
+  /* Mutex user data */
+  CINIT(MUTEX_DATA, OBJECTPOINT, 97),
   
   CURLOPT_LASTENTRY /* the last unusued */
 } CURLoption;
Index: lib/Makefile.am
===================================================================
RCS file: /cvsroot/curl/curl/lib/Makefile.am,v
retrieving revision 1.31
diff -u -r1.31 Makefile.am
--- lib/Makefile.am	2002/01/03 15:01:22	1.31
+++ lib/Makefile.am	2002/01/14 05:49:14
@@ -57,7 +57,7 @@
 getinfo.c getinfo.h transfer.c strequal.c strequal.h easy.c \
 security.h security.c krb4.c krb4.h memdebug.c memdebug.h inet_ntoa_r.h \
 http_chunks.c http_chunks.h strtok.c strtok.h connect.c connect.h \
-llist.c llist.h hash.c hash.h multi.c multi.h
+llist.c llist.h hash.c hash.h thread.c thread.h multi.c multi.h
 
 
 noinst_HEADERS = setup.h transfer.h
Index: lib/url.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/url.c,v
retrieving revision 1.186
diff -u -r1.186 url.c
--- lib/url.c	2002/01/08 04:26:47	1.186
+++ lib/url.c	2002/01/14 05:49:16
@@ -286,6 +286,21 @@
   va_start(param, option);
 
   switch(option) {
+  case CURLOPT_MUTEX_INITIALIZATION_FUNCTION:
+    data->mutex.init = va_arg(param, void (*)(void *));
+    break;
+  case CURLOPT_MUTEX_DESTROY_FUNCTION:
+    data->mutex.dtor = va_arg(param, void (*)(void *));
+    break;
+  case CURLOPT_MUTEX_LOCK_FUNCTION:
+    data->mutex.lock = va_arg(param, int (*)(void *));
+    break;
+  case CURLOPT_MUTEX_UNLOCK_FUNCTION:
+    data->mutex.unlock = va_arg(param, int (*)(void *));
+    break;
+  case CURLOPT_MUTEX_DATA:
+    data->mutex.userData = va_arg(param, void *);
+    break;
   case CURLOPT_DNS_CACHE_TIMEOUT:
     data->set.dns_cache_timeout = va_arg(param, int);
     break;
Index: lib/urldata.h
===================================================================
RCS file: /cvsroot/curl/curl/lib/urldata.h,v
retrieving revision 1.99
diff -u -r1.99 urldata.h
--- lib/urldata.h	2002/01/08 04:30:59	1.99
+++ lib/urldata.h	2002/01/14 05:49:19
@@ -28,6 +28,7 @@
 #include "setup.h"
 #include "hostip.h"
 #include "hash.h"
+#include "thread.h"
 
 #define PORT_FTP 21
 #define PORT_TELNET 23
@@ -666,6 +667,7 @@
   curl_hash          *hostcache;
   struct UserDefined set;      /* values set by the libcurl user */
   struct DynamicStatic change; /* possibly modified userdefined data */
+  struct Curl_mutex    mutex;
 
   struct CookieInfo *cookies;  /* the cookies, read from files and servers */
   struct Progress progress;    /* for all the progress meter data */

