From: Rich Salz Date: Sat, 11 Mar 2017 13:56:44 +0000 (-0500) Subject: Fix many doc L<> errors X-Git-Tag: OpenSSL_1_1_1-pre1~2067 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9e183d2271653cbba2d9cf56d40c1356705207aa;p=oweals%2Fopenssl.git Fix many doc L<> errors Add 2017 copyright year Add missing typedef to NAME Remove ec(7) and bn(7) doc links Remove .pod link errors, bogus links, make a few typo corrections Fix some typo's in links and some missing items. Don't link to C runtime functions (See OPENSSL_malloc for example/precedent) Document ASN1_tag2str(), add a few typedef's that were missing from NAME Update doc-nits target; addresses https://github.com/openssl/openssl/pull/1900#issuecomment-259943891, Merge check-doc-links into find-doc-nits; if run regularly, would have found https://github.com/openssl/openssl/pull/2825 Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/2862) --- diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 01f566569f..26858d42f0 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -289,7 +289,7 @@ clean: libclean -$(RM) `find . -name '*{- $depext -}' -a \! -path "./.git/*"` -$(RM) `find . -name '*{- $objext -}' -a \! -path "./.git/*"` $(RM) core - $(RM) tags TAGS + $(RM) tags TAGS doc-nits $(RM) test/.rnd $(RM) openssl.pc libcrypto.pc libssl.pc -$(RM) `find . -type l -a \! -path "./.git/*"` @@ -597,7 +597,7 @@ generate: generate_apps generate_crypto_bn generate_crypto_objects \ doc-nits: (cd $(SRCDIR); $(PERL) util/find-doc-nits.pl -n ) >doc-nits - if [ -s doc-nits ] ; then cat doc-nits; exit 1; fi + if [ -s doc-nits ] ; then cat doc-nits; rm doc-nits ; exit 1; fi # Test coverage is a good idea for the future #coverage: $(PROGRAMS) $(TESTPROGRAMS) diff --git a/doc/man3/ASN1_STRING_print_ex.pod b/doc/man3/ASN1_STRING_print_ex.pod index d2bf538f6b..a521f78ea9 100644 --- a/doc/man3/ASN1_STRING_print_ex.pod +++ b/doc/man3/ASN1_STRING_print_ex.pod @@ -2,7 +2,8 @@ =head1 NAME -ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp, ASN1_STRING_print - ASN1_STRING output routines +ASN1_tag2str, ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp, ASN1_STRING_print +- ASN1_STRING output routines =head1 SYNOPSIS @@ -12,6 +13,7 @@ ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp, ASN1_STRING_print - ASN1_STRING o int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags); int ASN1_STRING_print(BIO *out, const ASN1_STRING *str); + const char *ASN1_tag2str(int tag); =head1 DESCRIPTION @@ -26,6 +28,8 @@ ASN1_STRING_print() prints B to B but using a different format to ASN1_STRING_print_ex(). It replaces unprintable characters (other than CR, LF) with '.'. +ASN1_tag2str() returns a human-readable name of the specified ASN.1 B. + =head1 NOTES ASN1_STRING_print() is a legacy function which should be avoided in new applications. @@ -91,7 +95,7 @@ L =head1 COPYRIGHT -Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2002-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_BLINDING_new.pod b/doc/man3/BN_BLINDING_new.pod index 50fb4c171c..4229e754a1 100644 --- a/doc/man3/BN_BLINDING_new.pod +++ b/doc/man3/BN_BLINDING_new.pod @@ -105,10 +105,6 @@ BN_BLINDING_get_flags() returns the currently set B flags BN_BLINDING_create_param() returns the newly created B parameters or NULL on error. -=head1 SEE ALSO - -L - =head1 HISTORY BN_BLINDING_thread_id() was first introduced in OpenSSL 1.0.0, and it @@ -116,7 +112,7 @@ deprecates BN_BLINDING_set_thread_id() and BN_BLINDING_get_thread_id(). =head1 COPYRIGHT -Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2005-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_CTX_new.pod b/doc/man3/BN_CTX_new.pod index 84c23e0484..623fcd5692 100644 --- a/doc/man3/BN_CTX_new.pod +++ b/doc/man3/BN_CTX_new.pod @@ -57,7 +57,7 @@ replace use of BN_CTX_init with BN_CTX_new instead: =head1 SEE ALSO -L, L, L, +L, L, L =head1 HISTORY @@ -66,7 +66,7 @@ BN_CTX_init() was removed in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_add.pod b/doc/man3/BN_add.pod index c40fbb2501..db3b0d45b4 100644 --- a/doc/man3/BN_add.pod +++ b/doc/man3/BN_add.pod @@ -112,12 +112,12 @@ The error codes can be obtained by L. =head1 SEE ALSO -L, L, L, +L, L, L, L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_add_word.pod b/doc/man3/BN_add_word.pod index fa74282a93..6c69bc485f 100644 --- a/doc/man3/BN_add_word.pod +++ b/doc/man3/BN_add_word.pod @@ -47,11 +47,11 @@ B<(BN_ULONG)-1> if an error occurred. =head1 SEE ALSO -L, L, L +L, L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_bn2bin.pod b/doc/man3/BN_bn2bin.pod index 8c9c213b4e..9e16c0d239 100644 --- a/doc/man3/BN_bn2bin.pod +++ b/doc/man3/BN_bn2bin.pod @@ -100,13 +100,13 @@ The error codes can be obtained by L. =head1 SEE ALSO -L, L, L, +L, L, L, L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_cmp.pod b/doc/man3/BN_cmp.pod index 2ad29008de..95d162ff29 100644 --- a/doc/man3/BN_cmp.pod +++ b/doc/man3/BN_cmp.pod @@ -35,13 +35,9 @@ of B and B. BN_is_zero(), BN_is_one() BN_is_word() and BN_is_odd() return 1 if the condition is true, 0 otherwise. -=head1 SEE ALSO - -L - =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_copy.pod b/doc/man3/BN_copy.pod index 3668de0e28..500f4b2ee5 100644 --- a/doc/man3/BN_copy.pod +++ b/doc/man3/BN_copy.pod @@ -55,11 +55,11 @@ by L. =head1 SEE ALSO -L, L +L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_generate_prime.pod b/doc/man3/BN_generate_prime.pod index 1f08c83ca8..a4ef2302f6 100644 --- a/doc/man3/BN_generate_prime.pod +++ b/doc/man3/BN_generate_prime.pod @@ -175,7 +175,7 @@ Instead applications should create a BN_GENCB structure using BN_GENCB_new: =head1 SEE ALSO -L, L, L +L, L =head1 HISTORY @@ -184,7 +184,7 @@ and BN_GENCB_get_arg() were added in OpenSSL 1.1.0 =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_mod_inverse.pod b/doc/man3/BN_mod_inverse.pod index 1dd7b02b62..cb84a14098 100644 --- a/doc/man3/BN_mod_inverse.pod +++ b/doc/man3/BN_mod_inverse.pod @@ -27,11 +27,11 @@ NULL on error. The error codes can be obtained by L. =head1 SEE ALSO -L, L, L +L, L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_mod_mul_montgomery.pod b/doc/man3/BN_mod_mul_montgomery.pod index e97d4e594a..81056c76ac 100644 --- a/doc/man3/BN_mod_mul_montgomery.pod +++ b/doc/man3/BN_mod_mul_montgomery.pod @@ -71,7 +71,7 @@ outside the expected range. =head1 SEE ALSO -L, L, L, +L, L, L =head1 HISTORY @@ -80,7 +80,7 @@ BN_MONT_CTX_init() was removed in OpenSSL 1.1.0 =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_mod_mul_reciprocal.pod b/doc/man3/BN_mod_mul_reciprocal.pod index f90f2f7002..d480fed2d0 100644 --- a/doc/man3/BN_mod_mul_reciprocal.pod +++ b/doc/man3/BN_mod_mul_reciprocal.pod @@ -57,7 +57,7 @@ The error codes can be obtained by L. =head1 SEE ALSO -L, L, L, +L, L, L =head1 HISTORY @@ -66,7 +66,7 @@ BN_RECP_CTX_init() was removed in OpenSSL 1.1.0 =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_new.pod b/doc/man3/BN_new.pod index 022f7be7f3..36bd00da28 100644 --- a/doc/man3/BN_new.pod +++ b/doc/man3/BN_new.pod @@ -44,7 +44,7 @@ BN_clear(), BN_free() and BN_clear_free() have no return values. =head1 SEE ALSO -L, L +L =head1 HISTORY @@ -52,7 +52,7 @@ BN_init() was removed in OpenSSL 1.1.0; use BN_new() instead. =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_num_bytes.pod b/doc/man3/BN_num_bytes.pod index 8da74f8001..9e0465de54 100644 --- a/doc/man3/BN_num_bytes.pod +++ b/doc/man3/BN_num_bytes.pod @@ -46,12 +46,12 @@ more probability). =head1 SEE ALSO -L, L, L, +L, L, L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_rand.pod b/doc/man3/BN_rand.pod index 62b4317d40..7ae8e625f9 100644 --- a/doc/man3/BN_rand.pod +++ b/doc/man3/BN_rand.pod @@ -53,11 +53,11 @@ The error codes can be obtained by L. =head1 SEE ALSO -L, L, L, L +L, L, L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_set_bit.pod b/doc/man3/BN_set_bit.pod index bb889a0ffc..af02983c8f 100644 --- a/doc/man3/BN_set_bit.pod +++ b/doc/man3/BN_set_bit.pod @@ -55,11 +55,11 @@ can be obtained by L. =head1 SEE ALSO -L, L, L +L, L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_swap.pod b/doc/man3/BN_swap.pod index e27b639da9..9f77f22744 100644 --- a/doc/man3/BN_swap.pod +++ b/doc/man3/BN_swap.pod @@ -14,11 +14,9 @@ BN_swap - exchange BIGNUMs BN_swap() exchanges the values of I and I. -L - =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/BN_zero.pod b/doc/man3/BN_zero.pod index be0674fe45..91d48aad88 100644 --- a/doc/man3/BN_zero.pod +++ b/doc/man3/BN_zero.pod @@ -53,11 +53,11 @@ unsigned long but this value is also returned on error. =head1 SEE ALSO -L, L +L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/CONF_modules_load_file.pod b/doc/man3/CONF_modules_load_file.pod index 1149142210..4f02f52f6a 100644 --- a/doc/man3/CONF_modules_load_file.pod +++ b/doc/man3/CONF_modules_load_file.pod @@ -121,8 +121,7 @@ return value of the failing module (this will always be zero or negative). =head1 SEE ALSO -L, L, -L +L, L =head1 COPYRIGHT diff --git a/doc/man3/CRYPTO_get_ex_new_index.pod b/doc/man3/CRYPTO_get_ex_new_index.pod index ed32bb20cc..ede5fc14ce 100644 --- a/doc/man3/CRYPTO_get_ex_new_index.pod +++ b/doc/man3/CRYPTO_get_ex_new_index.pod @@ -152,7 +152,7 @@ dup_func() should return 0 for failure and 1 for success. =head1 COPYRIGHT -Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/ECPKParameters_print.pod b/doc/man3/ECPKParameters_print.pod index 2f8171ebfd..24b6bb9e04 100644 --- a/doc/man3/ECPKParameters_print.pod +++ b/doc/man3/ECPKParameters_print.pod @@ -28,13 +28,13 @@ return 1 for success and 0 if an error occurs. =head1 SEE ALSO -L, L, L, L, +L, L, L, L, L, L, L, =head1 COPYRIGHT -Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/EC_GFp_simple_method.pod b/doc/man3/EC_GFp_simple_method.pod index 11874794b4..f283d8e71e 100644 --- a/doc/man3/EC_GFp_simple_method.pod +++ b/doc/man3/EC_GFp_simple_method.pod @@ -52,14 +52,14 @@ EC_METHOD_get_field_type returns an integer that identifies the type of field th =head1 SEE ALSO -L, L, L, L, +L, L, L, L, L, L, L, L =head1 COPYRIGHT -Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/EC_GROUP_copy.pod b/doc/man3/EC_GROUP_copy.pod index a89ca2d591..fd5f58c919 100644 --- a/doc/man3/EC_GROUP_copy.pod +++ b/doc/man3/EC_GROUP_copy.pod @@ -190,13 +190,13 @@ trinomial or pentanomial respectively. Alternatively in the event of an error a =head1 SEE ALSO -L, L, L, +L, L, L, L, L, L, L =head1 COPYRIGHT -Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/EC_GROUP_new.pod b/doc/man3/EC_GROUP_new.pod index 5d4cc47d93..2f658dc2c3 100644 --- a/doc/man3/EC_GROUP_new.pod +++ b/doc/man3/EC_GROUP_new.pod @@ -104,13 +104,13 @@ EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROU =head1 SEE ALSO -L, L, L, +L, L, L, L, L, L, L =head1 COPYRIGHT -Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/EC_KEY_get_enc_flags.pod b/doc/man3/EC_KEY_get_enc_flags.pod index 2e0e5940a0..4f73a1d59d 100644 --- a/doc/man3/EC_KEY_get_enc_flags.pod +++ b/doc/man3/EC_KEY_get_enc_flags.pod @@ -40,7 +40,7 @@ EC_KEY. =head1 SEE ALSO -L, L, L, +L, L, L, L, L, L, @@ -49,7 +49,7 @@ L =head1 COPYRIGHT -Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/EC_KEY_new.pod b/doc/man3/EC_KEY_new.pod index bb842a41aa..591529fd47 100644 --- a/doc/man3/EC_KEY_new.pod +++ b/doc/man3/EC_KEY_new.pod @@ -165,7 +165,7 @@ of the buffer or 0 on error. =head1 SEE ALSO -L, L, L, +L, L, L, L, L, L, @@ -173,7 +173,7 @@ L =head1 COPYRIGHT -Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/EC_POINT_add.pod b/doc/man3/EC_POINT_add.pod index 252349d15d..6f3e2308bd 100644 --- a/doc/man3/EC_POINT_add.pod +++ b/doc/man3/EC_POINT_add.pod @@ -64,13 +64,13 @@ EC_GROUP_have_precompute_mult return 1 if a precomputation has been done, or 0 i =head1 SEE ALSO -L, L, L, L, +L, L, L, L, L, L, L =head1 COPYRIGHT -Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/EC_POINT_new.pod b/doc/man3/EC_POINT_new.pod index 046806cfdb..3358a08d8b 100644 --- a/doc/man3/EC_POINT_new.pod +++ b/doc/man3/EC_POINT_new.pod @@ -180,13 +180,13 @@ error. =head1 SEE ALSO -L, L, L, L, +L, L, L, L, L, L, L =head1 COPYRIGHT -Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/OPENSSL_init_crypto.pod b/doc/man3/OPENSSL_init_crypto.pod index 1989880752..f0b3c8aa8d 100644 --- a/doc/man3/OPENSSL_init_crypto.pod +++ b/doc/man3/OPENSSL_init_crypto.pod @@ -162,7 +162,7 @@ The OPENSSL_cleanup() function deinitialises OpenSSL (both libcrypto and libssl). All resources allocated by OpenSSL are freed. Typically there should be no need to call this function directly as it is initiated automatically on application exit. This is done via the standard C library -L function. In the event that the application will close in a manner +atexit() function. In the event that the application will close in a manner that will not call the registered atexit() handlers then the application should call OPENSSL_cleanup() directly. Developers of libraries using OpenSSL are discouraged from calling this function and should instead, typically, rely @@ -235,7 +235,7 @@ and OPENSSL_INIT_free() functions were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/SCT_new.pod b/doc/man3/SCT_new.pod index 54f6a8548f..698ee271f6 100644 --- a/doc/man3/SCT_new.pod +++ b/doc/man3/SCT_new.pod @@ -175,7 +175,7 @@ B returns 1 on success, 0 otherwise. =head1 SEE ALSO L, -L, +L, L =head1 HISTORY @@ -184,7 +184,7 @@ These functions were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/SMIME_read_PKCS7.pod b/doc/man3/SMIME_read_PKCS7.pod index 86d5cc3048..3eb8bbc9a0 100644 --- a/doc/man3/SMIME_read_PKCS7.pod +++ b/doc/man3/SMIME_read_PKCS7.pod @@ -30,7 +30,7 @@ signed. B<*bcont> can then be passed to PKCS7_verify() with the B flag set. Otherwise the type of the returned structure can be determined -using PKCS7_type(). +using PKCS7_type_is_enveloped(), etc. To support future functionality if B is not B B<*bcont> should be initialized to B. For example: @@ -61,14 +61,14 @@ is an error occurred. The error can be obtained from ERR_get_error(3). =head1 SEE ALSO -L, L +L, L, L, L, L L =head1 COPYRIGHT -Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2002-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/SSL_CTX_set_ct_validation_callback.pod b/doc/man3/SSL_CTX_set_ct_validation_callback.pod index d818e00fc5..afa45dc93f 100644 --- a/doc/man3/SSL_CTX_set_ct_validation_callback.pod +++ b/doc/man3/SSL_CTX_set_ct_validation_callback.pod @@ -2,6 +2,7 @@ =head1 NAME +ssl_ct_validation_cb, SSL_enable_ct, SSL_CTX_enable_ct, SSL_disable_ct, SSL_CTX_disable_ct, SSL_set_ct_validation_callback, SSL_CTX_set_ct_validation_callback, SSL_ct_is_enabled, SSL_CTX_ct_is_enabled - @@ -11,6 +12,9 @@ control Certificate Transparency policy #include + typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + int SSL_enable_ct(SSL *s, int validation_mode); int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, @@ -127,12 +131,11 @@ L, L, L, L, -L, L =head1 COPYRIGHT -Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/SSL_CTX_set_keylog_callback.pod b/doc/man3/SSL_CTX_set_keylog_callback.pod index abe45aea06..a7d3de3073 100644 --- a/doc/man3/SSL_CTX_set_keylog_callback.pod +++ b/doc/man3/SSL_CTX_set_keylog_callback.pod @@ -31,10 +31,9 @@ format used by NSS for its B debugging output. To recreate that file, the key logging callback should log B, followed by a newline. B will always be a NULL-terminated string. - =head1 SEE ALSO -L +L =head1 COPYRIGHT diff --git a/doc/man3/SSL_CTX_set_verify.pod b/doc/man3/SSL_CTX_set_verify.pod index ccfe94cd18..c2077bbb46 100644 --- a/doc/man3/SSL_CTX_set_verify.pod +++ b/doc/man3/SSL_CTX_set_verify.pod @@ -2,6 +2,7 @@ =head1 NAME +SSL_get_ex_data_X509_STORE_CTX_idx, SSL_CTX_set_verify, SSL_set_verify, SSL_CTX_set_verify_depth, SSL_set_verify_depth, SSL_verify_cb @@ -13,9 +14,12 @@ SSL_verify_cb void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb verify_callback); void SSL_set_verify(SSL *s, int mode, SSL_verify_cb verify_callback); + SSL_get_ex_data_X509_STORE_CTX_idx(void); + void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); void SSL_set_verify_depth(SSL *s, int depth); + typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); =head1 DESCRIPTION @@ -30,7 +34,9 @@ shall be specified, the NULL pointer can be used for B. In this case last B set specifically for this B remains. If no special B was set before, the default callback for the underlying B is used, that was valid at the time B was created with -L. +L. Within the callback function, +B can be called to get the data index +of the current SSL object that is doing the verification. SSL_CTX_set_verify_depth() sets the maximum B for the certificate chain verification that shall be allowed for B. (See the BUGS section.) @@ -171,7 +177,7 @@ certificates. The example makes use of the ex_data technique to store application data into/retrieve application data from the SSL structure -(see L, +(see L, L). ... @@ -284,11 +290,11 @@ L, L, L, L, -L +L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/SSL_set_bio.pod b/doc/man3/SSL_set_bio.pod index 58d22b63d7..bdee438c02 100644 --- a/doc/man3/SSL_set_bio.pod +++ b/doc/man3/SSL_set_bio.pod @@ -88,7 +88,7 @@ SSL_set_bio(), SSL_set_rbio() and SSL_set_wbio() cannot fail. =head1 SEE ALSO -L, +L, L, L, L, L, L @@ -98,7 +98,7 @@ SSL_set0_rbio() and SSL_set0_wbio() were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/UI_new.pod b/doc/man3/UI_new.pod index 8d4ae659a6..037e8bf10e 100644 --- a/doc/man3/UI_new.pod +++ b/doc/man3/UI_new.pod @@ -183,7 +183,7 @@ getting internal defaults for passed UI_METHOD pointers. =head1 COPYRIGHT -Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/X509_LOOKUP_hash_dir.pod b/doc/man3/X509_LOOKUP_hash_dir.pod index 08fa731238..5f8dfa93b0 100644 --- a/doc/man3/X509_LOOKUP_hash_dir.pod +++ b/doc/man3/X509_LOOKUP_hash_dir.pod @@ -108,20 +108,19 @@ Note that the hash algorithm used for subject name hashing changed in OpenSSL 1.0.0, and all certificate stores have to be rehashed when moving from OpenSSL 0.9.8 to 1.0.0. -OpenSSL includes a L utility which creates symlinks with correct +OpenSSL includes a L utility which creates symlinks with correct hashed names for all files with .pem suffix in a given directory. =head1 SEE ALSO L, -L, L, -L, +L, L, =head1 COPYRIGHT -Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man3/X509_digest.pod b/doc/man3/X509_digest.pod index 267e7bd2a6..07cfda4908 100644 --- a/doc/man3/X509_digest.pod +++ b/doc/man3/X509_digest.pod @@ -51,7 +51,7 @@ All functions described here return 1 for success and 0 for failure. =head1 SEE ALSO -L +L =head1 COPYRIGHT diff --git a/doc/man3/d2i_PrivateKey.pod b/doc/man3/d2i_PrivateKey.pod index 60cd89e67a..30caeebcb5 100644 --- a/doc/man3/d2i_PrivateKey.pod +++ b/doc/man3/d2i_PrivateKey.pod @@ -57,11 +57,11 @@ L. =head1 SEE ALSO L, -L +L =head1 COPYRIGHT -Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man7/ct.pod b/doc/man7/ct.pod index 119899c6da..355204d2a6 100644 --- a/doc/man7/ct.pod +++ b/doc/man7/ct.pod @@ -32,9 +32,9 @@ L, L, L, L, -L, L, -L, +L, +L, L =head1 HISTORY @@ -43,7 +43,7 @@ This library was added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man7/des_modes.pod b/doc/man7/des_modes.pod index 67e3297599..89f14b890c 100644 --- a/doc/man7/des_modes.pod +++ b/doc/man7/des_modes.pod @@ -246,12 +246,11 @@ it to: =head1 SEE ALSO -L, L, L, -L +L, L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man7/ssl.pod b/doc/man7/ssl.pod index 5812bc8052..1ec01268ce 100644 --- a/doc/man7/ssl.pod +++ b/doc/man7/ssl.pod @@ -496,8 +496,6 @@ in multiple SSL connections, and then duplicate it prior to initiating each connection with the duplicated handle. Use of SSL_dup() avoids the need to repeat the configuration of the handles for each connection. -This is used internally by L to construct -per-connection SSL handles after L. For SSL_dup() to work, the connection MUST be in its initial state and MUST NOT have not yet have started the SSL handshake. @@ -829,7 +827,7 @@ OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/doc/man7/x509.pod b/doc/man7/x509.pod index 5246cd9861..06584e3ae7 100644 --- a/doc/man7/x509.pod +++ b/doc/man7/x509.pod @@ -10,7 +10,7 @@ x509 - X.509 certificate handling =head1 DESCRIPTION -A X.509 certificate is a structured grouping of information about +An X.509 certificate is a structured grouping of information about an individual, a device, or anything one can imagine. A X.509 CRL (certificate revocation list) is a tool to help determine if a certificate is still valid. The exact definition of those can be @@ -58,12 +58,12 @@ L, L, L, L, -L, -L +L, +L =head1 COPYRIGHT -Copyright 2003-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2003-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/util/check-doc-links.pl b/util/check-doc-links.pl deleted file mode 100644 index 2cc4b31d54..0000000000 --- a/util/check-doc-links.pl +++ /dev/null @@ -1,99 +0,0 @@ -#! /usr/bin/env perl -# Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. -# -# Licensed under the OpenSSL license (the "License"). You may not use -# this file except in compliance with the License. You can obtain a copy -# in the file LICENSE in the source distribution or at -# https://www.openssl.org/source/license.html - - -require 5.10.0; -use warnings; -use strict; -use File::Basename; - -# Collection of links in each POD file. -# filename => [ "foo(1)", "bar(3)", ... ] -my %link_collection = (); -# Collection of names in each POD file. -# "name(s)" => filename -my %name_collection = (); - -sub collect { - my $filename = shift; - $filename =~ m|man(\d)/|; - my $section = $1; - my $simplename = basename($filename, ".pod"); - my $err = 0; - - my $contents = ''; - { - local $/ = undef; - open POD, $filename or die "Couldn't open $filename, $!"; - $contents = ; - close POD; - } - - $contents =~ /=head1 NAME([^=]*)=head1 /ms; - my $tmp = $1; - unless (defined $tmp) { - warn "weird name section in $filename\n"; - return 1; - } - $tmp =~ tr/\n/ /; - $tmp =~ s/-.*//g; - - my @names = map { s/\s+//g; $_ } split(/,/, $tmp); - unless (grep { $simplename eq $_ } @names) { - warn "$simplename missing among the names in $filename\n"; - push @names, $simplename; - } - foreach my $name (@names) { - next if $name eq ""; - my $namesection = "$name($section)"; - if (exists $name_collection{$namesection}) { - warn "$namesection, found in $filename, already exists in $name_collection{$namesection}\n"; - $err++; - } else { - $name_collection{$namesection} = $filename; - } - } - - my @foreign_names = - map { map { s/\s+//g; $_ } split(/,/, $_) } - $contents =~ /=for\s+comment\s+foreign\s+manuals:\s*(.*)\n\n/; - foreach (@foreign_names) { - $name_collection{$_} = undef; # It still exists! - } - - my @links = $contents =~ /L< - # if the link is of the form L, - # then remove 'something'. Note that 'something' - # may contain POD codes as well... - (?:(?:[^\|]|<[^>]*>)*\|)? - # we're only interested in referenses that have - # a one digit section number - ([^\/>\(]+\(\d\)) - /gx; - $link_collection{$filename} = [ @links ]; - - return $err; -} - -sub check { - foreach my $filename (sort keys %link_collection) { - foreach my $link (@{$link_collection{$filename}}) { - warn "$link in $filename refers to a non-existing manual\n" - unless exists $name_collection{$link}; - } - } -} - - -my $errs = 0; -foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) { - $errs += collect($_); -} -check() unless $errs > 0; - -exit; diff --git a/util/find-doc-nits b/util/find-doc-nits new file mode 100755 index 0000000000..0b855154c1 --- /dev/null +++ b/util/find-doc-nits @@ -0,0 +1,368 @@ +#! /usr/bin/env perl +# Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + + +require 5.10.0; +use warnings; +use strict; +use Pod::Checker; +use File::Find; +use File::Basename; +use File::Spec::Functions; +use Getopt::Std; +use lib catdir(dirname($0), "perl"); +use OpenSSL::Util::Pod; + +# Options. +our($opt_s); +our($opt_u); +our($opt_h); +our($opt_n); +our($opt_l); + +sub help() +{ + print < [ 'NAME', 'DESCRIPTION', 'COPYRIGHT' ], + 1 => [ 'SYNOPSIS', 'OPTIONS' ], + 3 => [ 'SYNOPSIS', 'RETURN VALUES' ], + 5 => [ ], + 7 => [ ] ); + +# Cross-check functions in the NAME and SYNOPSIS section. +sub name_synopsis() +{ + my $id = shift; + my $filename = shift; + my $contents = shift; + + # Get NAME section and all words in it. + return unless $contents =~ /=head1 NAME(.*)=head1 SYNOPSIS/ms; + my $tmp = $1; + $tmp =~ tr/\n/ /; + $tmp =~ s/-.*//g; + $tmp =~ s/,//g; + + my $dirname = dirname($filename); + my $simplename = basename($filename); + $simplename =~ s/.pod$//; + my $foundfilename = 0; + my %foundfilenames = (); + my %names; + foreach my $n ( split ' ', $tmp ) { + $names{$n} = 1; + $foundfilename++ if $n eq $simplename; + $foundfilenames{$n} = 1 + if -f "$dirname/$n.pod" && $n ne $simplename; + } + print "$id the following exist as other .pod files:\n", + join(" ", sort keys %foundfilenames), "\n" + if %foundfilenames; + print "$id $simplename (filename) missing from NAME section\n", + unless $foundfilename; + + # Find all functions in SYNOPSIS + return unless $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms; + my $syn = $1; + foreach my $line ( split /\n+/, $syn ) { + my $sym; + $line =~ s/STACK_OF\([^)]+\)/int/g; + $line =~ s/__declspec\([^)]+\)//; + if ( $line =~ /env (\S*)=/ ) { + # environment variable env NAME=... + $sym = $1; + } elsif ( $line =~ /typedef.*\(\*(\S+)\)\(.*/ ) { + # a callback function: typedef ... (*NAME)(... + $sym = $1; + } elsif ( $line =~ /typedef.* (\S+);/ ) { + # a simple typedef: typedef ... NAME; + $sym = $1; + } elsif ( $line =~ /#define ([A-Za-z0-9_]+)/ ) { + $sym = $1; + } elsif ( $line =~ /([A-Za-z0-9_]+)\(/ ) { + $sym = $1; + } + else { + next; + } + print "$id $sym missing from NAME section\n" + unless defined $names{$sym}; + $names{$sym} = 2; + + # Do some sanity checks on the prototype. + print "$id prototype missing spaces around commas: $line\n" + if ( $line =~ /[a-z0-9],[^ ]/ ); + } + + foreach my $n ( keys %names ) { + next if $names{$n} == 2; + print "$id $n missing from SYNOPSIS\n"; + } +} + +sub check() +{ + my $filename = shift; + my $dirname = basename(dirname($filename)); + + my $contents = ''; + { + local $/ = undef; + open POD, $filename or die "Couldn't open $filename, $!"; + $contents = ; + close POD; + } + + my $id = "${filename}:1:"; + + &name_synopsis($id, $filename, $contents) + unless $contents =~ /=for comment generic/ + or $filename =~ m@man[157]/@; + + print "$id doesn't start with =pod\n" + if $contents !~ /^=pod/; + print "$id doesn't end with =cut\n" + if $contents !~ /=cut\n$/; + print "$id more than one cut line.\n" + if $contents =~ /=cut.*=cut/ms; + print "$id missing copyright\n" + if $contents !~ /Copyright .* The OpenSSL Project Authors/; + print "$id copyright not last\n" + if $contents =~ /head1 COPYRIGHT.*=head/ms; + print "$id head2 in All uppercase\n" + if $contents =~ /head2\s+[A-Z ]+\n/; + print "$id extra space after head\n" + if $contents =~ /=head\d\s\s+/; + print "$id period in NAME section\n" + if $contents =~ /=head1 NAME.*\.\n.*=head1 SYNOPSIS/ms; + print "$id POD markup in NAME section\n" + if $contents =~ /=head1 NAME.*[<>].*=head1 SYNOPSIS/ms; + + # Look for multiple consecutive openssl #include lines. + # Consecutive because of files like md5.pod. Sometimes it's okay + # or necessary, as in ssl/SSL_set1_host.pod + if ( $contents !~ /=for comment multiple includes/ ) { + if ( $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms ) { + my $count = 0; + foreach my $line ( split /\n+/, $1 ) { + if ( $line =~ m@include ', $temp + or die "Can't open $temp, $!"; + podchecker($filename, $OUT); + close $OUT; + open $OUT, '<', $temp + or die "Can't read $temp, $!"; + while ( <$OUT> ) { + next if /\(section\) in.*deprecated/; + print; + } + close $OUT; + unlink $temp || warn "Can't remove $temp, $!"; +} + +my %dups; + +sub parsenum() +{ + my $file = shift; + my @apis; + + open my $IN, '<', $file + or die "Can't open $file, $!, stopped"; + + while ( <$IN> ) { + next if /\bNOEXIST\b/; + next if /\bEXPORT_VAR_AS_FUNC\b/; + push @apis, $1 if /([^\s]+).\s/; + } + + close $IN; + + print "# Found ", scalar(@apis), " in $file\n"; + return sort @apis; +} + +sub getdocced() +{ + my $dir = shift; + my %return; + + foreach my $pod ( glob("$dir/*.pod") ) { + my %podinfo = extract_pod_info($pod); + foreach my $n ( @{$podinfo{names}} ) { + $return{$n} = $pod; + print "# Duplicate $n in $pod and $dups{$n}\n" + if defined $dups{$n} && $dups{$n} ne $pod; + $dups{$n} = $pod; + } + } + + return %return; +} + +my %docced; + +sub printem() +{ + my $libname = shift; + my $numfile = shift; + my $count = 0; + + foreach my $func ( &parsenum($numfile) ) { + next if $docced{$func}; + + # Skip ASN1 utilities + next if $func =~ /^ASN1_/; + + print "$libname:$func\n"; + $count++; + } + print "# Found $count missing from $numfile\n\n"; +} + + +# Collection of links in each POD file. +# filename => [ "foo(1)", "bar(3)", ... ] +my %link_collection = (); +# Collection of names in each POD file. +# "name(s)" => filename +my %name_collection = (); + +sub collectnames { + my $filename = shift; + $filename =~ m|man(\d)/|; + my $section = $1; + my $simplename = basename($filename, ".pod"); + my $id = "${filename}:1:"; + + my $contents = ''; + { + local $/ = undef; + open POD, $filename or die "Couldn't open $filename, $!"; + $contents = ; + close POD; + } + + $contents =~ /=head1 NAME([^=]*)=head1 /ms; + my $tmp = $1; + unless (defined $tmp) { + print "$id weird name section\n"; + return; + } + $tmp =~ tr/\n/ /; + $tmp =~ s/-.*//g; + + my @names = map { s/\s+//g; $_ } split(/,/, $tmp); + unless (grep { $simplename eq $_ } @names) { + print "$id missing $simplename\n"; + push @names, $simplename; + } + foreach my $name (@names) { + next if $name eq ""; + my $name_sec = "$name($section)"; + if (! exists $name_collection{$name_sec}) { + $name_collection{$name_sec} = $filename; + } else { #elsif ($filename ne $name_collection{$name_sec}) { + print "$id $name_sec also in $name_collection{$name_sec}\n"; + } + } + + my @foreign_names = + map { map { s/\s+//g; $_ } split(/,/, $_) } + $contents =~ /=for\s+comment\s+foreign\s+manuals:\s*(.*)\n\n/; + foreach (@foreign_names) { + $name_collection{$_} = undef; # It still exists! + } + + my @links = $contents =~ /L< + # if the link is of the form L, + # then remove 'something'. Note that 'something' + # may contain POD codes as well... + (?:(?:[^\|]|<[^>]*>)*\|)? + # we're only interested in referenses that have + # a one digit section number + ([^\/>\(]+\(\d\)) + /gx; + $link_collection{$filename} = [ @links ]; +} + +sub checklinks { + foreach my $filename (sort keys %link_collection) { + foreach my $link (@{$link_collection{$filename}}) { + print "${filename}:1: reference to non-existing $link\n" + unless exists $name_collection{$link}; + } + } +} + +getopts('lnshu'); + +&help() if ( $opt_h ); + +die "Need one of -l -n -s or -u flags.\n" + unless $opt_l or $opt_n or $opt_s or $opt_u; + +if ( $opt_n or $opt_s ) { + foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) { + &check($_); + } +} + +if ( $opt_l ) { + foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) { + collectnames($_); + } + checklinks(); +} + +if ( $opt_u ) { + my %temp = &getdocced('doc/man3'); + foreach ( keys %temp ) { + $docced{$_} = $temp{$_}; + } + &printem('crypto', 'util/libcrypto.num'); + &printem('ssl', 'util/libssl.num'); +} + +exit; diff --git a/util/find-doc-nits.pl b/util/find-doc-nits.pl deleted file mode 100755 index e90b3d7d07..0000000000 --- a/util/find-doc-nits.pl +++ /dev/null @@ -1,284 +0,0 @@ -#! /usr/bin/env perl -# Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. -# -# Licensed under the OpenSSL license (the "License"). You may not use -# this file except in compliance with the License. You can obtain a copy -# in the file LICENSE in the source distribution or at -# https://www.openssl.org/source/license.html - - -require 5.10.0; -use warnings; -use strict; -use Pod::Checker; -use File::Find; -use File::Basename; -use File::Spec::Functions; -use Getopt::Std; -use lib catdir(dirname($0), "perl"); -use OpenSSL::Util::Pod; - -# Options. -our($opt_s); -our($opt_u); -our($opt_h); -our($opt_n); - -sub help() -{ - print < [ 'NAME', 'DESCRIPTION', 'COPYRIGHT' ], - 1 => [ 'SYNOPSIS', 'OPTIONS' ], - 3 => [ 'SYNOPSIS', 'RETURN VALUES' ], - 5 => [ ], - 7 => [ ] ); - -# Cross-check functions in the NAME and SYNOPSIS section. -sub name_synopsis() -{ - my $id = shift; - my $filename = shift; - my $contents = shift; - - # Get NAME section and all words in it. - return unless $contents =~ /=head1 NAME(.*)=head1 SYNOPSIS/ms; - my $tmp = $1; - $tmp =~ tr/\n/ /; - $tmp =~ s/-.*//g; - $tmp =~ s/,//g; - - my $dirname = dirname($filename); - my $simplename = basename($filename); - $simplename =~ s/.pod$//; - my $foundfilename = 0; - my %foundfilenames = (); - my %names; - foreach my $n ( split ' ', $tmp ) { - $names{$n} = 1; - $foundfilename++ if $n eq $simplename; - $foundfilenames{$n} = 1 - if -f "$dirname/$n.pod" && $n ne $simplename; - } - print "$id the following exist as other .pod files:\n", - join(" ", sort keys %foundfilenames), "\n" - if %foundfilenames; - print "$id $simplename (filename) missing from NAME section\n", - unless $foundfilename; - - # Find all functions in SYNOPSIS - return unless $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms; - my $syn = $1; - foreach my $line ( split /\n+/, $syn ) { - my $sym; - $line =~ s/STACK_OF\([^)]+\)/int/g; - $line =~ s/__declspec\([^)]+\)//; - if ( $line =~ /env (\S*)=/ ) { - # environment variable env NAME=... - $sym = $1; - } elsif ( $line =~ /typedef.*\(\*(\S+)\)\(.*/ ) { - # a callback function: typedef ... (*NAME)(... - $sym = $1; - } elsif ( $line =~ /typedef.* (\S+);/ ) { - # a simple typedef: typedef ... NAME; - $sym = $1; - } elsif ( $line =~ /#define ([A-Za-z0-9_]+)/ ) { - $sym = $1; - } elsif ( $line =~ /([A-Za-z0-9_]+)\(/ ) { - $sym = $1; - } - else { - next; - } - print "$id $sym missing from NAME section\n" - unless defined $names{$sym}; - $names{$sym} = 2; - - # Do some sanity checks on the prototype. - print "$id prototype missing spaces around commas: $line\n" - if ( $line =~ /[a-z0-9],[^ ]/ ); - } - - foreach my $n ( keys %names ) { - next if $names{$n} == 2; - print "$id $n missing from SYNOPSIS\n"; - } -} - -sub check() -{ - my $filename = shift; - my $dirname = basename(dirname($filename)); - - my $contents = ''; - { - local $/ = undef; - open POD, $filename or die "Couldn't open $filename, $!"; - $contents = ; - close POD; - } - - my $id = "${filename}:1:"; - - &name_synopsis($id, $filename, $contents) - unless $contents =~ /=for comment generic/ - or $filename =~ m@man[157]/@; - - print "$id doesn't start with =pod\n" - if $contents !~ /^=pod/; - print "$id doesn't end with =cut\n" - if $contents !~ /=cut\n$/; - print "$id more than one cut line.\n" - if $contents =~ /=cut.*=cut/ms; - print "$id missing copyright\n" - if $contents !~ /Copyright .* The OpenSSL Project Authors/; - print "$id copyright not last\n" - if $contents =~ /head1 COPYRIGHT.*=head/ms; - print "$id head2 in All uppercase\n" - if $contents =~ /head2\s+[A-Z ]+\n/; - print "$id extra space after head\n" - if $contents =~ /=head\d\s\s+/; - print "$id period in NAME section\n" - if $contents =~ /=head1 NAME.*\.\n.*=head1 SYNOPSIS/ms; - print "$id POD markup in NAME section\n" - if $contents =~ /=head1 NAME.*[<>].*=head1 SYNOPSIS/ms; - - # Look for multiple consecutive openssl #include lines. - # Consecutive because of files like md5.pod. Sometimes it's okay - # or necessary, as in ssl/SSL_set1_host.pod - if ( $contents !~ /=for comment multiple includes/ ) { - if ( $contents =~ /=head1 SYNOPSIS(.*)=head1 DESCRIPTION/ms ) { - my $count = 0; - foreach my $line ( split /\n+/, $1 ) { - if ( $line =~ m@include ', $temp - or die "Can't open $temp, $!"; - podchecker($filename, $OUT); - close $OUT; - open $OUT, '<', $temp - or die "Can't read $temp, $!"; - while ( <$OUT> ) { - next if /\(section\) in.*deprecated/; - print; - } - close $OUT; - unlink $temp || warn "Can't remove $temp, $!"; -} - -my %dups; - -sub parsenum() -{ - my $file = shift; - my @apis; - - open my $IN, '<', $file - or die "Can't open $file, $!, stopped"; - - while ( <$IN> ) { - next if /\bNOEXIST\b/; - next if /\bEXPORT_VAR_AS_FUNC\b/; - push @apis, $1 if /([^\s]+).\s/; - } - - close $IN; - - print "# Found ", scalar(@apis), " in $file\n"; - return sort @apis; -} - -sub getdocced() -{ - my $dir = shift; - my %return; - - foreach my $pod ( glob("$dir/*.pod") ) { - my %podinfo = extract_pod_info($pod); - foreach my $n ( @{$podinfo{names}} ) { - $return{$n} = $pod; - print "# Duplicate $n in $pod and $dups{$n}\n" - if defined $dups{$n} && $dups{$n} ne $pod; - $dups{$n} = $pod; - } - } - - return %return; -} - -my %docced; - -sub printem() -{ - my $libname = shift; - my $numfile = shift; - my $count = 0; - - foreach my $func ( &parsenum($numfile) ) { - next if $docced{$func}; - - # Skip ASN1 utilities - next if $func =~ /^ASN1_/; - - print "$libname:$func\n"; - $count++; - } - print "# Found $count missing from $numfile\n\n"; -} - - -getopts('nshu'); - -&help() if ( $opt_h ); - -die "Need one of -n -s or -u flags.\n" - unless $opt_n or $opt_s or $opt_u; - -if ( $opt_n or $opt_s ) { - foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) { - &check($_); - } -} -if ( $opt_u ) { - my %temp = &getdocced('doc/man3'); - foreach ( keys %temp ) { - $docced{$_} = $temp{$_}; - } - &printem('crypto', 'util/libcrypto.num'); - &printem('ssl', 'util/libssl.num'); -} - -exit;