diff options
author | beck <> | 2000-03-19 11:13:58 +0000 |
---|---|---|
committer | beck <> | 2000-03-19 11:13:58 +0000 |
commit | 796d609550df3a33fc11468741c5d2f6d3df4c11 (patch) | |
tree | 6c6d539061caa20372dad0ac4ddb1dfae2fbe7fe /src/lib/libcrypto/util | |
parent | 5be3114c1fd7e0dfea1e38d3abb4cbba75244419 (diff) | |
download | openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.gz openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.bz2 openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.zip |
OpenSSL 0.9.5 merge
*warning* this bumps shared lib minors for libssl and libcrypto from 2.1 to 2.2
if you are using the ssl26 packages for ssh and other things to work you will
need to get new ones (see ~beck/libsslsnap/<arch>) on cvs or ~beck/src-patent.tar.gz on cvs
Diffstat (limited to 'src/lib/libcrypto/util')
-rw-r--r-- | src/lib/libcrypto/util/domd | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/util/libeay.num | 403 | ||||
-rw-r--r-- | src/lib/libcrypto/util/mkdef.pl | 139 | ||||
-rw-r--r-- | src/lib/libcrypto/util/mkerr.pl | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/util/pl/BC-32.pl | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/util/pl/Mingw32.pl | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/util/pl/VC-32.pl | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/util/pod2man.pl | 1181 | ||||
-rw-r--r-- | src/lib/libcrypto/util/selftest.pl | 174 | ||||
-rw-r--r-- | src/lib/libcrypto/util/ssleay.num | 10 |
10 files changed, 1883 insertions, 34 deletions
diff --git a/src/lib/libcrypto/util/domd b/src/lib/libcrypto/util/domd index 324051f60b..9f75131f22 100644 --- a/src/lib/libcrypto/util/domd +++ b/src/lib/libcrypto/util/domd | |||
@@ -7,5 +7,5 @@ shift | |||
7 | 7 | ||
8 | cp Makefile.ssl Makefile.save | 8 | cp Makefile.ssl Makefile.save |
9 | makedepend -f Makefile.ssl $@ | 9 | makedepend -f Makefile.ssl $@ |
10 | $TOP/util/clean-depend.pl < Makefile.ssl > Makefile.new | 10 | perl $TOP/util/clean-depend.pl < Makefile.ssl > Makefile.new |
11 | mv Makefile.new Makefile.ssl | 11 | mv Makefile.new Makefile.ssl |
diff --git a/src/lib/libcrypto/util/libeay.num b/src/lib/libcrypto/util/libeay.num index 59c2040a29..e3818ef6e4 100644 --- a/src/lib/libcrypto/util/libeay.num +++ b/src/lib/libcrypto/util/libeay.num | |||
@@ -499,9 +499,9 @@ SHA1_Update 504 | |||
499 | SHA_Final 505 | 499 | SHA_Final 505 |
500 | SHA_Init 506 | 500 | SHA_Init 506 |
501 | SHA_Update 507 | 501 | SHA_Update 507 |
502 | SSLeay_add_all_algorithms 508 | 502 | OpenSSL_add_all_algorithms 508 |
503 | SSLeay_add_all_ciphers 509 | 503 | OpenSSL_add_all_ciphers 509 |
504 | SSLeay_add_all_digests 510 | 504 | OpenSSL_add_all_digests 510 |
505 | TXT_DB_create_index 511 | 505 | TXT_DB_create_index 511 |
506 | TXT_DB_free 512 | 506 | TXT_DB_free 512 |
507 | TXT_DB_get_by_index 513 | 507 | TXT_DB_get_by_index 513 |
@@ -1304,13 +1304,12 @@ i2d_SXNETID 1329 | |||
1304 | d2i_SXNETID 1330 | 1304 | d2i_SXNETID 1330 |
1305 | SXNETID_new 1331 | 1305 | SXNETID_new 1331 |
1306 | SXNETID_free 1332 | 1306 | SXNETID_free 1332 |
1307 | DSA_SIG_new 1333 | 1307 | DSA_SIG_new 1333 |
1308 | DSA_SIG_free 1334 | 1308 | DSA_SIG_free 1334 |
1309 | DSA_do_sign 1335 | 1309 | DSA_do_sign 1335 |
1310 | DSA_do_verify 1336 | 1310 | DSA_do_verify 1336 |
1311 | d2i_DSA_SIG 1337 | 1311 | d2i_DSA_SIG 1337 |
1312 | i2d_DSA_SIG 1338 | 1312 | i2d_DSA_SIG 1338 |
1313 | |||
1314 | i2d_ASN1_VISIBLESTRING 1339 | 1313 | i2d_ASN1_VISIBLESTRING 1339 |
1315 | d2i_ASN1_VISIBLESTRING 1340 | 1314 | d2i_ASN1_VISIBLESTRING 1340 |
1316 | i2d_ASN1_UTF8STRING 1341 | 1315 | i2d_ASN1_UTF8STRING 1341 |
@@ -1844,3 +1843,387 @@ sk_DIST_POINT_sort 1868 | |||
1844 | RSA_check_key 1869 | 1843 | RSA_check_key 1869 |
1845 | OBJ_obj2txt 1870 | 1844 | OBJ_obj2txt 1870 |
1846 | DSA_dup_DH 1871 | 1845 | DSA_dup_DH 1871 |
1846 | X509_REQ_get_extensions 1872 | ||
1847 | X509_REQ_set_extension_nids 1873 | ||
1848 | BIO_nwrite 1874 | ||
1849 | X509_REQ_extension_nid 1875 | ||
1850 | BIO_nread 1876 | ||
1851 | X509_REQ_get_extension_nids 1877 | ||
1852 | BIO_nwrite0 1878 | ||
1853 | X509_REQ_add_extensions_nid 1879 | ||
1854 | BIO_nread0 1880 | ||
1855 | X509_REQ_add_extensions 1881 | ||
1856 | BIO_new_mem_buf 1882 | ||
1857 | DH_set_ex_data 1883 | ||
1858 | DH_set_method 1884 | ||
1859 | DSA_OpenSSL 1885 | ||
1860 | DH_get_ex_data 1886 | ||
1861 | DH_get_ex_new_index 1887 | ||
1862 | DSA_new_method 1888 | ||
1863 | DH_new_method 1889 | ||
1864 | DH_OpenSSL 1890 | ||
1865 | DSA_get_ex_new_index 1891 | ||
1866 | DH_get_default_method 1892 | ||
1867 | DSA_set_ex_data 1893 | ||
1868 | DH_set_default_method 1894 | ||
1869 | DSA_get_ex_data 1895 | ||
1870 | X509V3_EXT_REQ_add_conf 1896 | ||
1871 | NETSCAPE_SPKI_print 1897 | ||
1872 | NETSCAPE_SPKI_set_pubkey 1898 | ||
1873 | NETSCAPE_SPKI_b64_encode 1899 | ||
1874 | NETSCAPE_SPKI_get_pubkey 1900 | ||
1875 | NETSCAPE_SPKI_b64_decode 1901 | ||
1876 | UTF8_putc 1902 | ||
1877 | UTF8_getc 1903 | ||
1878 | RSA_null_method 1904 | ||
1879 | ASN1_tag2str 1905 | ||
1880 | BIO_ctrl_reset_read_request 1906 | ||
1881 | DISPLAYTEXT_new 1907 | ||
1882 | ASN1_GENERALIZEDTIME_free 1908 | ||
1883 | X509_REVOKED_get_ext_d2i 1909 | ||
1884 | X509_set_ex_data 1910 | ||
1885 | X509_reject_set_bit_asc 1911 | ||
1886 | X509_NAME_add_entry_by_txt 1912 | ||
1887 | sk_X509_TRUST_pop 1913 | ||
1888 | X509_NAME_add_entry_by_NID 1914 | ||
1889 | X509_PURPOSE_get0 1915 | ||
1890 | sk_ACCESS_DESCRIPTION_shift 1916 | ||
1891 | PEM_read_X509_AUX 1917 | ||
1892 | d2i_AUTHORITY_INFO_ACCESS 1918 | ||
1893 | sk_X509_TRUST_set_cmp_func 1919 | ||
1894 | sk_X509_TRUST_free 1920 | ||
1895 | PEM_write_PUBKEY 1921 | ||
1896 | sk_X509_TRUST_num 1922 | ||
1897 | sk_ACCESS_DESCRIPTION_delete 1923 | ||
1898 | sk_ASN1_STRING_TABLE_value 1924 | ||
1899 | ACCESS_DESCRIPTION_new 1925 | ||
1900 | X509_CERT_AUX_free 1926 | ||
1901 | d2i_ACCESS_DESCRIPTION 1927 | ||
1902 | X509_trust_clear 1928 | ||
1903 | sk_X509_PURPOSE_value 1929 | ||
1904 | sk_X509_PURPOSE_zero 1930 | ||
1905 | X509_TRUST_add 1931 | ||
1906 | ASN1_VISIBLESTRING_new 1932 | ||
1907 | X509_alias_set1 1933 | ||
1908 | ASN1_PRINTABLESTRING_free 1934 | ||
1909 | EVP_PKEY_get1_DSA 1935 | ||
1910 | ASN1_BMPSTRING_new 1936 | ||
1911 | ASN1_mbstring_copy 1937 | ||
1912 | ASN1_UTF8STRING_new 1938 | ||
1913 | sk_ACCESS_DESCRIPTION_set 1939 | ||
1914 | sk_X509_PURPOSE_pop 1940 | ||
1915 | DSA_get_default_method 1941 | ||
1916 | sk_X509_PURPOSE_push 1942 | ||
1917 | sk_X509_PURPOSE_delete 1943 | ||
1918 | sk_X509_PURPOSE_num 1944 | ||
1919 | i2d_ASN1_SET_OF_ACCESS_DESCRIPTION 1945 | ||
1920 | ASN1_T61STRING_free 1946 | ||
1921 | sk_ACCESS_DESCRIPTION_free 1947 | ||
1922 | sk_ASN1_STRING_TABLE_pop 1948 | ||
1923 | DSA_set_method 1949 | ||
1924 | X509_get_ex_data 1950 | ||
1925 | ASN1_STRING_type 1951 | ||
1926 | X509_PURPOSE_get_by_sname 1952 | ||
1927 | sk_X509_PURPOSE_find 1953 | ||
1928 | ASN1_TIME_free 1954 | ||
1929 | ASN1_OCTET_STRING_cmp 1955 | ||
1930 | sk_ACCESS_DESCRIPTION_value 1956 | ||
1931 | ASN1_BIT_STRING_new 1957 | ||
1932 | X509_get_ext_d2i 1958 | ||
1933 | PEM_read_bio_X509_AUX 1959 | ||
1934 | ASN1_STRING_set_default_mask_asc 1960 | ||
1935 | PEM_write_bio_RSA_PUBKEY 1961 | ||
1936 | sk_ASN1_STRING_TABLE_num 1962 | ||
1937 | ASN1_INTEGER_cmp 1963 | ||
1938 | d2i_RSA_PUBKEY_fp 1964 | ||
1939 | sk_ACCESS_DESCRIPTION_unshift 1965 | ||
1940 | sk_ASN1_STRING_TABLE_delete_ptr 1966 | ||
1941 | X509_trust_set_bit_asc 1967 | ||
1942 | PEM_write_bio_DSA_PUBKEY 1968 | ||
1943 | X509_STORE_CTX_free 1969 | ||
1944 | EVP_PKEY_set1_DSA 1970 | ||
1945 | i2d_DSA_PUBKEY_fp 1971 | ||
1946 | X509_load_cert_crl_file 1972 | ||
1947 | ASN1_TIME_new 1973 | ||
1948 | i2d_RSA_PUBKEY 1974 | ||
1949 | sk_X509_TRUST_pop_free 1975 | ||
1950 | X509_STORE_CTX_purpose_inherit 1976 | ||
1951 | PEM_read_RSA_PUBKEY 1977 | ||
1952 | sk_X509_TRUST_zero 1978 | ||
1953 | sk_ACCESS_DESCRIPTION_pop_free 1979 | ||
1954 | d2i_X509_AUX 1980 | ||
1955 | i2d_DSA_PUBKEY 1981 | ||
1956 | X509_CERT_AUX_print 1982 | ||
1957 | sk_X509_PURPOSE_new_null 1983 | ||
1958 | PEM_read_DSA_PUBKEY 1984 | ||
1959 | i2d_RSA_PUBKEY_bio 1985 | ||
1960 | ASN1_BIT_STRING_num_asc 1986 | ||
1961 | i2d_PUBKEY 1987 | ||
1962 | ASN1_UTCTIME_free 1988 | ||
1963 | DSA_set_default_method 1989 | ||
1964 | X509_PURPOSE_get_by_id 1990 | ||
1965 | sk_X509_TRUST_push 1991 | ||
1966 | sk_ASN1_STRING_TABLE_sort 1992 | ||
1967 | sk_X509_PURPOSE_set_cmp_func 1993 | ||
1968 | ACCESS_DESCRIPTION_free 1994 | ||
1969 | PEM_read_bio_PUBKEY 1995 | ||
1970 | ASN1_STRING_set_by_NID 1996 | ||
1971 | X509_PURPOSE_get_id 1997 | ||
1972 | DISPLAYTEXT_free 1998 | ||
1973 | OTHERNAME_new 1999 | ||
1974 | sk_X509_TRUST_find 2000 | ||
1975 | X509_CERT_AUX_new 2001 | ||
1976 | sk_ACCESS_DESCRIPTION_dup 2002 | ||
1977 | sk_ASN1_STRING_TABLE_pop_free 2003 | ||
1978 | sk_ASN1_STRING_TABLE_unshift 2004 | ||
1979 | sk_X509_TRUST_shift 2005 | ||
1980 | sk_ACCESS_DESCRIPTION_zero 2006 | ||
1981 | X509_TRUST_cleanup 2007 | ||
1982 | X509_NAME_add_entry_by_OBJ 2008 | ||
1983 | X509_CRL_get_ext_d2i 2009 | ||
1984 | sk_X509_TRUST_set 2010 | ||
1985 | X509_PURPOSE_get0_name 2011 | ||
1986 | PEM_read_PUBKEY 2012 | ||
1987 | sk_ACCESS_DESCRIPTION_new 2013 | ||
1988 | i2d_DSA_PUBKEY_bio 2014 | ||
1989 | i2d_OTHERNAME 2015 | ||
1990 | ASN1_OCTET_STRING_free 2016 | ||
1991 | ASN1_BIT_STRING_set_asc 2017 | ||
1992 | sk_ACCESS_DESCRIPTION_push 2018 | ||
1993 | X509_get_ex_new_index 2019 | ||
1994 | ASN1_STRING_TABLE_cleanup 2020 | ||
1995 | X509_TRUST_get_by_id 2021 | ||
1996 | X509_PURPOSE_get_trust 2022 | ||
1997 | ASN1_STRING_length 2023 | ||
1998 | d2i_ASN1_SET_OF_ACCESS_DESCRIPTION 2024 | ||
1999 | ASN1_PRINTABLESTRING_new 2025 | ||
2000 | X509V3_get_d2i 2026 | ||
2001 | ASN1_ENUMERATED_free 2027 | ||
2002 | i2d_X509_CERT_AUX 2028 | ||
2003 | sk_ACCESS_DESCRIPTION_find 2029 | ||
2004 | X509_STORE_CTX_set_trust 2030 | ||
2005 | sk_X509_PURPOSE_unshift 2031 | ||
2006 | ASN1_STRING_set_default_mask 2032 | ||
2007 | X509_STORE_CTX_new 2033 | ||
2008 | EVP_PKEY_get1_RSA 2034 | ||
2009 | sk_X509_PURPOSE_set 2035 | ||
2010 | sk_ASN1_STRING_TABLE_insert 2036 | ||
2011 | sk_X509_PURPOSE_sort 2037 | ||
2012 | DIRECTORYSTRING_free 2038 | ||
2013 | PEM_write_X509_AUX 2039 | ||
2014 | ASN1_OCTET_STRING_set 2040 | ||
2015 | d2i_DSA_PUBKEY_fp 2041 | ||
2016 | sk_ASN1_STRING_TABLE_free 2042 | ||
2017 | sk_X509_TRUST_value 2043 | ||
2018 | d2i_RSA_PUBKEY 2044 | ||
2019 | sk_ASN1_STRING_TABLE_set 2045 | ||
2020 | X509_TRUST_get0_name 2046 | ||
2021 | X509_TRUST_get0 2047 | ||
2022 | AUTHORITY_INFO_ACCESS_free 2048 | ||
2023 | ASN1_IA5STRING_new 2049 | ||
2024 | d2i_DSA_PUBKEY 2050 | ||
2025 | X509_check_purpose 2051 | ||
2026 | ASN1_ENUMERATED_new 2052 | ||
2027 | d2i_RSA_PUBKEY_bio 2053 | ||
2028 | d2i_PUBKEY 2054 | ||
2029 | X509_TRUST_get_trust 2055 | ||
2030 | X509_TRUST_get_flags 2056 | ||
2031 | ASN1_BMPSTRING_free 2057 | ||
2032 | ASN1_T61STRING_new 2058 | ||
2033 | sk_X509_TRUST_unshift 2059 | ||
2034 | ASN1_UTCTIME_new 2060 | ||
2035 | sk_ACCESS_DESCRIPTION_pop 2061 | ||
2036 | i2d_AUTHORITY_INFO_ACCESS 2062 | ||
2037 | EVP_PKEY_set1_RSA 2063 | ||
2038 | X509_STORE_CTX_set_purpose 2064 | ||
2039 | ASN1_IA5STRING_free 2065 | ||
2040 | PEM_write_bio_X509_AUX 2066 | ||
2041 | X509_PURPOSE_get_count 2067 | ||
2042 | CRYPTO_add_info 2068 | ||
2043 | sk_ACCESS_DESCRIPTION_num 2069 | ||
2044 | sk_ASN1_STRING_TABLE_set_cmp_func 2070 | ||
2045 | X509_NAME_ENTRY_create_by_txt 2071 | ||
2046 | ASN1_STRING_get_default_mask 2072 | ||
2047 | sk_X509_TRUST_dup 2073 | ||
2048 | X509_alias_get0 2074 | ||
2049 | ASN1_STRING_data 2075 | ||
2050 | sk_X509_TRUST_insert 2076 | ||
2051 | i2d_ACCESS_DESCRIPTION 2077 | ||
2052 | X509_trust_set_bit 2078 | ||
2053 | sk_X509_PURPOSE_delete_ptr 2079 | ||
2054 | ASN1_BIT_STRING_free 2080 | ||
2055 | PEM_read_bio_RSA_PUBKEY 2081 | ||
2056 | X509_add1_reject_object 2082 | ||
2057 | X509_check_trust 2083 | ||
2058 | sk_X509_TRUST_new_null 2084 | ||
2059 | sk_ACCESS_DESCRIPTION_new_null 2085 | ||
2060 | sk_ACCESS_DESCRIPTION_delete_ptr 2086 | ||
2061 | sk_X509_TRUST_sort 2087 | ||
2062 | PEM_read_bio_DSA_PUBKEY 2088 | ||
2063 | sk_X509_TRUST_new 2089 | ||
2064 | X509_PURPOSE_add 2090 | ||
2065 | ASN1_STRING_TABLE_get 2091 | ||
2066 | ASN1_UTF8STRING_free 2092 | ||
2067 | d2i_DSA_PUBKEY_bio 2093 | ||
2068 | sk_ASN1_STRING_TABLE_delete 2094 | ||
2069 | PEM_write_RSA_PUBKEY 2095 | ||
2070 | d2i_OTHERNAME 2096 | ||
2071 | sk_ACCESS_DESCRIPTION_insert 2097 | ||
2072 | X509_reject_set_bit 2098 | ||
2073 | sk_X509_TRUST_delete_ptr 2099 | ||
2074 | sk_X509_PURPOSE_pop_free 2100 | ||
2075 | PEM_write_DSA_PUBKEY 2101 | ||
2076 | sk_X509_PURPOSE_free 2102 | ||
2077 | sk_X509_PURPOSE_dup 2103 | ||
2078 | sk_ASN1_STRING_TABLE_zero 2104 | ||
2079 | X509_PURPOSE_get0_sname 2105 | ||
2080 | sk_ASN1_STRING_TABLE_shift 2106 | ||
2081 | EVP_PKEY_set1_DH 2107 | ||
2082 | ASN1_OCTET_STRING_dup 2108 | ||
2083 | ASN1_BIT_STRING_set 2109 | ||
2084 | X509_TRUST_get_count 2110 | ||
2085 | ASN1_INTEGER_free 2111 | ||
2086 | OTHERNAME_free 2112 | ||
2087 | i2d_RSA_PUBKEY_fp 2113 | ||
2088 | ASN1_INTEGER_dup 2114 | ||
2089 | d2i_X509_CERT_AUX 2115 | ||
2090 | sk_ASN1_STRING_TABLE_new_null 2116 | ||
2091 | PEM_write_bio_PUBKEY 2117 | ||
2092 | ASN1_VISIBLESTRING_free 2118 | ||
2093 | X509_PURPOSE_cleanup 2119 | ||
2094 | sk_ASN1_STRING_TABLE_push 2120 | ||
2095 | sk_ASN1_STRING_TABLE_dup 2121 | ||
2096 | sk_X509_PURPOSE_shift 2122 | ||
2097 | ASN1_mbstring_ncopy 2123 | ||
2098 | sk_X509_PURPOSE_new 2124 | ||
2099 | sk_X509_PURPOSE_insert 2125 | ||
2100 | ASN1_GENERALIZEDTIME_new 2126 | ||
2101 | sk_ACCESS_DESCRIPTION_sort 2127 | ||
2102 | EVP_PKEY_get1_DH 2128 | ||
2103 | sk_ACCESS_DESCRIPTION_set_cmp_func 2129 | ||
2104 | ASN1_OCTET_STRING_new 2130 | ||
2105 | ASN1_INTEGER_new 2131 | ||
2106 | i2d_X509_AUX 2132 | ||
2107 | sk_ASN1_STRING_TABLE_find 2133 | ||
2108 | ASN1_BIT_STRING_name_print 2134 | ||
2109 | X509_cmp 2135 | ||
2110 | ASN1_STRING_length_set 2136 | ||
2111 | DIRECTORYSTRING_new 2137 | ||
2112 | sk_ASN1_STRING_TABLE_new 2138 | ||
2113 | sk_X509_TRUST_delete 2139 | ||
2114 | X509_add1_trust_object 2140 | ||
2115 | PKCS12_newpass 2141 | ||
2116 | SMIME_write_PKCS7 2142 | ||
2117 | SMIME_read_PKCS7 2143 | ||
2118 | des_set_key_checked 2144 | ||
2119 | PKCS7_verify 2145 | ||
2120 | PKCS7_encrypt 2146 | ||
2121 | des_set_key_unchecked 2147 | ||
2122 | SMIME_crlf_copy 2148 | ||
2123 | i2d_ASN1_PRINTABLESTRING 2149 | ||
2124 | PKCS7_get0_signers 2150 | ||
2125 | PKCS7_decrypt 2151 | ||
2126 | SMIME_text 2152 | ||
2127 | PKCS7_simple_smimecap 2153 | ||
2128 | PKCS7_get_smimecap 2154 | ||
2129 | PKCS7_sign 2155 | ||
2130 | PKCS7_add_attrib_smimecap 2156 | ||
2131 | CRYPTO_dbg_set_options 2157 | ||
2132 | CRYPTO_remove_all_info 2158 | ||
2133 | CRYPTO_get_mem_debug_functions 2159 | ||
2134 | CRYPTO_is_mem_check_on 2160 | ||
2135 | CRYPTO_set_mem_debug_functions 2161 | ||
2136 | CRYPTO_pop_info 2162 | ||
2137 | CRYPTO_push_info_ 2163 | ||
2138 | CRYPTO_set_mem_debug_options 2164 | ||
2139 | PEM_write_PKCS8PrivateKey_nid 2165 | ||
2140 | PEM_write_bio_PKCS8PrivateKey_nid 2166 | ||
2141 | d2i_PKCS8PrivateKey_bio 2167 | ||
2142 | ASN1_NULL_free 2168 | ||
2143 | d2i_ASN1_NULL 2169 | ||
2144 | ASN1_NULL_new 2170 | ||
2145 | i2d_PKCS8PrivateKey_bio 2171 | ||
2146 | i2d_PKCS8PrivateKey_fp 2172 | ||
2147 | i2d_ASN1_NULL 2173 | ||
2148 | i2d_PKCS8PrivateKey_nid_fp 2174 | ||
2149 | d2i_PKCS8PrivateKey_fp 2175 | ||
2150 | i2d_PKCS8PrivateKey_nid_bio 2176 | ||
2151 | i2d_PKCS8PrivateKeyInfo_fp 2177 | ||
2152 | i2d_PKCS8PrivateKeyInfo_bio 2178 | ||
2153 | PEM_cb 2179 | ||
2154 | i2d_PrivateKey_fp 2180 | ||
2155 | d2i_PrivateKey_bio 2181 | ||
2156 | d2i_PrivateKey_fp 2182 | ||
2157 | i2d_PrivateKey_bio 2183 | ||
2158 | X509_reject_clear 2184 | ||
2159 | X509_TRUST_set_default 2185 | ||
2160 | d2i_AutoPrivateKey 2186 | ||
2161 | X509_ATTRIBUTE_get0_type 2187 | ||
2162 | X509_ATTRIBUTE_set1_data 2188 | ||
2163 | X509at_get_attr 2189 | ||
2164 | X509at_get_attr_count 2190 | ||
2165 | X509_ATTRIBUTE_create_by_NID 2191 | ||
2166 | X509_ATTRIBUTE_set1_object 2192 | ||
2167 | X509_ATTRIBUTE_count 2193 | ||
2168 | X509_ATTRIBUTE_create_by_OBJ 2194 | ||
2169 | X509_ATTRIBUTE_get0_object 2195 | ||
2170 | X509at_get_attr_by_NID 2196 | ||
2171 | X509at_add1_attr 2197 | ||
2172 | X509_ATTRIBUTE_get0_data 2198 | ||
2173 | X509at_delete_attr 2199 | ||
2174 | X509at_get_attr_by_OBJ 2200 | ||
2175 | RAND_add 2201 | ||
2176 | BIO_number_written 2202 | ||
2177 | BIO_number_read 2203 | ||
2178 | X509_STORE_CTX_get1_chain 2204 | ||
2179 | ERR_load_RAND_strings 2205 | ||
2180 | RAND_pseudo_bytes 2206 | ||
2181 | X509_REQ_get_attr_by_NID 2207 | ||
2182 | X509_REQ_get_attr 2208 | ||
2183 | X509_REQ_add1_attr_by_NID 2209 | ||
2184 | X509_REQ_get_attr_by_OBJ 2210 | ||
2185 | X509at_add1_attr_by_NID 2211 | ||
2186 | X509_REQ_add1_attr_by_OBJ 2212 | ||
2187 | X509_REQ_get_attr_count 2213 | ||
2188 | X509_REQ_add1_attr 2214 | ||
2189 | X509_REQ_delete_attr 2215 | ||
2190 | X509at_add1_attr_by_OBJ 2216 | ||
2191 | X509_REQ_add1_attr_by_txt 2217 | ||
2192 | X509_ATTRIBUTE_create_by_txt 2218 | ||
2193 | X509at_add1_attr_by_txt 2219 | ||
2194 | sk_CRYPTO_EX_DATA_FUNCS_delete 2220 | ||
2195 | sk_CRYPTO_EX_DATA_FUNCS_set 2221 | ||
2196 | sk_CRYPTO_EX_DATA_FUNCS_unshift 2222 | ||
2197 | sk_CRYPTO_EX_DATA_FUNCS_new_null 2223 | ||
2198 | sk_CRYPTO_EX_DATA_FUNCS_set_cmp_func 2224 | ||
2199 | sk_CRYPTO_EX_DATA_FUNCS_sort 2225 | ||
2200 | sk_CRYPTO_EX_DATA_FUNCS_dup 2226 | ||
2201 | sk_CRYPTO_EX_DATA_FUNCS_shift 2227 | ||
2202 | sk_CRYPTO_EX_DATA_FUNCS_value 2228 | ||
2203 | sk_CRYPTO_EX_DATA_FUNCS_pop 2229 | ||
2204 | sk_CRYPTO_EX_DATA_FUNCS_push 2230 | ||
2205 | sk_CRYPTO_EX_DATA_FUNCS_find 2231 | ||
2206 | sk_CRYPTO_EX_DATA_FUNCS_new 2232 | ||
2207 | sk_CRYPTO_EX_DATA_FUNCS_free 2233 | ||
2208 | sk_CRYPTO_EX_DATA_FUNCS_delete_ptr 2234 | ||
2209 | sk_CRYPTO_EX_DATA_FUNCS_num 2235 | ||
2210 | sk_CRYPTO_EX_DATA_FUNCS_pop_free 2236 | ||
2211 | sk_CRYPTO_EX_DATA_FUNCS_insert 2237 | ||
2212 | sk_CRYPTO_EX_DATA_FUNCS_zero 2238 | ||
2213 | BN_pseudo_rand 2239 | ||
2214 | BN_is_prime_fasttest 2240 | ||
2215 | BN_CTX_end 2241 | ||
2216 | BN_CTX_start 2242 | ||
2217 | BN_CTX_get 2243 | ||
2218 | EVP_PKEY2PKCS8_broken 2244 | ||
2219 | ASN1_STRING_TABLE_add 2245 | ||
2220 | CRYPTO_dbg_get_options 2246 | ||
2221 | AUTHORITY_INFO_ACCESS_new 2247 | ||
2222 | CRYPTO_get_mem_debug_options 2248 | ||
2223 | des_crypt 2249 | ||
2224 | PEM_write_bio_X509_REQ_NEW 2250 | ||
2225 | PEM_write_X509_REQ_NEW 2251 | ||
2226 | BIO_callback_ctrl 2252 | ||
2227 | RAND_egd 2253 | ||
2228 | RAND_status 2254 | ||
2229 | bn_dump1 2255 | ||
diff --git a/src/lib/libcrypto/util/mkdef.pl b/src/lib/libcrypto/util/mkdef.pl index 80384af325..4e2845a4e1 100644 --- a/src/lib/libcrypto/util/mkdef.pl +++ b/src/lib/libcrypto/util/mkdef.pl | |||
@@ -6,26 +6,34 @@ | |||
6 | # prototyped functions: it then prunes the output. | 6 | # prototyped functions: it then prunes the output. |
7 | # | 7 | # |
8 | 8 | ||
9 | $crypto_num="util/libeay.num"; | 9 | my $crypto_num="util/libeay.num"; |
10 | $ssl_num= "util/ssleay.num"; | 10 | my $ssl_num= "util/ssleay.num"; |
11 | 11 | ||
12 | my $do_update = 0; | 12 | my $do_update = 0; |
13 | my $do_crypto = 0; | 13 | my $do_crypto = 0; |
14 | my $do_ssl = 0; | 14 | my $do_ssl = 0; |
15 | $rsaref = 0; | 15 | my $do_ctest = 0; |
16 | my $rsaref = 0; | ||
16 | 17 | ||
17 | $W32=1; | 18 | my $W32=1; |
18 | $NT=0; | 19 | my $NT=0; |
19 | # Set this to make typesafe STACK definitions appear in DEF | 20 | # Set this to make typesafe STACK definitions appear in DEF |
20 | $safe_stack_def = 1; | 21 | my $safe_stack_def = 1; |
21 | 22 | ||
22 | $options=""; | 23 | my $options=""; |
23 | open(IN,"<Makefile.ssl") || die "unable to open Makefile.ssl!\n"; | 24 | open(IN,"<Makefile.ssl") || die "unable to open Makefile.ssl!\n"; |
24 | while(<IN>) { | 25 | while(<IN>) { |
25 | $options=$1 if (/^OPTIONS=(.*)$/); | 26 | $options=$1 if (/^OPTIONS=(.*)$/); |
26 | } | 27 | } |
27 | close(IN); | 28 | close(IN); |
28 | 29 | ||
30 | # The following ciphers may be excluded (by Configure). This means functions | ||
31 | # defined with ifndef(NO_XXX) are not included in the .def file, and everything | ||
32 | # in directory xxx is ignored. | ||
33 | my $no_rc2; my $no_rc4; my $no_rc5; my $no_idea; my $no_des; my $no_bf; | ||
34 | my $no_cast; my $no_md2; my $no_md5; my $no_sha; my $no_ripemd; my $no_mdc2; | ||
35 | my $no_rsa; my $no_dsa; my $no_dh; my $no_hmac=0; | ||
36 | |||
29 | foreach (@ARGV, split(/ /, $options)) | 37 | foreach (@ARGV, split(/ /, $options)) |
30 | { | 38 | { |
31 | $W32=1 if $_ eq "32"; | 39 | $W32=1 if $_ eq "32"; |
@@ -39,6 +47,7 @@ foreach (@ARGV, split(/ /, $options)) | |||
39 | $do_crypto=1 if $_ eq "libeay"; | 47 | $do_crypto=1 if $_ eq "libeay"; |
40 | $do_crypto=1 if $_ eq "crypto"; | 48 | $do_crypto=1 if $_ eq "crypto"; |
41 | $do_update=1 if $_ eq "update"; | 49 | $do_update=1 if $_ eq "update"; |
50 | $do_ctest=1 if $_ eq "ctest"; | ||
42 | $rsaref=1 if $_ eq "rsaref"; | 51 | $rsaref=1 if $_ eq "rsaref"; |
43 | 52 | ||
44 | if (/^no-rc2$/) { $no_rc2=1; } | 53 | if (/^no-rc2$/) { $no_rc2=1; } |
@@ -59,6 +68,7 @@ foreach (@ARGV, split(/ /, $options)) | |||
59 | elsif (/^no-hmac$/) { $no_hmac=1; } | 68 | elsif (/^no-hmac$/) { $no_hmac=1; } |
60 | } | 69 | } |
61 | 70 | ||
71 | |||
62 | if (!$do_ssl && !$do_crypto) | 72 | if (!$do_ssl && !$do_crypto) |
63 | { | 73 | { |
64 | print STDERR "usage: $0 ( ssl | crypto ) [ 16 | 32 | NT ] [rsaref]\n"; | 74 | print STDERR "usage: $0 ( ssl | crypto ) [ 16 | 32 | NT ] [rsaref]\n"; |
@@ -70,9 +80,9 @@ $max_ssl = $max_num; | |||
70 | %crypto_list=&load_numbers($crypto_num); | 80 | %crypto_list=&load_numbers($crypto_num); |
71 | $max_crypto = $max_num; | 81 | $max_crypto = $max_num; |
72 | 82 | ||
73 | $ssl="ssl/ssl.h"; | 83 | my $ssl="ssl/ssl.h"; |
74 | 84 | ||
75 | $crypto ="crypto/crypto.h"; | 85 | my $crypto ="crypto/crypto.h"; |
76 | $crypto.=" crypto/des/des.h" unless $no_des; | 86 | $crypto.=" crypto/des/des.h" unless $no_des; |
77 | $crypto.=" crypto/idea/idea.h" unless $no_idea; | 87 | $crypto.=" crypto/idea/idea.h" unless $no_idea; |
78 | $crypto.=" crypto/rc4/rc4.h" unless $no_rc4; | 88 | $crypto.=" crypto/rc4/rc4.h" unless $no_rc4; |
@@ -115,8 +125,8 @@ $crypto.=" crypto/rand/rand.h"; | |||
115 | $crypto.=" crypto/comp/comp.h"; | 125 | $crypto.=" crypto/comp/comp.h"; |
116 | $crypto.=" crypto/tmdiff.h"; | 126 | $crypto.=" crypto/tmdiff.h"; |
117 | 127 | ||
118 | @ssl_func = &do_defs("SSLEAY", $ssl); | 128 | my @ssl_func = &do_defs("SSLEAY", $ssl); |
119 | @crypto_func = &do_defs("LIBEAY", $crypto); | 129 | my @crypto_func = &do_defs("LIBEAY", $crypto); |
120 | 130 | ||
121 | 131 | ||
122 | if ($do_update) { | 132 | if ($do_update) { |
@@ -131,7 +141,26 @@ if($do_crypto == 1) { | |||
131 | open(OUT, ">>$crypto_num"); | 141 | open(OUT, ">>$crypto_num"); |
132 | &update_numbers(*OUT,"LIBEAY",*crypto_list,$max_crypto, @crypto_func); | 142 | &update_numbers(*OUT,"LIBEAY",*crypto_list,$max_crypto, @crypto_func); |
133 | close OUT; | 143 | close OUT; |
134 | } | 144 | } |
145 | |||
146 | } elsif ($do_ctest) { | ||
147 | |||
148 | print <<"EOF"; | ||
149 | |||
150 | /* Test file to check all DEF file symbols are present by trying | ||
151 | * to link to all of them. This is *not* intended to be run! | ||
152 | */ | ||
153 | |||
154 | int main() | ||
155 | { | ||
156 | EOF | ||
157 | &print_test_file(*STDOUT,"SSLEAY",*ssl_list,@ssl_func) | ||
158 | if $do_ssl == 1; | ||
159 | |||
160 | &print_test_file(*STDOUT,"LIBEAY",*crypto_list,@crypto_func) | ||
161 | if $do_crypto == 1; | ||
162 | |||
163 | print "}\n"; | ||
135 | 164 | ||
136 | } else { | 165 | } else { |
137 | 166 | ||
@@ -147,14 +176,15 @@ if($do_crypto == 1) { | |||
147 | sub do_defs | 176 | sub do_defs |
148 | { | 177 | { |
149 | my($name,$files)=@_; | 178 | my($name,$files)=@_; |
179 | my $file; | ||
150 | my @ret; | 180 | my @ret; |
151 | my %funcs; | 181 | my %funcs; |
182 | my $cpp; | ||
152 | 183 | ||
153 | foreach $file (split(/\s+/,$files)) | 184 | foreach $file (split(/\s+/,$files)) |
154 | { | 185 | { |
155 | open(IN,"<$file") || die "unable to open $file:$!\n"; | 186 | open(IN,"<$file") || die "unable to open $file:$!\n"; |
156 | 187 | my $line = "", my $def= ""; | |
157 | my $line = "", $def= ""; | ||
158 | my %tag = ( | 188 | my %tag = ( |
159 | FreeBSD => 0, | 189 | FreeBSD => 0, |
160 | NOPROTO => 0, | 190 | NOPROTO => 0, |
@@ -164,6 +194,22 @@ sub do_defs | |||
164 | NO_FP_API => 0, | 194 | NO_FP_API => 0, |
165 | CONST_STRICT => 0, | 195 | CONST_STRICT => 0, |
166 | TRUE => 1, | 196 | TRUE => 1, |
197 | NO_RC2 => 0, | ||
198 | NO_RC4 => 0, | ||
199 | NO_RC5 => 0, | ||
200 | NO_IDEA => 0, | ||
201 | NO_DES => 0, | ||
202 | NO_BF => 0, | ||
203 | NO_CAST => 0, | ||
204 | NO_MD2 => 0, | ||
205 | NO_MD5 => 0, | ||
206 | NO_SHA => 0, | ||
207 | NO_RIPEMD => 0, | ||
208 | NO_MDC2 => 0, | ||
209 | NO_RSA => 0, | ||
210 | NO_DSA => 0, | ||
211 | NO_DH => 0, | ||
212 | NO_HMAC => 0, | ||
167 | ); | 213 | ); |
168 | while(<IN>) { | 214 | while(<IN>) { |
169 | last if (/BEGIN ERROR CODES/); | 215 | last if (/BEGIN ERROR CODES/); |
@@ -214,6 +260,11 @@ sub do_defs | |||
214 | push(@tag,"TRUE"); | 260 | push(@tag,"TRUE"); |
215 | $tag{"TRUE"}=1; | 261 | $tag{"TRUE"}=1; |
216 | next; | 262 | next; |
263 | } elsif (/^\#\s*if\s+0/) { | ||
264 | # Dummy tag | ||
265 | push(@tag,"TRUE"); | ||
266 | $tag{"TRUE"}=-1; | ||
267 | next; | ||
217 | } elsif (/^\#/) { | 268 | } elsif (/^\#/) { |
218 | next; | 269 | next; |
219 | } | 270 | } |
@@ -250,7 +301,20 @@ sub do_defs | |||
250 | } | 301 | } |
251 | $funcs{"PEM_read_bio_${1}"} = 1; | 302 | $funcs{"PEM_read_bio_${1}"} = 1; |
252 | $funcs{"PEM_write_bio_${1}"} = 1; | 303 | $funcs{"PEM_write_bio_${1}"} = 1; |
253 | } elsif ( | 304 | } elsif (/^DECLARE_PEM_write\s*\(\s*(\w*)\s*,/ || |
305 | /^DECLARE_PEM_write_cb\s*\(\s*(\w*)\s*,/ ) { | ||
306 | if($W32) { | ||
307 | $funcs{"PEM_write_${1}"} = 1; | ||
308 | } | ||
309 | $funcs{"PEM_write_bio_${1}"} = 1; | ||
310 | } elsif (/^DECLARE_PEM_read\s*\(\s*(\w*)\s*,/ || | ||
311 | /^DECLARE_PEM_read_cb\s*\(\s*(\w*)\s*,/ ) { | ||
312 | if($W32) { | ||
313 | $funcs{"PEM_read_${1}"} = 1; | ||
314 | } | ||
315 | $funcs{"PEM_read_bio_${1}"} = 1; | ||
316 | } elsif ( | ||
317 | ($tag{'TRUE'} != -1) && | ||
254 | ($tag{'FreeBSD'} != 1) && | 318 | ($tag{'FreeBSD'} != 1) && |
255 | ($tag{'CONST_STRICT'} != 1) && | 319 | ($tag{'CONST_STRICT'} != 1) && |
256 | (($W32 && ($tag{'WIN16'} != 1)) || | 320 | (($W32 && ($tag{'WIN16'} != 1)) || |
@@ -260,7 +324,23 @@ sub do_defs | |||
260 | ((!$W32 && $tag{'_WINDLL'} != -1) || | 324 | ((!$W32 && $tag{'_WINDLL'} != -1) || |
261 | ($W32 && $tag{'_WINDLL'} != 1)) && | 325 | ($W32 && $tag{'_WINDLL'} != 1)) && |
262 | ((($tag{'NO_FP_API'} != 1) && $W32) || | 326 | ((($tag{'NO_FP_API'} != 1) && $W32) || |
263 | (($tag{'NO_FP_API'} != -1) && !$W32))) | 327 | (($tag{'NO_FP_API'} != -1) && !$W32)) && |
328 | ($tag{'NO_RC2'} == 0 || !$no_rc2) && | ||
329 | ($tag{'NO_RC4'} == 0 || !$no_rc4) && | ||
330 | ($tag{'NO_RC5'} == 0 || !$no_rc5) && | ||
331 | ($tag{'NO_IDEA'} == 0 || !$no_idea) && | ||
332 | ($tag{'NO_DES'} == 0 || !$no_des) && | ||
333 | ($tag{'NO_BF'} == 0 || !$no_bf) && | ||
334 | ($tag{'NO_CAST'} == 0 || !$no_cast) && | ||
335 | ($tag{'NO_MD2'} == 0 || !$no_md2) && | ||
336 | ($tag{'NO_MD5'} == 0 || !$no_md5) && | ||
337 | ($tag{'NO_SHA'} == 0 || !$no_sha) && | ||
338 | ($tag{'NO_RIPEMD'} == 0 || !$no_ripemd) && | ||
339 | ($tag{'NO_MDC2'} == 0 || !$no_mdc2) && | ||
340 | ($tag{'NO_RSA'} == 0 || !$no_rsa) && | ||
341 | ($tag{'NO_DSA'} == 0 || !$no_dsa) && | ||
342 | ($tag{'NO_DH'} == 0 || !$no_dh) && | ||
343 | ($tag{'NO_HMAC'} == 0 || !$no_hmac)) | ||
264 | { | 344 | { |
265 | if (/{|\/\*/) { # } | 345 | if (/{|\/\*/) { # } |
266 | $line = $_; | 346 | $line = $_; |
@@ -309,8 +389,8 @@ sub do_defs | |||
309 | # Prune the returned functions | 389 | # Prune the returned functions |
310 | 390 | ||
311 | delete $funcs{"SSL_add_dir_cert_subjects_to_stack"}; | 391 | delete $funcs{"SSL_add_dir_cert_subjects_to_stack"}; |
312 | delete $funcs{"des_crypt"}; | ||
313 | delete $funcs{"RSA_PKCS1_RSAref"} unless $rsaref; | 392 | delete $funcs{"RSA_PKCS1_RSAref"} unless $rsaref; |
393 | delete $funcs{"bn_dump1"}; | ||
314 | 394 | ||
315 | if($W32) { | 395 | if($W32) { |
316 | delete $funcs{"BIO_s_file_internal"}; | 396 | delete $funcs{"BIO_s_file_internal"}; |
@@ -334,10 +414,31 @@ sub do_defs | |||
334 | return(@ret); | 414 | return(@ret); |
335 | } | 415 | } |
336 | 416 | ||
417 | sub print_test_file | ||
418 | { | ||
419 | (*OUT,my $name,*nums,my @functions)=@_; | ||
420 | my $n = 1; my @e; my @r; | ||
421 | my $func; | ||
422 | |||
423 | (@e)=grep(/^SSLeay/,@functions); | ||
424 | (@r)=grep(!/^SSLeay/,@functions); | ||
425 | @functions=((sort @e),(sort @r)); | ||
426 | |||
427 | foreach $func (@functions) { | ||
428 | if (!defined($nums{$func})) { | ||
429 | printf STDERR "$func does not have a number assigned\n" | ||
430 | if(!$do_update); | ||
431 | } else { | ||
432 | $n=$nums{$func}; | ||
433 | print OUT "\t$func();\n"; | ||
434 | } | ||
435 | } | ||
436 | } | ||
437 | |||
337 | sub print_def_file | 438 | sub print_def_file |
338 | { | 439 | { |
339 | (*OUT,my $name,*nums,@functions)=@_; | 440 | (*OUT,my $name,*nums,my @functions)=@_; |
340 | my $n =1; | 441 | my $n = 1; my @e; my @r; |
341 | 442 | ||
342 | if ($W32) | 443 | if ($W32) |
343 | { $name.="32"; } | 444 | { $name.="32"; } |
diff --git a/src/lib/libcrypto/util/mkerr.pl b/src/lib/libcrypto/util/mkerr.pl index 4b3bccb13e..ebc059ef22 100644 --- a/src/lib/libcrypto/util/mkerr.pl +++ b/src/lib/libcrypto/util/mkerr.pl | |||
@@ -450,7 +450,7 @@ void ERR_load_${lib}_strings(void) | |||
450 | #ifdef ${lib}_LIB_NAME | 450 | #ifdef ${lib}_LIB_NAME |
451 | ${lib}_lib_name->error = ERR_PACK(${lib}_lib_error_code,0,0); | 451 | ${lib}_lib_name->error = ERR_PACK(${lib}_lib_error_code,0,0); |
452 | ERR_load_strings(0,${lib}_lib_name); | 452 | ERR_load_strings(0,${lib}_lib_name); |
453 | #endif; | 453 | #endif |
454 | } | 454 | } |
455 | } | 455 | } |
456 | 456 | ||
diff --git a/src/lib/libcrypto/util/pl/BC-32.pl b/src/lib/libcrypto/util/pl/BC-32.pl index 09c45a21a6..df6e2c742e 100644 --- a/src/lib/libcrypto/util/pl/BC-32.pl +++ b/src/lib/libcrypto/util/pl/BC-32.pl | |||
@@ -19,7 +19,7 @@ $out_def="out32"; | |||
19 | $tmp_def="tmp32"; | 19 | $tmp_def="tmp32"; |
20 | $inc_def="inc32"; | 20 | $inc_def="inc32"; |
21 | #enable max error messages, disable most common warnings | 21 | #enable max error messages, disable most common warnings |
22 | $cflags="-DWIN32_LEAN_AND_MEAN -j255 -w-aus -w-par -w-inl -c -tWC -tWM -DWINDOWS -DWIN32 -DL_ENDIAN "; | 22 | $cflags="-DWIN32_LEAN_AND_MEAN -q -w-aus -w-par -w-inl -c -tWC -tWM -DWINDOWS -DWIN32 -DL_ENDIAN "; |
23 | if ($debug) | 23 | if ($debug) |
24 | { | 24 | { |
25 | $cflags.="-Od -y -v -vi- -D_DEBUG"; | 25 | $cflags.="-Od -y -v -vi- -D_DEBUG"; |
diff --git a/src/lib/libcrypto/util/pl/Mingw32.pl b/src/lib/libcrypto/util/pl/Mingw32.pl index 84c2a22db3..585cacd820 100644 --- a/src/lib/libcrypto/util/pl/Mingw32.pl +++ b/src/lib/libcrypto/util/pl/Mingw32.pl | |||
@@ -17,7 +17,7 @@ $mkdir='gmkdir'; | |||
17 | 17 | ||
18 | $cc='gcc'; | 18 | $cc='gcc'; |
19 | if ($debug) | 19 | if ($debug) |
20 | { $cflags="-g2 -ggdb"; } | 20 | { $cflags="-DL_ENDIAN -g2 -ggdb"; } |
21 | else | 21 | else |
22 | { $cflags="-DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall"; } | 22 | { $cflags="-DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall"; } |
23 | 23 | ||
diff --git a/src/lib/libcrypto/util/pl/VC-32.pl b/src/lib/libcrypto/util/pl/VC-32.pl index 6db1c9fe23..046f0e253c 100644 --- a/src/lib/libcrypto/util/pl/VC-32.pl +++ b/src/lib/libcrypto/util/pl/VC-32.pl | |||
@@ -22,7 +22,7 @@ $inc_def="inc32"; | |||
22 | 22 | ||
23 | if ($debug) | 23 | if ($debug) |
24 | { | 24 | { |
25 | $cflags=" /MDd /W3 /WX /Zi /Yd /Od /nologo -DWINDOWS -DWIN32 -D_DEBUG -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DDEBUG"; | 25 | $cflags=" /MDd /W3 /WX /Zi /Yd /Od /nologo -DWIN32 -D_DEBUG -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DDEBUG"; |
26 | $lflags.=" /debug"; | 26 | $lflags.=" /debug"; |
27 | $mlflags.=' /debug'; | 27 | $mlflags.=' /debug'; |
28 | } | 28 | } |
diff --git a/src/lib/libcrypto/util/pod2man.pl b/src/lib/libcrypto/util/pod2man.pl new file mode 100644 index 0000000000..f5ec0767ed --- /dev/null +++ b/src/lib/libcrypto/util/pod2man.pl | |||
@@ -0,0 +1,1181 @@ | |||
1 | : #!/usr/bin/perl-5.005 | ||
2 | eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' | ||
3 | if $running_under_some_shell; | ||
4 | |||
5 | $DEF_PM_SECTION = '3pm' || '3'; | ||
6 | |||
7 | =head1 NAME | ||
8 | |||
9 | pod2man - translate embedded Perl pod directives into man pages | ||
10 | |||
11 | =head1 SYNOPSIS | ||
12 | |||
13 | B<pod2man> | ||
14 | [ B<--section=>I<manext> ] | ||
15 | [ B<--release=>I<relpatch> ] | ||
16 | [ B<--center=>I<string> ] | ||
17 | [ B<--date=>I<string> ] | ||
18 | [ B<--fixed=>I<font> ] | ||
19 | [ B<--official> ] | ||
20 | [ B<--lax> ] | ||
21 | I<inputfile> | ||
22 | |||
23 | =head1 DESCRIPTION | ||
24 | |||
25 | B<pod2man> converts its input file containing embedded pod directives (see | ||
26 | L<perlpod>) into nroff source suitable for viewing with nroff(1) or | ||
27 | troff(1) using the man(7) macro set. | ||
28 | |||
29 | Besides the obvious pod conversions, B<pod2man> also takes care of | ||
30 | func(), func(n), and simple variable references like $foo or @bar so | ||
31 | you don't have to use code escapes for them; complex expressions like | ||
32 | C<$fred{'stuff'}> will still need to be escaped, though. Other nagging | ||
33 | little roffish things that it catches include translating the minus in | ||
34 | something like foo-bar, making a long dash--like this--into a real em | ||
35 | dash, fixing up "paired quotes", putting a little space after the | ||
36 | parens in something like func(), making C++ and PI look right, making | ||
37 | double underbars have a little tiny space between them, making ALLCAPS | ||
38 | a teeny bit smaller in troff(1), and escaping backslashes so you don't | ||
39 | have to. | ||
40 | |||
41 | =head1 OPTIONS | ||
42 | |||
43 | =over 8 | ||
44 | |||
45 | =item center | ||
46 | |||
47 | Set the centered header to a specific string. The default is | ||
48 | "User Contributed Perl Documentation", unless the C<--official> flag is | ||
49 | given, in which case the default is "Perl Programmers Reference Guide". | ||
50 | |||
51 | =item date | ||
52 | |||
53 | Set the left-hand footer string to this value. By default, | ||
54 | the modification date of the input file will be used. | ||
55 | |||
56 | =item fixed | ||
57 | |||
58 | The fixed font to use for code refs. Defaults to CW. | ||
59 | |||
60 | =item official | ||
61 | |||
62 | Set the default header to indicate that this page is of | ||
63 | the standard release in case C<--center> is not given. | ||
64 | |||
65 | =item release | ||
66 | |||
67 | Set the centered footer. By default, this is the current | ||
68 | perl release. | ||
69 | |||
70 | =item section | ||
71 | |||
72 | Set the section for the C<.TH> macro. The standard conventions on | ||
73 | sections are to use 1 for user commands, 2 for system calls, 3 for | ||
74 | functions, 4 for devices, 5 for file formats, 6 for games, 7 for | ||
75 | miscellaneous information, and 8 for administrator commands. This works | ||
76 | best if you put your Perl man pages in a separate tree, like | ||
77 | F</usr/local/perl/man/>. By default, section 1 will be used | ||
78 | unless the file ends in F<.pm> in which case section 3 will be selected. | ||
79 | |||
80 | =item lax | ||
81 | |||
82 | Don't complain when required sections aren't present. | ||
83 | |||
84 | =back | ||
85 | |||
86 | =head1 Anatomy of a Proper Man Page | ||
87 | |||
88 | For those not sure of the proper layout of a man page, here's | ||
89 | an example of the skeleton of a proper man page. Head of the | ||
90 | major headers should be setout as a C<=head1> directive, and | ||
91 | are historically written in the rather startling ALL UPPER CASE | ||
92 | format, although this is not mandatory. | ||
93 | Minor headers may be included using C<=head2>, and are | ||
94 | typically in mixed case. | ||
95 | |||
96 | =over 10 | ||
97 | |||
98 | =item NAME | ||
99 | |||
100 | Mandatory section; should be a comma-separated list of programs or | ||
101 | functions documented by this podpage, such as: | ||
102 | |||
103 | foo, bar - programs to do something | ||
104 | |||
105 | =item SYNOPSIS | ||
106 | |||
107 | A short usage summary for programs and functions, which | ||
108 | may someday be deemed mandatory. | ||
109 | |||
110 | =item DESCRIPTION | ||
111 | |||
112 | Long drawn out discussion of the program. It's a good idea to break this | ||
113 | up into subsections using the C<=head2> directives, like | ||
114 | |||
115 | =head2 A Sample Subection | ||
116 | |||
117 | =head2 Yet Another Sample Subection | ||
118 | |||
119 | =item OPTIONS | ||
120 | |||
121 | Some people make this separate from the description. | ||
122 | |||
123 | =item RETURN VALUE | ||
124 | |||
125 | What the program or function returns if successful. | ||
126 | |||
127 | =item ERRORS | ||
128 | |||
129 | Exceptions, return codes, exit stati, and errno settings. | ||
130 | |||
131 | =item EXAMPLES | ||
132 | |||
133 | Give some example uses of the program. | ||
134 | |||
135 | =item ENVIRONMENT | ||
136 | |||
137 | Envariables this program might care about. | ||
138 | |||
139 | =item FILES | ||
140 | |||
141 | All files used by the program. You should probably use the FE<lt>E<gt> | ||
142 | for these. | ||
143 | |||
144 | =item SEE ALSO | ||
145 | |||
146 | Other man pages to check out, like man(1), man(7), makewhatis(8), or catman(8). | ||
147 | |||
148 | =item NOTES | ||
149 | |||
150 | Miscellaneous commentary. | ||
151 | |||
152 | =item CAVEATS | ||
153 | |||
154 | Things to take special care with; sometimes called WARNINGS. | ||
155 | |||
156 | =item DIAGNOSTICS | ||
157 | |||
158 | All possible messages the program can print out--and | ||
159 | what they mean. | ||
160 | |||
161 | =item BUGS | ||
162 | |||
163 | Things that are broken or just don't work quite right. | ||
164 | |||
165 | =item RESTRICTIONS | ||
166 | |||
167 | Bugs you don't plan to fix :-) | ||
168 | |||
169 | =item AUTHOR | ||
170 | |||
171 | Who wrote it (or AUTHORS if multiple). | ||
172 | |||
173 | =item HISTORY | ||
174 | |||
175 | Programs derived from other sources sometimes have this, or | ||
176 | you might keep a modification log here. | ||
177 | |||
178 | =back | ||
179 | |||
180 | =head1 EXAMPLES | ||
181 | |||
182 | pod2man program > program.1 | ||
183 | pod2man some_module.pm > /usr/perl/man/man3/some_module.3 | ||
184 | pod2man --section=7 note.pod > note.7 | ||
185 | |||
186 | =head1 DIAGNOSTICS | ||
187 | |||
188 | The following diagnostics are generated by B<pod2man>. Items | ||
189 | marked "(W)" are non-fatal, whereas the "(F)" errors will cause | ||
190 | B<pod2man> to immediately exit with a non-zero status. | ||
191 | |||
192 | =over 4 | ||
193 | |||
194 | =item bad option in paragraph %d of %s: ``%s'' should be [%s]<%s> | ||
195 | |||
196 | (W) If you start include an option, you should set it off | ||
197 | as bold, italic, or code. | ||
198 | |||
199 | =item can't open %s: %s | ||
200 | |||
201 | (F) The input file wasn't available for the given reason. | ||
202 | |||
203 | =item Improper man page - no dash in NAME header in paragraph %d of %s | ||
204 | |||
205 | (W) The NAME header did not have an isolated dash in it. This is | ||
206 | considered important. | ||
207 | |||
208 | =item Invalid man page - no NAME line in %s | ||
209 | |||
210 | (F) You did not include a NAME header, which is essential. | ||
211 | |||
212 | =item roff font should be 1 or 2 chars, not `%s' (F) | ||
213 | |||
214 | (F) The font specified with the C<--fixed> option was not | ||
215 | a one- or two-digit roff font. | ||
216 | |||
217 | =item %s is missing required section: %s | ||
218 | |||
219 | (W) Required sections include NAME, DESCRIPTION, and if you're | ||
220 | using a section starting with a 3, also a SYNOPSIS. Actually, | ||
221 | not having a NAME is a fatal. | ||
222 | |||
223 | =item Unknown escape: %s in %s | ||
224 | |||
225 | (W) An unknown HTML entity (probably for an 8-bit character) was given via | ||
226 | a C<EE<lt>E<gt>> directive. Besides amp, lt, gt, and quot, recognized | ||
227 | entities are Aacute, aacute, Acirc, acirc, AElig, aelig, Agrave, agrave, | ||
228 | Aring, aring, Atilde, atilde, Auml, auml, Ccedil, ccedil, Eacute, eacute, | ||
229 | Ecirc, ecirc, Egrave, egrave, ETH, eth, Euml, euml, Iacute, iacute, Icirc, | ||
230 | icirc, Igrave, igrave, Iuml, iuml, Ntilde, ntilde, Oacute, oacute, Ocirc, | ||
231 | ocirc, Ograve, ograve, Oslash, oslash, Otilde, otilde, Ouml, ouml, szlig, | ||
232 | THORN, thorn, Uacute, uacute, Ucirc, ucirc, Ugrave, ugrave, Uuml, uuml, | ||
233 | Yacute, yacute, and yuml. | ||
234 | |||
235 | =item Unmatched =back | ||
236 | |||
237 | (W) You have a C<=back> without a corresponding C<=over>. | ||
238 | |||
239 | =item Unrecognized pod directive: %s | ||
240 | |||
241 | (W) You specified a pod directive that isn't in the known list of | ||
242 | C<=head1>, C<=head2>, C<=item>, C<=over>, C<=back>, or C<=cut>. | ||
243 | |||
244 | |||
245 | =back | ||
246 | |||
247 | =head1 NOTES | ||
248 | |||
249 | If you would like to print out a lot of man page continuously, you | ||
250 | probably want to set the C and D registers to set contiguous page | ||
251 | numbering and even/odd paging, at least on some versions of man(7). | ||
252 | Settting the F register will get you some additional experimental | ||
253 | indexing: | ||
254 | |||
255 | troff -man -rC1 -rD1 -rF1 perl.1 perldata.1 perlsyn.1 ... | ||
256 | |||
257 | The indexing merely outputs messages via C<.tm> for each | ||
258 | major page, section, subsection, item, and any C<XE<lt>E<gt>> | ||
259 | directives. | ||
260 | |||
261 | |||
262 | =head1 RESTRICTIONS | ||
263 | |||
264 | None at this time. | ||
265 | |||
266 | =head1 BUGS | ||
267 | |||
268 | The =over and =back directives don't really work right. They | ||
269 | take absolute positions instead of offsets, don't nest well, and | ||
270 | making people count is suboptimal in any event. | ||
271 | |||
272 | =head1 AUTHORS | ||
273 | |||
274 | Original prototype by Larry Wall, but so massively hacked over by | ||
275 | Tom Christiansen such that Larry probably doesn't recognize it anymore. | ||
276 | |||
277 | =cut | ||
278 | |||
279 | $/ = ""; | ||
280 | $cutting = 1; | ||
281 | @Indices = (); | ||
282 | |||
283 | # We try first to get the version number from a local binary, in case we're | ||
284 | # running an installed version of Perl to produce documentation from an | ||
285 | # uninstalled newer version's pod files. | ||
286 | if ($^O ne 'plan9' and $^O ne 'dos' and $^O ne 'os2' and $^O ne 'MSWin32') { | ||
287 | my $perl = (-x './perl' && -f './perl' ) ? | ||
288 | './perl' : | ||
289 | ((-x '../perl' && -f '../perl') ? | ||
290 | '../perl' : | ||
291 | ''); | ||
292 | ($version,$patch) = `$perl -e 'print $]'` =~ /^(\d\.\d{3})(\d{2})?/ if $perl; | ||
293 | } | ||
294 | # No luck; we'll just go with the running Perl's version | ||
295 | ($version,$patch) = $] =~ /^(.{5})(\d{2})?/ unless $version; | ||
296 | $DEF_RELEASE = "perl $version"; | ||
297 | $DEF_RELEASE .= ", patch $patch" if $patch; | ||
298 | |||
299 | |||
300 | sub makedate { | ||
301 | my $secs = shift; | ||
302 | my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($secs); | ||
303 | my $mname = (qw{Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec})[$mon]; | ||
304 | $year += 1900; | ||
305 | return "$mday/$mname/$year"; | ||
306 | } | ||
307 | |||
308 | use Getopt::Long; | ||
309 | |||
310 | $DEF_SECTION = 1; | ||
311 | $DEF_CENTER = "User Contributed Perl Documentation"; | ||
312 | $STD_CENTER = "Perl Programmers Reference Guide"; | ||
313 | $DEF_FIXED = 'CW'; | ||
314 | $DEF_LAX = 0; | ||
315 | |||
316 | sub usage { | ||
317 | warn "$0: @_\n" if @_; | ||
318 | die <<EOF; | ||
319 | usage: $0 [options] podpage | ||
320 | Options are: | ||
321 | --section=manext (default "$DEF_SECTION") | ||
322 | --release=relpatch (default "$DEF_RELEASE") | ||
323 | --center=string (default "$DEF_CENTER") | ||
324 | --date=string (default "$DEF_DATE") | ||
325 | --fixed=font (default "$DEF_FIXED") | ||
326 | --official (default NOT) | ||
327 | --lax (default NOT) | ||
328 | EOF | ||
329 | } | ||
330 | |||
331 | $uok = GetOptions( qw( | ||
332 | section=s | ||
333 | release=s | ||
334 | center=s | ||
335 | date=s | ||
336 | fixed=s | ||
337 | official | ||
338 | lax | ||
339 | help)); | ||
340 | |||
341 | $DEF_DATE = makedate((stat($ARGV[0]))[9] || time()); | ||
342 | |||
343 | usage("Usage error!") unless $uok; | ||
344 | usage() if $opt_help; | ||
345 | usage("Need one and only one podpage argument") unless @ARGV == 1; | ||
346 | |||
347 | $section = $opt_section || ($ARGV[0] =~ /\.pm$/ | ||
348 | ? $DEF_PM_SECTION : $DEF_SECTION); | ||
349 | $RP = $opt_release || $DEF_RELEASE; | ||
350 | $center = $opt_center || ($opt_official ? $STD_CENTER : $DEF_CENTER); | ||
351 | $lax = $opt_lax || $DEF_LAX; | ||
352 | |||
353 | $CFont = $opt_fixed || $DEF_FIXED; | ||
354 | |||
355 | if (length($CFont) == 2) { | ||
356 | $CFont_embed = "\\f($CFont"; | ||
357 | } | ||
358 | elsif (length($CFont) == 1) { | ||
359 | $CFont_embed = "\\f$CFont"; | ||
360 | } | ||
361 | else { | ||
362 | die "roff font should be 1 or 2 chars, not `$CFont_embed'"; | ||
363 | } | ||
364 | |||
365 | $date = $opt_date || $DEF_DATE; | ||
366 | |||
367 | for (qw{NAME DESCRIPTION}) { | ||
368 | # for (qw{NAME DESCRIPTION AUTHOR}) { | ||
369 | $wanna_see{$_}++; | ||
370 | } | ||
371 | $wanna_see{SYNOPSIS}++ if $section =~ /^3/; | ||
372 | |||
373 | |||
374 | $name = @ARGV ? $ARGV[0] : "<STDIN>"; | ||
375 | $Filename = $name; | ||
376 | if ($section =~ /^1/) { | ||
377 | require File::Basename; | ||
378 | $name = uc File::Basename::basename($name); | ||
379 | } | ||
380 | $name =~ s/\.(pod|p[lm])$//i; | ||
381 | |||
382 | # Lose everything up to the first of | ||
383 | # */lib/*perl* standard or site_perl module | ||
384 | # */*perl*/lib from -D prefix=/opt/perl | ||
385 | # */*perl*/ random module hierarchy | ||
386 | # which works. | ||
387 | $name =~ s-//+-/-g; | ||
388 | if ($name =~ s-^.*?/lib/[^/]*perl[^/]*/--i | ||
389 | or $name =~ s-^.*?/[^/]*perl[^/]*/lib/--i | ||
390 | or $name =~ s-^.*?/[^/]*perl[^/]*/--i) { | ||
391 | # Lose ^site(_perl)?/. | ||
392 | $name =~ s-^site(_perl)?/--; | ||
393 | # Lose ^arch/. (XXX should we use Config? Just for archname?) | ||
394 | $name =~ s~^(.*-$^O|$^O-.*)/~~o; | ||
395 | # Lose ^version/. | ||
396 | $name =~ s-^\d+\.\d+/--; | ||
397 | } | ||
398 | |||
399 | # Translate Getopt/Long to Getopt::Long, etc. | ||
400 | $name =~ s(/)(::)g; | ||
401 | |||
402 | if ($name ne 'something') { | ||
403 | FCHECK: { | ||
404 | open(F, "< $ARGV[0]") || die "can't open $ARGV[0]: $!"; | ||
405 | while (<F>) { | ||
406 | next unless /^=\b/; | ||
407 | if (/^=head1\s+NAME\s*$/) { # an /m would forgive mistakes | ||
408 | $_ = <F>; | ||
409 | unless (/\s*-+\s+/) { | ||
410 | $oops++; | ||
411 | warn "$0: Improper man page - no dash in NAME header in paragraph $. of $ARGV[0]\n" | ||
412 | } else { | ||
413 | my @n = split /\s+-+\s+/; | ||
414 | if (@n != 2) { | ||
415 | $oops++; | ||
416 | warn "$0: Improper man page - malformed NAME header in paragraph $. of $ARGV[0]\n" | ||
417 | } | ||
418 | else { | ||
419 | %namedesc = @n; | ||
420 | } | ||
421 | } | ||
422 | last FCHECK; | ||
423 | } | ||
424 | next if /^=cut\b/; # DB_File and Net::Ping have =cut before NAME | ||
425 | next if /^=pod\b/; # It is OK to have =pod before NAME | ||
426 | die "$0: Invalid man page - 1st pod line is not NAME in $ARGV[0]\n" unless $lax; | ||
427 | } | ||
428 | die "$0: Invalid man page - no documentation in $ARGV[0]\n" unless $lax; | ||
429 | } | ||
430 | close F; | ||
431 | } | ||
432 | |||
433 | print <<"END"; | ||
434 | .rn '' }` | ||
435 | ''' \$RCSfile\$\$Revision\$\$Date\$ | ||
436 | ''' | ||
437 | ''' \$Log\$ | ||
438 | ''' | ||
439 | .de Sh | ||
440 | .br | ||
441 | .if t .Sp | ||
442 | .ne 5 | ||
443 | .PP | ||
444 | \\fB\\\\\$1\\fR | ||
445 | .PP | ||
446 | .. | ||
447 | .de Sp | ||
448 | .if t .sp .5v | ||
449 | .if n .sp | ||
450 | .. | ||
451 | .de Ip | ||
452 | .br | ||
453 | .ie \\\\n(.\$>=3 .ne \\\\\$3 | ||
454 | .el .ne 3 | ||
455 | .IP "\\\\\$1" \\\\\$2 | ||
456 | .. | ||
457 | .de Vb | ||
458 | .ft $CFont | ||
459 | .nf | ||
460 | .ne \\\\\$1 | ||
461 | .. | ||
462 | .de Ve | ||
463 | .ft R | ||
464 | |||
465 | .fi | ||
466 | .. | ||
467 | ''' | ||
468 | ''' | ||
469 | ''' Set up \\*(-- to give an unbreakable dash; | ||
470 | ''' string Tr holds user defined translation string. | ||
471 | ''' Bell System Logo is used as a dummy character. | ||
472 | ''' | ||
473 | .tr \\(*W-|\\(bv\\*(Tr | ||
474 | .ie n \\{\\ | ||
475 | .ds -- \\(*W- | ||
476 | .ds PI pi | ||
477 | .if (\\n(.H=4u)&(1m=24u) .ds -- \\(*W\\h'-12u'\\(*W\\h'-12u'-\\" diablo 10 pitch | ||
478 | .if (\\n(.H=4u)&(1m=20u) .ds -- \\(*W\\h'-12u'\\(*W\\h'-8u'-\\" diablo 12 pitch | ||
479 | .ds L" "" | ||
480 | .ds R" "" | ||
481 | ''' \\*(M", \\*(S", \\*(N" and \\*(T" are the equivalent of | ||
482 | ''' \\*(L" and \\*(R", except that they are used on ".xx" lines, | ||
483 | ''' such as .IP and .SH, which do another additional levels of | ||
484 | ''' double-quote interpretation | ||
485 | .ds M" """ | ||
486 | .ds S" """ | ||
487 | .ds N" """"" | ||
488 | .ds T" """"" | ||
489 | .ds L' ' | ||
490 | .ds R' ' | ||
491 | .ds M' ' | ||
492 | .ds S' ' | ||
493 | .ds N' ' | ||
494 | .ds T' ' | ||
495 | 'br\\} | ||
496 | .el\\{\\ | ||
497 | .ds -- \\(em\\| | ||
498 | .tr \\*(Tr | ||
499 | .ds L" `` | ||
500 | .ds R" '' | ||
501 | .ds M" `` | ||
502 | .ds S" '' | ||
503 | .ds N" `` | ||
504 | .ds T" '' | ||
505 | .ds L' ` | ||
506 | .ds R' ' | ||
507 | .ds M' ` | ||
508 | .ds S' ' | ||
509 | .ds N' ` | ||
510 | .ds T' ' | ||
511 | .ds PI \\(*p | ||
512 | 'br\\} | ||
513 | END | ||
514 | |||
515 | print <<'END'; | ||
516 | .\" If the F register is turned on, we'll generate | ||
517 | .\" index entries out stderr for the following things: | ||
518 | .\" TH Title | ||
519 | .\" SH Header | ||
520 | .\" Sh Subsection | ||
521 | .\" Ip Item | ||
522 | .\" X<> Xref (embedded | ||
523 | .\" Of course, you have to process the output yourself | ||
524 | .\" in some meaninful fashion. | ||
525 | .if \nF \{ | ||
526 | .de IX | ||
527 | .tm Index:\\$1\t\\n%\t"\\$2" | ||
528 | .. | ||
529 | .nr % 0 | ||
530 | .rr F | ||
531 | .\} | ||
532 | END | ||
533 | |||
534 | print <<"END"; | ||
535 | .TH $name $section "$RP" "$date" "$center" | ||
536 | .UC | ||
537 | END | ||
538 | |||
539 | push(@Indices, qq{.IX Title "$name $section"}); | ||
540 | |||
541 | while (($name, $desc) = each %namedesc) { | ||
542 | for ($name, $desc) { s/^\s+//; s/\s+$//; } | ||
543 | push(@Indices, qq(.IX Name "$name - $desc"\n)); | ||
544 | } | ||
545 | |||
546 | print <<'END'; | ||
547 | .if n .hy 0 | ||
548 | .if n .na | ||
549 | .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' | ||
550 | .de CQ \" put $1 in typewriter font | ||
551 | END | ||
552 | print ".ft $CFont\n"; | ||
553 | print <<'END'; | ||
554 | 'if n "\c | ||
555 | 'if t \\&\\$1\c | ||
556 | 'if n \\&\\$1\c | ||
557 | 'if n \&" | ||
558 | \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 | ||
559 | '.ft R | ||
560 | .. | ||
561 | .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 | ||
562 | . \" AM - accent mark definitions | ||
563 | .bd B 3 | ||
564 | . \" fudge factors for nroff and troff | ||
565 | .if n \{\ | ||
566 | . ds #H 0 | ||
567 | . ds #V .8m | ||
568 | . ds #F .3m | ||
569 | . ds #[ \f1 | ||
570 | . ds #] \fP | ||
571 | .\} | ||
572 | .if t \{\ | ||
573 | . ds #H ((1u-(\\\\n(.fu%2u))*.13m) | ||
574 | . ds #V .6m | ||
575 | . ds #F 0 | ||
576 | . ds #[ \& | ||
577 | . ds #] \& | ||
578 | .\} | ||
579 | . \" simple accents for nroff and troff | ||
580 | .if n \{\ | ||
581 | . ds ' \& | ||
582 | . ds ` \& | ||
583 | . ds ^ \& | ||
584 | . ds , \& | ||
585 | . ds ~ ~ | ||
586 | . ds ? ? | ||
587 | . ds ! ! | ||
588 | . ds / | ||
589 | . ds q | ||
590 | .\} | ||
591 | .if t \{\ | ||
592 | . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" | ||
593 | . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' | ||
594 | . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' | ||
595 | . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' | ||
596 | . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' | ||
597 | . ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' | ||
598 | . ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' | ||
599 | . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' | ||
600 | . ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' | ||
601 | .\} | ||
602 | . \" troff and (daisy-wheel) nroff accents | ||
603 | .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' | ||
604 | .ds 8 \h'\*(#H'\(*b\h'-\*(#H' | ||
605 | .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] | ||
606 | .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' | ||
607 | .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' | ||
608 | .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] | ||
609 | .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] | ||
610 | .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' | ||
611 | .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' | ||
612 | .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] | ||
613 | .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] | ||
614 | .ds ae a\h'-(\w'a'u*4/10)'e | ||
615 | .ds Ae A\h'-(\w'A'u*4/10)'E | ||
616 | .ds oe o\h'-(\w'o'u*4/10)'e | ||
617 | .ds Oe O\h'-(\w'O'u*4/10)'E | ||
618 | . \" corrections for vroff | ||
619 | .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' | ||
620 | .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' | ||
621 | . \" for low resolution devices (crt and lpr) | ||
622 | .if \n(.H>23 .if \n(.V>19 \ | ||
623 | \{\ | ||
624 | . ds : e | ||
625 | . ds 8 ss | ||
626 | . ds v \h'-1'\o'\(aa\(ga' | ||
627 | . ds _ \h'-1'^ | ||
628 | . ds . \h'-1'. | ||
629 | . ds 3 3 | ||
630 | . ds o a | ||
631 | . ds d- d\h'-1'\(ga | ||
632 | . ds D- D\h'-1'\(hy | ||
633 | . ds th \o'bp' | ||
634 | . ds Th \o'LP' | ||
635 | . ds ae ae | ||
636 | . ds Ae AE | ||
637 | . ds oe oe | ||
638 | . ds Oe OE | ||
639 | .\} | ||
640 | .rm #[ #] #H #V #F C | ||
641 | END | ||
642 | |||
643 | $indent = 0; | ||
644 | |||
645 | $begun = ""; | ||
646 | |||
647 | # Unrolling [^A-Z>]|[A-Z](?!<) gives: // MRE pp 165. | ||
648 | my $nonest = '(?:[^A-Z>]*(?:[A-Z](?!<)[^A-Z>]*)*)'; | ||
649 | |||
650 | while (<>) { | ||
651 | if ($cutting) { | ||
652 | next unless /^=/; | ||
653 | $cutting = 0; | ||
654 | } | ||
655 | if ($begun) { | ||
656 | if (/^=end\s+$begun/) { | ||
657 | $begun = ""; | ||
658 | } | ||
659 | elsif ($begun =~ /^(roff|man)$/) { | ||
660 | print STDOUT $_; | ||
661 | } | ||
662 | next; | ||
663 | } | ||
664 | chomp; | ||
665 | |||
666 | # Translate verbatim paragraph | ||
667 | |||
668 | if (/^\s/) { | ||
669 | @lines = split(/\n/); | ||
670 | for (@lines) { | ||
671 | 1 while s | ||
672 | {^( [^\t]* ) \t ( \t* ) } | ||
673 | { $1 . ' ' x (8 - (length($1)%8) + 8 * (length($2))) }ex; | ||
674 | s/\\/\\e/g; | ||
675 | s/\A/\\&/s; | ||
676 | } | ||
677 | $lines = @lines; | ||
678 | makespace() unless $verbatim++; | ||
679 | print ".Vb $lines\n"; | ||
680 | print join("\n", @lines), "\n"; | ||
681 | print ".Ve\n"; | ||
682 | $needspace = 0; | ||
683 | next; | ||
684 | } | ||
685 | |||
686 | $verbatim = 0; | ||
687 | |||
688 | if (/^=for\s+(\S+)\s*/s) { | ||
689 | if ($1 eq "man" or $1 eq "roff") { | ||
690 | print STDOUT $',"\n\n"; | ||
691 | } else { | ||
692 | # ignore unknown for | ||
693 | } | ||
694 | next; | ||
695 | } | ||
696 | elsif (/^=begin\s+(\S+)\s*/s) { | ||
697 | $begun = $1; | ||
698 | if ($1 eq "man" or $1 eq "roff") { | ||
699 | print STDOUT $'."\n\n"; | ||
700 | } | ||
701 | next; | ||
702 | } | ||
703 | |||
704 | # check for things that'll hosed our noremap scheme; affects $_ | ||
705 | init_noremap(); | ||
706 | |||
707 | if (!/^=item/) { | ||
708 | |||
709 | # trofficate backslashes; must do it before what happens below | ||
710 | s/\\/noremap('\\e')/ge; | ||
711 | |||
712 | # protect leading periods and quotes against *roff | ||
713 | # mistaking them for directives | ||
714 | s/^(?:[A-Z]<)?[.']/\\&$&/gm; | ||
715 | |||
716 | # first hide the escapes in case we need to | ||
717 | # intuit something and get it wrong due to fmting | ||
718 | |||
719 | 1 while s/([A-Z]<$nonest>)/noremap($1)/ge; | ||
720 | |||
721 | # func() is a reference to a perl function | ||
722 | s{ | ||
723 | \b | ||
724 | ( | ||
725 | [:\w]+ \(\) | ||
726 | ) | ||
727 | } {I<$1>}gx; | ||
728 | |||
729 | # func(n) is a reference to a perl function or a man page | ||
730 | s{ | ||
731 | ([:\w]+) | ||
732 | ( | ||
733 | \( [^\051]+ \) | ||
734 | ) | ||
735 | } {I<$1>\\|$2}gx; | ||
736 | |||
737 | # convert simple variable references | ||
738 | s/(\s+)([\$\@%][\w:]+)(?!\()/${1}C<$2>/g; | ||
739 | |||
740 | if (m{ ( | ||
741 | [\-\w]+ | ||
742 | \( | ||
743 | [^\051]*? | ||
744 | [\@\$,] | ||
745 | [^\051]*? | ||
746 | \) | ||
747 | ) | ||
748 | }x && $` !~ /([LCI]<[^<>]*|-)$/ && !/^=\w/) | ||
749 | { | ||
750 | warn "$0: bad option in paragraph $. of $ARGV: ``$1'' should be [LCI]<$1>\n"; | ||
751 | $oops++; | ||
752 | } | ||
753 | |||
754 | while (/(-[a-zA-Z])\b/g && $` !~ /[\w\-]$/) { | ||
755 | warn "$0: bad option in paragraph $. of $ARGV: ``$1'' should be [CB]<$1>\n"; | ||
756 | $oops++; | ||
757 | } | ||
758 | |||
759 | # put it back so we get the <> processed again; | ||
760 | clear_noremap(0); # 0 means leave the E's | ||
761 | |||
762 | } else { | ||
763 | # trofficate backslashes | ||
764 | s/\\/noremap('\\e')/ge; | ||
765 | |||
766 | } | ||
767 | |||
768 | # need to hide E<> first; they're processed in clear_noremap | ||
769 | s/(E<[^<>]+>)/noremap($1)/ge; | ||
770 | |||
771 | |||
772 | $maxnest = 10; | ||
773 | while ($maxnest-- && /[A-Z]</) { | ||
774 | |||
775 | # can't do C font here | ||
776 | s/([BI])<($nonest)>/font($1) . $2 . font('R')/eg; | ||
777 | |||
778 | # files and filelike refs in italics | ||
779 | s/F<($nonest)>/I<$1>/g; | ||
780 | |||
781 | # no break -- usually we want C<> for this | ||
782 | s/S<($nonest)>/nobreak($1)/eg; | ||
783 | |||
784 | # LREF: a la HREF L<show this text|man/section> | ||
785 | s:L<([^|>]+)\|[^>]+>:$1:g; | ||
786 | |||
787 | # LREF: a manpage(3f) | ||
788 | s:L<([a-zA-Z][^\s\/]+)(\([^\)]+\))?>:the I<$1>$2 manpage:g; | ||
789 | |||
790 | # LREF: an =item on another manpage | ||
791 | s{ | ||
792 | L< | ||
793 | ([^/]+) | ||
794 | / | ||
795 | ( | ||
796 | [:\w]+ | ||
797 | (\(\))? | ||
798 | ) | ||
799 | > | ||
800 | } {the C<$2> entry in the I<$1> manpage}gx; | ||
801 | |||
802 | # LREF: an =item on this manpage | ||
803 | s{ | ||
804 | ((?: | ||
805 | L< | ||
806 | / | ||
807 | ( | ||
808 | [:\w]+ | ||
809 | (\(\))? | ||
810 | ) | ||
811 | > | ||
812 | (,?\s+(and\s+)?)? | ||
813 | )+) | ||
814 | } { internal_lrefs($1) }gex; | ||
815 | |||
816 | # LREF: a =head2 (head1?), maybe on a manpage, maybe right here | ||
817 | # the "func" can disambiguate | ||
818 | s{ | ||
819 | L< | ||
820 | (?: | ||
821 | ([a-zA-Z]\S+?) / | ||
822 | )? | ||
823 | "?(.*?)"? | ||
824 | > | ||
825 | }{ | ||
826 | do { | ||
827 | $1 # if no $1, assume it means on this page. | ||
828 | ? "the section on I<$2> in the I<$1> manpage" | ||
829 | : "the section on I<$2>" | ||
830 | } | ||
831 | }gesx; # s in case it goes over multiple lines, so . matches \n | ||
832 | |||
833 | s/Z<>/\\&/g; | ||
834 | |||
835 | # comes last because not subject to reprocessing | ||
836 | s/C<($nonest)>/noremap("${CFont_embed}${1}\\fR")/eg; | ||
837 | } | ||
838 | |||
839 | if (s/^=//) { | ||
840 | $needspace = 0; # Assume this. | ||
841 | |||
842 | s/\n/ /g; | ||
843 | |||
844 | ($Cmd, $_) = split(' ', $_, 2); | ||
845 | |||
846 | $dotlevel = 1; | ||
847 | if ($Cmd eq 'head1') { | ||
848 | $dotlevel = 1; | ||
849 | } | ||
850 | elsif ($Cmd eq 'head2') { | ||
851 | $dotlevel = 1; | ||
852 | } | ||
853 | elsif ($Cmd eq 'item') { | ||
854 | $dotlevel = 2; | ||
855 | } | ||
856 | |||
857 | if (defined $_) { | ||
858 | &escapes($dotlevel); | ||
859 | s/"/""/g; | ||
860 | } | ||
861 | |||
862 | clear_noremap(1); | ||
863 | |||
864 | if ($Cmd eq 'cut') { | ||
865 | $cutting = 1; | ||
866 | } | ||
867 | elsif ($Cmd eq 'head1') { | ||
868 | s/\s+$//; | ||
869 | delete $wanna_see{$_} if exists $wanna_see{$_}; | ||
870 | print qq{.SH "$_"\n}; | ||
871 | push(@Indices, qq{.IX Header "$_"\n}); | ||
872 | } | ||
873 | elsif ($Cmd eq 'head2') { | ||
874 | print qq{.Sh "$_"\n}; | ||
875 | push(@Indices, qq{.IX Subsection "$_"\n}); | ||
876 | } | ||
877 | elsif ($Cmd eq 'over') { | ||
878 | push(@indent,$indent); | ||
879 | $indent += ($_ + 0) || 5; | ||
880 | } | ||
881 | elsif ($Cmd eq 'back') { | ||
882 | $indent = pop(@indent); | ||
883 | warn "$0: Unmatched =back in paragraph $. of $ARGV\n" unless defined $indent; | ||
884 | $needspace = 1; | ||
885 | } | ||
886 | elsif ($Cmd eq 'item') { | ||
887 | s/^\*( |$)/\\(bu$1/g; | ||
888 | # if you know how to get ":s please do | ||
889 | s/\\\*\(L"([^"]+?)\\\*\(R"/'$1'/g; | ||
890 | s/\\\*\(L"([^"]+?)""/'$1'/g; | ||
891 | s/[^"]""([^"]+?)""[^"]/'$1'/g; | ||
892 | # here do something about the $" in perlvar? | ||
893 | print STDOUT qq{.Ip "$_" $indent\n}; | ||
894 | push(@Indices, qq{.IX Item "$_"\n}); | ||
895 | } | ||
896 | elsif ($Cmd eq 'pod') { | ||
897 | # this is just a comment | ||
898 | } | ||
899 | else { | ||
900 | warn "$0: Unrecognized pod directive in paragraph $. of $ARGV: $Cmd\n"; | ||
901 | } | ||
902 | } | ||
903 | else { | ||
904 | if ($needspace) { | ||
905 | &makespace; | ||
906 | } | ||
907 | &escapes(0); | ||
908 | clear_noremap(1); | ||
909 | print $_, "\n"; | ||
910 | $needspace = 1; | ||
911 | } | ||
912 | } | ||
913 | |||
914 | print <<"END"; | ||
915 | |||
916 | .rn }` '' | ||
917 | END | ||
918 | |||
919 | if (%wanna_see && !$lax) { | ||
920 | @missing = keys %wanna_see; | ||
921 | warn "$0: $Filename is missing required section" | ||
922 | . (@missing > 1 && "s") | ||
923 | . ": @missing\n"; | ||
924 | $oops++; | ||
925 | } | ||
926 | |||
927 | foreach (@Indices) { print "$_\n"; } | ||
928 | |||
929 | exit; | ||
930 | #exit ($oops != 0); | ||
931 | |||
932 | ######################################################################### | ||
933 | |||
934 | sub nobreak { | ||
935 | my $string = shift; | ||
936 | $string =~ s/ /\\ /g; | ||
937 | $string; | ||
938 | } | ||
939 | |||
940 | sub escapes { | ||
941 | my $indot = shift; | ||
942 | |||
943 | s/X<(.*?)>/mkindex($1)/ge; | ||
944 | |||
945 | # translate the minus in foo-bar into foo\-bar for roff | ||
946 | s/([^0-9a-z-])-([^-])/$1\\-$2/g; | ||
947 | |||
948 | # make -- into the string version \*(-- (defined above) | ||
949 | s/\b--\b/\\*(--/g; | ||
950 | s/"--([^"])/"\\*(--$1/g; # should be a better way | ||
951 | s/([^"])--"/$1\\*(--"/g; | ||
952 | |||
953 | # fix up quotes; this is somewhat tricky | ||
954 | my $dotmacroL = 'L'; | ||
955 | my $dotmacroR = 'R'; | ||
956 | if ( $indot == 1 ) { | ||
957 | $dotmacroL = 'M'; | ||
958 | $dotmacroR = 'S'; | ||
959 | } | ||
960 | elsif ( $indot >= 2 ) { | ||
961 | $dotmacroL = 'N'; | ||
962 | $dotmacroR = 'T'; | ||
963 | } | ||
964 | if (!/""/) { | ||
965 | s/(^|\s)(['"])/noremap("$1\\*($dotmacroL$2")/ge; | ||
966 | s/(['"])($|[\-\s,;\\!?.])/noremap("\\*($dotmacroR$1$2")/ge; | ||
967 | } | ||
968 | |||
969 | #s/(?!")(?:.)--(?!")(?:.)/\\*(--/g; | ||
970 | #s/(?:(?!")(?:.)--(?:"))|(?:(?:")--(?!")(?:.))/\\*(--/g; | ||
971 | |||
972 | |||
973 | # make sure that func() keeps a bit a space tween the parens | ||
974 | ### s/\b\(\)/\\|()/g; | ||
975 | ### s/\b\(\)/(\\|)/g; | ||
976 | |||
977 | # make C++ into \*C+, which is a squinched version (defined above) | ||
978 | s/\bC\+\+/\\*(C+/g; | ||
979 | |||
980 | # make double underbars have a little tiny space between them | ||
981 | s/__/_\\|_/g; | ||
982 | |||
983 | # PI goes to \*(PI (defined above) | ||
984 | s/\bPI\b/noremap('\\*(PI')/ge; | ||
985 | |||
986 | # make all caps a teeny bit smaller, but don't muck with embedded code literals | ||
987 | my $hidCFont = font('C'); | ||
988 | if ($Cmd !~ /^head1/) { # SH already makes smaller | ||
989 | # /g isn't enough; 1 while or we'll be off | ||
990 | |||
991 | # 1 while s{ | ||
992 | # (?!$hidCFont)(..|^.|^) | ||
993 | # \b | ||
994 | # ( | ||
995 | # [A-Z][\/A-Z+:\-\d_$.]+ | ||
996 | # ) | ||
997 | # (s?) | ||
998 | # \b | ||
999 | # } {$1\\s-1$2\\s0}gmox; | ||
1000 | |||
1001 | 1 while s{ | ||
1002 | (?!$hidCFont)(..|^.|^) | ||
1003 | ( | ||
1004 | \b[A-Z]{2,}[\/A-Z+:\-\d_\$]*\b | ||
1005 | ) | ||
1006 | } { | ||
1007 | $1 . noremap( '\\s-1' . $2 . '\\s0' ) | ||
1008 | }egmox; | ||
1009 | |||
1010 | } | ||
1011 | } | ||
1012 | |||
1013 | # make troff just be normal, but make small nroff get quoted | ||
1014 | # decided to just put the quotes in the text; sigh; | ||
1015 | sub ccvt { | ||
1016 | local($_,$prev) = @_; | ||
1017 | noremap(qq{.CQ "$_" \n\\&}); | ||
1018 | } | ||
1019 | |||
1020 | sub makespace { | ||
1021 | if ($indent) { | ||
1022 | print ".Sp\n"; | ||
1023 | } | ||
1024 | else { | ||
1025 | print ".PP\n"; | ||
1026 | } | ||
1027 | } | ||
1028 | |||
1029 | sub mkindex { | ||
1030 | my ($entry) = @_; | ||
1031 | my @entries = split m:\s*/\s*:, $entry; | ||
1032 | push @Indices, ".IX Xref " . join ' ', map {qq("$_")} @entries; | ||
1033 | return ''; | ||
1034 | } | ||
1035 | |||
1036 | sub font { | ||
1037 | local($font) = shift; | ||
1038 | return '\\f' . noremap($font); | ||
1039 | } | ||
1040 | |||
1041 | sub noremap { | ||
1042 | local($thing_to_hide) = shift; | ||
1043 | $thing_to_hide =~ tr/\000-\177/\200-\377/; | ||
1044 | return $thing_to_hide; | ||
1045 | } | ||
1046 | |||
1047 | sub init_noremap { | ||
1048 | # escape high bit characters in input stream | ||
1049 | s/([\200-\377])/"E<".ord($1).">"/ge; | ||
1050 | } | ||
1051 | |||
1052 | sub clear_noremap { | ||
1053 | my $ready_to_print = $_[0]; | ||
1054 | |||
1055 | tr/\200-\377/\000-\177/; | ||
1056 | |||
1057 | # trofficate backslashes | ||
1058 | # s/(?!\\e)(?:..|^.|^)\\/\\e/g; | ||
1059 | |||
1060 | # now for the E<>s, which have been hidden until now | ||
1061 | # otherwise the interative \w<> processing would have | ||
1062 | # been hosed by the E<gt> | ||
1063 | s { | ||
1064 | E< | ||
1065 | ( | ||
1066 | ( \d + ) | ||
1067 | | ( [A-Za-z]+ ) | ||
1068 | ) | ||
1069 | > | ||
1070 | } { | ||
1071 | do { | ||
1072 | defined $2 | ||
1073 | ? chr($2) | ||
1074 | : | ||
1075 | exists $HTML_Escapes{$3} | ||
1076 | ? do { $HTML_Escapes{$3} } | ||
1077 | : do { | ||
1078 | warn "$0: Unknown escape in paragraph $. of $ARGV: ``$&''\n"; | ||
1079 | "E<$1>"; | ||
1080 | } | ||
1081 | } | ||
1082 | }egx if $ready_to_print; | ||
1083 | } | ||
1084 | |||
1085 | sub internal_lrefs { | ||
1086 | local($_) = shift; | ||
1087 | local $trailing_and = s/and\s+$// ? "and " : ""; | ||
1088 | |||
1089 | s{L</([^>]+)>}{$1}g; | ||
1090 | my(@items) = split( /(?:,?\s+(?:and\s+)?)/ ); | ||
1091 | my $retstr = "the "; | ||
1092 | my $i; | ||
1093 | for ($i = 0; $i <= $#items; $i++) { | ||
1094 | $retstr .= "C<$items[$i]>"; | ||
1095 | $retstr .= ", " if @items > 2 && $i != $#items; | ||
1096 | $retstr .= " and " if $i+2 == @items; | ||
1097 | } | ||
1098 | |||
1099 | $retstr .= " entr" . ( @items > 1 ? "ies" : "y" ) | ||
1100 | . " elsewhere in this document"; | ||
1101 | # terminal space to avoid words running together (pattern used | ||
1102 | # strips terminal spaces) | ||
1103 | $retstr .= " " if length $trailing_and; | ||
1104 | $retstr .= $trailing_and; | ||
1105 | |||
1106 | return $retstr; | ||
1107 | |||
1108 | } | ||
1109 | |||
1110 | BEGIN { | ||
1111 | %HTML_Escapes = ( | ||
1112 | 'amp' => '&', # ampersand | ||
1113 | 'lt' => '<', # left chevron, less-than | ||
1114 | 'gt' => '>', # right chevron, greater-than | ||
1115 | 'quot' => '"', # double quote | ||
1116 | |||
1117 | "Aacute" => "A\\*'", # capital A, acute accent | ||
1118 | "aacute" => "a\\*'", # small a, acute accent | ||
1119 | "Acirc" => "A\\*^", # capital A, circumflex accent | ||
1120 | "acirc" => "a\\*^", # small a, circumflex accent | ||
1121 | "AElig" => '\*(AE', # capital AE diphthong (ligature) | ||
1122 | "aelig" => '\*(ae', # small ae diphthong (ligature) | ||
1123 | "Agrave" => "A\\*`", # capital A, grave accent | ||
1124 | "agrave" => "A\\*`", # small a, grave accent | ||
1125 | "Aring" => 'A\\*o', # capital A, ring | ||
1126 | "aring" => 'a\\*o', # small a, ring | ||
1127 | "Atilde" => 'A\\*~', # capital A, tilde | ||
1128 | "atilde" => 'a\\*~', # small a, tilde | ||
1129 | "Auml" => 'A\\*:', # capital A, dieresis or umlaut mark | ||
1130 | "auml" => 'a\\*:', # small a, dieresis or umlaut mark | ||
1131 | "Ccedil" => 'C\\*,', # capital C, cedilla | ||
1132 | "ccedil" => 'c\\*,', # small c, cedilla | ||
1133 | "Eacute" => "E\\*'", # capital E, acute accent | ||
1134 | "eacute" => "e\\*'", # small e, acute accent | ||
1135 | "Ecirc" => "E\\*^", # capital E, circumflex accent | ||
1136 | "ecirc" => "e\\*^", # small e, circumflex accent | ||
1137 | "Egrave" => "E\\*`", # capital E, grave accent | ||
1138 | "egrave" => "e\\*`", # small e, grave accent | ||
1139 | "ETH" => '\\*(D-', # capital Eth, Icelandic | ||
1140 | "eth" => '\\*(d-', # small eth, Icelandic | ||
1141 | "Euml" => "E\\*:", # capital E, dieresis or umlaut mark | ||
1142 | "euml" => "e\\*:", # small e, dieresis or umlaut mark | ||
1143 | "Iacute" => "I\\*'", # capital I, acute accent | ||
1144 | "iacute" => "i\\*'", # small i, acute accent | ||
1145 | "Icirc" => "I\\*^", # capital I, circumflex accent | ||
1146 | "icirc" => "i\\*^", # small i, circumflex accent | ||
1147 | "Igrave" => "I\\*`", # capital I, grave accent | ||
1148 | "igrave" => "i\\*`", # small i, grave accent | ||
1149 | "Iuml" => "I\\*:", # capital I, dieresis or umlaut mark | ||
1150 | "iuml" => "i\\*:", # small i, dieresis or umlaut mark | ||
1151 | "Ntilde" => 'N\*~', # capital N, tilde | ||
1152 | "ntilde" => 'n\*~', # small n, tilde | ||
1153 | "Oacute" => "O\\*'", # capital O, acute accent | ||
1154 | "oacute" => "o\\*'", # small o, acute accent | ||
1155 | "Ocirc" => "O\\*^", # capital O, circumflex accent | ||
1156 | "ocirc" => "o\\*^", # small o, circumflex accent | ||
1157 | "Ograve" => "O\\*`", # capital O, grave accent | ||
1158 | "ograve" => "o\\*`", # small o, grave accent | ||
1159 | "Oslash" => "O\\*/", # capital O, slash | ||
1160 | "oslash" => "o\\*/", # small o, slash | ||
1161 | "Otilde" => "O\\*~", # capital O, tilde | ||
1162 | "otilde" => "o\\*~", # small o, tilde | ||
1163 | "Ouml" => "O\\*:", # capital O, dieresis or umlaut mark | ||
1164 | "ouml" => "o\\*:", # small o, dieresis or umlaut mark | ||
1165 | "szlig" => '\*8', # small sharp s, German (sz ligature) | ||
1166 | "THORN" => '\\*(Th', # capital THORN, Icelandic | ||
1167 | "thorn" => '\\*(th',, # small thorn, Icelandic | ||
1168 | "Uacute" => "U\\*'", # capital U, acute accent | ||
1169 | "uacute" => "u\\*'", # small u, acute accent | ||
1170 | "Ucirc" => "U\\*^", # capital U, circumflex accent | ||
1171 | "ucirc" => "u\\*^", # small u, circumflex accent | ||
1172 | "Ugrave" => "U\\*`", # capital U, grave accent | ||
1173 | "ugrave" => "u\\*`", # small u, grave accent | ||
1174 | "Uuml" => "U\\*:", # capital U, dieresis or umlaut mark | ||
1175 | "uuml" => "u\\*:", # small u, dieresis or umlaut mark | ||
1176 | "Yacute" => "Y\\*'", # capital Y, acute accent | ||
1177 | "yacute" => "y\\*'", # small y, acute accent | ||
1178 | "yuml" => "y\\*:", # small y, dieresis or umlaut mark | ||
1179 | ); | ||
1180 | } | ||
1181 | |||
diff --git a/src/lib/libcrypto/util/selftest.pl b/src/lib/libcrypto/util/selftest.pl new file mode 100644 index 0000000000..91e962a312 --- /dev/null +++ b/src/lib/libcrypto/util/selftest.pl | |||
@@ -0,0 +1,174 @@ | |||
1 | #!/usr/local/bin/perl -w | ||
2 | # | ||
3 | # Run the test suite and generate a report | ||
4 | # | ||
5 | |||
6 | if (! -f "Configure") { | ||
7 | print "Please run perl util/selftest.pl in the OpenSSL directory.\n"; | ||
8 | exit 1; | ||
9 | } | ||
10 | |||
11 | my $report="testlog"; | ||
12 | my $os="??"; | ||
13 | my $version="??"; | ||
14 | my $platform0="??"; | ||
15 | my $platform="??"; | ||
16 | my $options="??"; | ||
17 | my $last="??"; | ||
18 | my $ok=0; | ||
19 | my $cc="cc"; | ||
20 | my $cversion="??"; | ||
21 | my $sep="-----------------------------------------------------------------------------\n"; | ||
22 | |||
23 | open(OUT,">$report") or die; | ||
24 | |||
25 | print OUT "OpenSSL self-test report:\n\n"; | ||
26 | |||
27 | $uname=`uname -a`; | ||
28 | $uname="??" if $uname eq ""; | ||
29 | |||
30 | $c=`sh config -t`; | ||
31 | foreach $_ (split("\n",$c)) { | ||
32 | $os=$1 if (/Operating system: (.*)$/); | ||
33 | $platform0=$1 if (/Configuring for (.*)$/); | ||
34 | } | ||
35 | |||
36 | system "sh config" if (! -f "Makefile.ssl"); | ||
37 | |||
38 | if (open(IN,"<Makefile.ssl")) { | ||
39 | while (<IN>) { | ||
40 | $version=$1 if (/^VERSION=(.*)$/); | ||
41 | $platform=$1 if (/^PLATFORM=(.*)$/); | ||
42 | $options=$1 if (/^OPTIONS=(.*)$/); | ||
43 | $cc=$1 if (/^CC= *(.*)$/); | ||
44 | } | ||
45 | close(IN); | ||
46 | } else { | ||
47 | print OUT "Error running config!\n"; | ||
48 | } | ||
49 | |||
50 | $cversion=`$cc -v 2>&1`; | ||
51 | $cversion=`$cc -V 2>&1` if $cversion =~ "usage"; | ||
52 | $cversion=`$cc --version` if $cversion eq ""; | ||
53 | $cversion =~ s/Reading specs.*\n//; | ||
54 | $cversion =~ s/usage.*\n//; | ||
55 | chomp $cversion; | ||
56 | |||
57 | if (open(IN,"<CHANGES")) { | ||
58 | while(<IN>) { | ||
59 | if (/\*\) (.{0,55})/) { | ||
60 | $last=$1; | ||
61 | last; | ||
62 | } | ||
63 | } | ||
64 | close(IN); | ||
65 | } | ||
66 | |||
67 | print OUT "OpenSSL version: $version\n"; | ||
68 | print OUT "Last change: $last...\n"; | ||
69 | print OUT "Options: $options\n" if $options ne ""; | ||
70 | print OUT "OS (uname): $uname"; | ||
71 | print OUT "OS (config): $os\n"; | ||
72 | print OUT "Target (default): $platform0\n"; | ||
73 | print OUT "Target: $platform\n"; | ||
74 | print OUT "Compiler: $cversion\n"; | ||
75 | print OUT "\n"; | ||
76 | |||
77 | print "Checking compiler...\n"; | ||
78 | if (open(TEST,">cctest.c")) { | ||
79 | print TEST "#include <stdio.h>\nmain(){printf(\"Hello world\\n\");}\n"; | ||
80 | close(TEST); | ||
81 | system("$cc -o cctest cctest.c"); | ||
82 | if (`./cctest` !~ /Hello world/) { | ||
83 | print OUT "Compiler doesn't work.\n"; | ||
84 | goto err; | ||
85 | } | ||
86 | } else { | ||
87 | print OUT "Can't create cctest.c\n"; | ||
88 | } | ||
89 | if (open(TEST,">cctest.c")) { | ||
90 | print TEST "#include <openssl/opensslv.h>\nmain(){printf(OPENSSL_VERSION_TEXT);}\n"; | ||
91 | close(TEST); | ||
92 | system("$cc -o cctest -Iinclude cctest.c"); | ||
93 | $cctest = `./cctest`; | ||
94 | if ($cctest !~ /OpenSSL $version/) { | ||
95 | if ($cctest =~ /OpenSSL/) { | ||
96 | print OUT "#include uses headers from different OpenSSL version!\n"; | ||
97 | } else { | ||
98 | print OUT "Can't compile test program!\n"; | ||
99 | } | ||
100 | goto err; | ||
101 | } | ||
102 | } else { | ||
103 | print OUT "Can't create cctest.c\n"; | ||
104 | } | ||
105 | |||
106 | print "Running make...\n"; | ||
107 | if (system("make 2>&1 | tee make.log") > 255) { | ||
108 | |||
109 | print OUT "make failed!\n"; | ||
110 | if (open(IN,"<make.log")) { | ||
111 | print OUT $sep; | ||
112 | while (<IN>) { | ||
113 | print OUT; | ||
114 | } | ||
115 | close(IN); | ||
116 | print OUT $sep; | ||
117 | } else { | ||
118 | print OUT "make.log not found!\n"; | ||
119 | } | ||
120 | goto err; | ||
121 | } | ||
122 | |||
123 | $_=$options; | ||
124 | s/no-asm//; | ||
125 | if (/no-/) | ||
126 | { | ||
127 | print OUT "Test skipped.\n"; | ||
128 | goto err; | ||
129 | } | ||
130 | |||
131 | print "Running make test...\n"; | ||
132 | if (system("make test 2>&1 | tee make.log") > 255) | ||
133 | { | ||
134 | print OUT "make test failed!\n"; | ||
135 | } else { | ||
136 | $ok=1; | ||
137 | } | ||
138 | |||
139 | if ($ok and open(IN,"<make.log")) { | ||
140 | while (<IN>) { | ||
141 | $ok=2 if /^platform: $platform/; | ||
142 | } | ||
143 | close(IN); | ||
144 | } | ||
145 | |||
146 | if ($ok != 2) { | ||
147 | print OUT "Failure!\n"; | ||
148 | if (open(IN,"<make.log")) { | ||
149 | print OUT $sep; | ||
150 | while (<IN>) { | ||
151 | print OUT; | ||
152 | } | ||
153 | close(IN); | ||
154 | print OUT $sep; | ||
155 | } else { | ||
156 | print OUT "make.log not found!\n"; | ||
157 | } | ||
158 | } else { | ||
159 | print OUT "Test passed.\n"; | ||
160 | } | ||
161 | err: | ||
162 | close(OUT); | ||
163 | |||
164 | print "\n"; | ||
165 | open(IN,"<$report") or die; | ||
166 | while (<IN>) { | ||
167 | if (/$sep/) { | ||
168 | print "[...]\n"; | ||
169 | last; | ||
170 | } | ||
171 | print; | ||
172 | } | ||
173 | print "\nTest report in file $report\n"; | ||
174 | |||
diff --git a/src/lib/libcrypto/util/ssleay.num b/src/lib/libcrypto/util/ssleay.num index 8121738bd6..32b2e960c4 100644 --- a/src/lib/libcrypto/util/ssleay.num +++ b/src/lib/libcrypto/util/ssleay.num | |||
@@ -215,3 +215,13 @@ SSL_CTX_set_cert_verify_callback 232 | |||
215 | sk_SSL_COMP_sort 233 | 215 | sk_SSL_COMP_sort 233 |
216 | sk_SSL_CIPHER_sort 234 | 216 | sk_SSL_CIPHER_sort 234 |
217 | SSL_CTX_set_default_passwd_cb_userdata 235 | 217 | SSL_CTX_set_default_passwd_cb_userdata 235 |
218 | SSL_set_purpose 236 | ||
219 | SSL_CTX_set_trust 237 | ||
220 | SSL_CTX_set_purpose 238 | ||
221 | SSL_set_trust 239 | ||
222 | SSL_get_finished 240 | ||
223 | SSL_get_peer_finished 241 | ||
224 | SSL_get1_session 242 | ||
225 | SSL_CTX_callback_ctrl 243 | ||
226 | SSL_callback_ctrl 244 | ||
227 | SSL_CTX_sessions 245 | ||