Various Win32 fixes. Win95 doesn't support MoveFileEx() (which was used for a
Win32 version of rename() ). There isn't a precise rename() equivalent under
Win95: the standard rename() complains if the destination already exists so
replaced with a combination of unlink() and MoveFile().
diff --git a/INSTALL.W32 b/INSTALL.W32
index 3da0cb4..8246e41 100644
--- a/INSTALL.W32
+++ b/INSTALL.W32
@@ -117,10 +117,7 @@
  someone forgot to add a function to the header file.
 
  In this latter case check out the header file to see if the function is
- defined in the header file: it should be defined twice: once with ANSI
- prototypes and once without. If its missing from the non ASNI section then
- add an entry for it: check that ms\do_ms now reports missing numbers and
- update the numbers as above.
+ defined in the header file.
 
  If you get warnings in the code then the compilation will halt.
 
@@ -140,7 +137,9 @@
 
 --------------------------------------------------------------------------------
 The orignal Windows build instructions from SSLeay follow. 
-Note: some of this may be out of date and no longer applicable
+Note: some of this may be out of date and no longer applicable. In particular
+the Crypto_malloc_init() comment appears to be wrong: you always need to use
+the same runtime library as the DLL itself.
 --------------------------------------------------------------------------------
 
 The Microsoft World.
diff --git a/apps/apps.c b/apps/apps.c
index d3d601d..f9cc270 100644
--- a/apps/apps.c
+++ b/apps/apps.c
@@ -218,10 +218,16 @@
 #ifdef WIN32
 int WIN32_rename(char *from, char *to)
 	{
+#ifdef WINNT
 	int ret;
+/* Note: MoveFileEx() doesn't work under Win95, Win98 */
 
 	ret=MoveFileEx(from,to,MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED);
 	return(ret?0:-1);
+#else
+        unlink(to);
+        return MoveFile(from, to);
+#endif
 	}
 #endif
 
diff --git a/crypto/x509/x509_obj.c b/crypto/x509/x509_obj.c
index b2a33a4..b283a62 100644
--- a/crypto/x509/x509_obj.c
+++ b/crypto/x509/x509_obj.c
@@ -66,7 +66,7 @@
 char *X509_NAME_oneline(X509_NAME *a, char *buf, int len)
 	{
 	X509_NAME_ENTRY *ne;
-	unsigned int i;
+int i;
 	int n,lold,l,l1,l2,num,j,type;
 	const char *s;
 	char *p;
diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c
index 30877ea..be4efac 100644
--- a/ssl/ssl_cert.c
+++ b/ssl/ssl_cert.c
@@ -380,7 +380,7 @@
     X509 *x=NULL;
     X509_NAME *xn=NULL;
     int ret=1;
-    int (*oldcmp)();
+    int (*oldcmp)(X509_NAME **a, X509_NAME **b);
 
     oldcmp=sk_X509_NAME_set_cmp_func(stack,name_cmp);
 
diff --git a/util/libeay.num b/util/libeay.num
index 5832d62..12cebd3 100755
--- a/util/libeay.num
+++ b/util/libeay.num
@@ -1522,3 +1522,99 @@
 DIST_POINT_NAME_free                    1547
 d2i_DIST_POINT_NAME                     1548
 X509V3_add_value_uchar                  1549
+sk_X509_INFO_new                        1550
+sk_X509_EXTENSION_new                   1551
+sk_X509_NAME_ENTRY_unshift              1552
+sk_ASN1_TYPE_value                      1553
+sk_X509_EXTENSION_find                  1554
+d2i_ASN1_SET_OF_X509_ATTRIBUTE          1555
+sk_ASN1_TYPE_pop                        1556
+sk_X509_EXTENSION_set_cmp_func          1557
+sk_ASN1_TYPE_new_null                   1558
+sk_X509_NAME_ENTRY_delete               1559
+i2d_ASN1_SET_OF_ASN1_TYPE               1560
+sk_X509_NAME_ENTRY_dup                  1561
+sk_X509_unshift                         1562
+sk_X509_NAME_unshift                    1563
+sk_ASN1_TYPE_num                        1564
+sk_X509_EXTENSION_new_null              1565
+sk_X509_INFO_value                      1566
+d2i_ASN1_SET_OF_X509_EXTENSION          1567
+sk_X509_INFO_delete_ptr                 1568
+sk_X509_NAME_ENTRY_new                  1569
+sk_DIST_POINT_insert                    1570
+sk_ASN1_TYPE_set_cmp_func               1571
+sk_X509_EXTENSION_value                 1572
+sk_DIST_POINT_unshift                   1573
+d2i_ASN1_SET_OF_X509_NAME_ENTRY         1574
+sk_X509_INFO_pop                        1575
+sk_X509_EXTENSION_pop                   1576
+sk_X509_NAME_ENTRY_shift                1577
+sk_X509_INFO_num                        1578
+sk_X509_EXTENSION_num                   1579
+sk_X509_INFO_pop_free                   1580
+sk_POLICYQUALINFO_unshift               1581
+sk_POLICYINFO_unshift                   1582
+sk_X509_NAME_ENTRY_new_null             1583
+sk_X509_NAME_ENTRY_pop                  1584
+sk_X509_ATTRIBUTE_unshift               1585
+sk_X509_NAME_ENTRY_num                  1586
+sk_GENERAL_NAME_unshift                 1587
+sk_X509_INFO_free                       1588
+d2i_ASN1_SET_OF_ASN1_TYPE               1589
+sk_X509_INFO_insert                     1590
+sk_X509_NAME_ENTRY_value                1591
+sk_POLICYQUALINFO_insert                1592
+sk_ASN1_TYPE_set                        1593
+sk_X509_EXTENSION_delete_ptr            1594
+sk_X509_INFO_unshift                    1595
+sk_ASN1_TYPE_unshift                    1596
+sk_ASN1_TYPE_free                       1597
+sk_ASN1_TYPE_delete_ptr                 1598
+sk_ASN1_TYPE_pop_free                   1599
+sk_X509_EXTENSION_unshift               1600
+sk_X509_EXTENSION_pop_free              1601
+sk_X509_NAME_ENTRY_set_cmp_func         1602
+sk_ASN1_TYPE_insert                     1603
+sk_X509_NAME_ENTRY_free                 1604
+sk_SXNETID_insert                       1605
+sk_X509_NAME_insert                     1606
+sk_X509_insert                          1607
+sk_X509_INFO_delete                     1608
+sk_X509_INFO_set_cmp_func               1609
+sk_X509_ATTRIBUTE_insert                1610
+sk_X509_INFO_zero                       1611
+sk_X509_INFO_set                        1612
+sk_X509_EXTENSION_set                   1613
+sk_X509_EXTENSION_free                  1614
+i2d_ASN1_SET_OF_X509_ATTRIBUTE          1615
+sk_SXNETID_unshift                      1616
+sk_X509_INFO_push                       1617
+sk_X509_EXTENSION_insert                1618
+sk_X509_INFO_new_null                   1619
+sk_ASN1_TYPE_dup                        1620
+sk_X509_INFO_find                       1621
+sk_POLICYINFO_insert                    1622
+sk_ASN1_TYPE_zero                       1623
+i2d_ASN1_SET_OF_X509_EXTENSION          1624
+sk_X509_NAME_ENTRY_set                  1625
+sk_ASN1_TYPE_push                       1626
+sk_X509_NAME_ENTRY_insert               1627
+sk_ASN1_TYPE_new                        1628
+sk_GENERAL_NAME_insert                  1629
+sk_ASN1_TYPE_shift                      1630
+sk_ASN1_TYPE_delete                     1631
+sk_X509_NAME_ENTRY_pop_free             1632
+i2d_ASN1_SET_OF_X509_NAME_ENTRY         1633
+sk_X509_NAME_ENTRY_zero                 1634
+sk_ASN1_TYPE_find                       1635
+sk_X509_NAME_ENTRY_delete_ptr           1636
+sk_X509_NAME_ENTRY_push                 1637
+sk_X509_EXTENSION_zero                  1638
+sk_X509_INFO_shift                      1639
+sk_X509_INFO_dup                        1640
+sk_X509_EXTENSION_dup                   1641
+sk_X509_EXTENSION_delete                1642
+sk_X509_EXTENSION_shift                 1643
+sk_X509_EXTENSION_push                  1644
+sk_X509_NAME_ENTRY_find                 1645
diff --git a/util/mkdef.pl b/util/mkdef.pl
index 61ac7be..4576c76 100755
--- a/util/mkdef.pl
+++ b/util/mkdef.pl
@@ -219,14 +219,16 @@
 				$funcs{"sk_${1}_set"} = 1;
 				$funcs{"sk_${1}_zero"} = 1;
 				$funcs{"sk_${1}_push"} = 1;
-				$funcs{"sk_${1}_pop"} = 1;
+				$funcs{"sk_${1}_unshift"} = 1;
 				$funcs{"sk_${1}_find"} = 1;
 				$funcs{"sk_${1}_delete"} = 1;
 				$funcs{"sk_${1}_delete_ptr"} = 1;
+				$funcs{"sk_${1}_insert"} = 1;
 				$funcs{"sk_${1}_set_cmp_func"} = 1;
 				$funcs{"sk_${1}_dup"} = 1;
 				$funcs{"sk_${1}_pop_free"} = 1;
 				$funcs{"sk_${1}_shift"} = 1;
+				$funcs{"sk_${1}_pop"} = 1;
 			} elsif ($safe_stack_def &&
 				/^\s*DECLARE_ASN1_SET_OF\s*\(\s*(\w*)\s*\)/) {
 				$funcs{"d2i_ASN1_SET_OF_${1}"} = 1;
diff --git a/util/ssleay.num b/util/ssleay.num
index 4991550..12ac4f1 100755
--- a/util/ssleay.num
+++ b/util/ssleay.num
@@ -201,3 +201,13 @@
 sk_SSL_COMP_dup                         219
 sk_SSL_COMP_pop_free                    220
 sk_SSL_COMP_shift                       221
+SSL_CTX_use_certificate_chain_file      222
+sk_SSL_COMP_insert                      223
+sk_SSL_CIPHER_insert                    224
+SSL_CTX_set_verify_depth                225
+SSL_set_verify_depth                    226
+sk_SSL_CIPHER_unshift                   227
+SSL_CTX_get_verify_depth                228
+SSL_get_verify_depth                    229
+sk_SSL_COMP_unshift                     230
+SSL_CTX_set_session_id_context          231