فهرست منبع

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 <levitte@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/2862)
Rich Salz 7 سال پیش
والد
کامیت
9e183d2271
46فایلهای تغییر یافته به همراه186 افزوده شده و 204 حذف شده
  1. 2 2
      Configurations/unix-Makefile.tmpl
  2. 6 2
      doc/man3/ASN1_STRING_print_ex.pod
  3. 1 5
      doc/man3/BN_BLINDING_new.pod
  4. 2 2
      doc/man3/BN_CTX_new.pod
  5. 2 2
      doc/man3/BN_add.pod
  6. 2 2
      doc/man3/BN_add_word.pod
  7. 2 2
      doc/man3/BN_bn2bin.pod
  8. 1 5
      doc/man3/BN_cmp.pod
  9. 2 2
      doc/man3/BN_copy.pod
  10. 2 2
      doc/man3/BN_generate_prime.pod
  11. 2 2
      doc/man3/BN_mod_inverse.pod
  12. 2 2
      doc/man3/BN_mod_mul_montgomery.pod
  13. 2 2
      doc/man3/BN_mod_mul_reciprocal.pod
  14. 2 2
      doc/man3/BN_new.pod
  15. 2 2
      doc/man3/BN_num_bytes.pod
  16. 2 2
      doc/man3/BN_rand.pod
  17. 2 2
      doc/man3/BN_set_bit.pod
  18. 1 3
      doc/man3/BN_swap.pod
  19. 2 2
      doc/man3/BN_zero.pod
  20. 1 2
      doc/man3/CONF_modules_load_file.pod
  21. 1 1
      doc/man3/CRYPTO_get_ex_new_index.pod
  22. 2 2
      doc/man3/ECPKParameters_print.pod
  23. 2 2
      doc/man3/EC_GFp_simple_method.pod
  24. 2 2
      doc/man3/EC_GROUP_copy.pod
  25. 2 2
      doc/man3/EC_GROUP_new.pod
  26. 2 2
      doc/man3/EC_KEY_get_enc_flags.pod
  27. 2 2
      doc/man3/EC_KEY_new.pod
  28. 2 2
      doc/man3/EC_POINT_add.pod
  29. 2 2
      doc/man3/EC_POINT_new.pod
  30. 2 2
      doc/man3/OPENSSL_init_crypto.pod
  31. 2 2
      doc/man3/SCT_new.pod
  32. 3 3
      doc/man3/SMIME_read_PKCS7.pod
  33. 5 2
      doc/man3/SSL_CTX_set_ct_validation_callback.pod
  34. 1 2
      doc/man3/SSL_CTX_set_keylog_callback.pod
  35. 10 4
      doc/man3/SSL_CTX_set_verify.pod
  36. 2 2
      doc/man3/SSL_set_bio.pod
  37. 1 1
      doc/man3/UI_new.pod
  38. 3 4
      doc/man3/X509_LOOKUP_hash_dir.pod
  39. 1 1
      doc/man3/X509_digest.pod
  40. 2 2
      doc/man3/d2i_PrivateKey.pod
  41. 3 3
      doc/man7/ct.pod
  42. 2 3
      doc/man7/des_modes.pod
  43. 1 3
      doc/man7/ssl.pod
  44. 4 4
      doc/man7/x509.pod
  45. 0 99
      util/check-doc-links.pl
  46. 87 3
      util/find-doc-nits

+ 2 - 2
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)

+ 6 - 2
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<str> to B<out> 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<tag>.
+
 =head1 NOTES
 
 ASN1_STRING_print() is a legacy function which should be avoided in new applications.
@@ -91,7 +95,7 @@ L<ASN1_tag2str(3)>
 
 =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

+ 1 - 5
doc/man3/BN_BLINDING_new.pod

@@ -105,10 +105,6 @@ BN_BLINDING_get_flags() returns the currently set B<BN_BLINDING> flags
 BN_BLINDING_create_param() returns the newly created B<BN_BLINDING>
 parameters or NULL on error.
 
-=head1 SEE ALSO
-
-L<bn(7)>
-
 =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

+ 2 - 2
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<bn(7)>, L<ERR_get_error(3)>, L<BN_add(3)>,
+L<ERR_get_error(3)>, L<BN_add(3)>,
 L<BN_CTX_start(3)>
 
 =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

+ 2 - 2
doc/man3/BN_add.pod

@@ -112,12 +112,12 @@ The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<ERR_get_error(3)>, L<BN_CTX_new(3)>,
+L<ERR_get_error(3)>, L<BN_CTX_new(3)>,
 L<BN_add_word(3)>, L<BN_set_bit(3)>
 
 =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

+ 2 - 2
doc/man3/BN_add_word.pod

@@ -47,11 +47,11 @@ B<(BN_ULONG)-1> if an error occurred.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<ERR_get_error(3)>, L<BN_add(3)>
+L<ERR_get_error(3)>, L<BN_add(3)>
 
 =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

+ 2 - 2
doc/man3/BN_bn2bin.pod

@@ -100,13 +100,13 @@ The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<ERR_get_error(3)>, L<BN_zero(3)>,
+L<ERR_get_error(3)>, L<BN_zero(3)>,
 L<ASN1_INTEGER_to_BN(3)>,
 L<BN_num_bytes(3)>
 
 =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

+ 1 - 5
doc/man3/BN_cmp.pod

@@ -35,13 +35,9 @@ of B<a> and B<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<bn(7)>
-
 =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

+ 2 - 2
doc/man3/BN_copy.pod

@@ -55,11 +55,11 @@ by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<ERR_get_error(3)>
+L<ERR_get_error(3)>
 
 =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

+ 2 - 2
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<bn(7)>, L<ERR_get_error(3)>, L<RAND_bytes(3)>
+L<ERR_get_error(3)>, L<RAND_bytes(3)>
 
 =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

+ 2 - 2
doc/man3/BN_mod_inverse.pod

@@ -27,11 +27,11 @@ NULL on error. The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<ERR_get_error(3)>, L<BN_add(3)>
+L<ERR_get_error(3)>, L<BN_add(3)>
 
 =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

+ 2 - 2
doc/man3/BN_mod_mul_montgomery.pod

@@ -71,7 +71,7 @@ outside the expected range.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<ERR_get_error(3)>, L<BN_add(3)>,
+L<ERR_get_error(3)>, L<BN_add(3)>,
 L<BN_CTX_new(3)>
 
 =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

+ 2 - 2
doc/man3/BN_mod_mul_reciprocal.pod

@@ -57,7 +57,7 @@ The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<ERR_get_error(3)>, L<BN_add(3)>,
+L<ERR_get_error(3)>, L<BN_add(3)>,
 L<BN_CTX_new(3)>
 
 =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

+ 2 - 2
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<bn(7)>, L<ERR_get_error(3)>
+L<ERR_get_error(3)>
 
 =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

+ 2 - 2
doc/man3/BN_num_bytes.pod

@@ -46,12 +46,12 @@ more probability).
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<DH_size(3)>, L<DSA_size(3)>,
+L<DH_size(3)>, L<DSA_size(3)>,
 L<RSA_size(3)>
 
 =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

+ 2 - 2
doc/man3/BN_rand.pod

@@ -53,11 +53,11 @@ The error codes can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<ERR_get_error(3)>, L<RAND_add(3)>, L<RAND_bytes(3)>
+L<ERR_get_error(3)>, L<RAND_add(3)>, L<RAND_bytes(3)>
 
 =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

+ 2 - 2
doc/man3/BN_set_bit.pod

@@ -55,11 +55,11 @@ can be obtained by L<ERR_get_error(3)>.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<BN_num_bytes(3)>, L<BN_add(3)>
+L<BN_num_bytes(3)>, L<BN_add(3)>
 
 =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

+ 1 - 3
doc/man3/BN_swap.pod

@@ -14,11 +14,9 @@ BN_swap - exchange BIGNUMs
 
 BN_swap() exchanges the values of I<a> and I<b>.
 
-L<bn(7)>
-
 =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

+ 2 - 2
doc/man3/BN_zero.pod

@@ -53,11 +53,11 @@ unsigned long but this value is also returned on error.
 
 =head1 SEE ALSO
 
-L<bn(7)>, L<BN_bn2bin(3)>
+L<BN_bn2bin(3)>
 
 =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

+ 1 - 2
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<config(5)>, L<OPENSSL_config(3)>,
-L<NCONF_free(3)>
+L<config(5)>, L<OPENSSL_config(3)>
 
 =head1 COPYRIGHT
 

+ 1 - 1
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

+ 2 - 2
doc/man3/ECPKParameters_print.pod

@@ -28,13 +28,13 @@ return 1 for success and 0 if an error occurs.
 
 =head1 SEE ALSO
 
-L<crypto(7)>, L<ec(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>,
 
 =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

+ 2 - 2
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<crypto(7)>, L<ec(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<d2i_ECPKParameters(3)>,
 L<BN_mod_mul_montgomery(3)>
 
 =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

+ 2 - 2
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<crypto(7)>, L<ec(7)>, L<EC_GROUP_new(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>,
 L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
 
 =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

+ 2 - 2
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<crypto(7)>, L<ec(7)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_new(3)>, L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
 
 =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

+ 2 - 2
doc/man3/EC_KEY_get_enc_flags.pod

@@ -40,7 +40,7 @@ EC_KEY.
 
 =head1 SEE ALSO
 
-L<crypto(7)>, L<ec(7)>, L<EC_GROUP_new(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>,
 L<EC_GROUP_copy(3)>, L<EC_POINT_new(3)>,
 L<EC_POINT_add(3)>,
 L<EC_GFp_simple_method(3)>,
@@ -49,7 +49,7 @@ L<d2i_ECPrivateKey(3)>
 
 =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

+ 2 - 2
doc/man3/EC_KEY_new.pod

@@ -165,7 +165,7 @@ of the buffer or 0 on error.
 
 =head1 SEE ALSO
 
-L<crypto(7)>, L<ec(7)>, L<EC_GROUP_new(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>,
 L<EC_GROUP_copy(3)>, L<EC_POINT_new(3)>,
 L<EC_POINT_add(3)>,
 L<EC_GFp_simple_method(3)>,
@@ -173,7 +173,7 @@ L<d2i_ECPKParameters(3)>
 
 =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

+ 2 - 2
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<crypto(7)>, L<ec(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_new(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
 
 =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

+ 2 - 2
doc/man3/EC_POINT_new.pod

@@ -180,13 +180,13 @@ error.
 
 =head1 SEE ALSO
 
-L<crypto(7)>, L<ec(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
+L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
 L<EC_POINT_add(3)>, L<EC_KEY_new(3)>,
 L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
 
 =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

+ 2 - 2
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<atexit(3)> 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

+ 2 - 2
doc/man3/SCT_new.pod

@@ -175,7 +175,7 @@ B<SCT_set_source> returns 1 on success, 0 otherwise.
 =head1 SEE ALSO
 
 L<ct(7)>,
-L<SCT_verify(3)>,
+L<SCT_validate(3)>,
 L<OBJ_nid2obj(3)>
 
 =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

+ 3 - 3
doc/man3/SMIME_read_PKCS7.pod

@@ -30,7 +30,7 @@ signed. B<*bcont> can then be passed to PKCS7_verify() with
 the B<PKCS7_DETACHED> 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<bcont> is not B<NULL>
 B<*bcont> should be initialized to B<NULL>. For example:
@@ -61,14 +61,14 @@ is an error occurred. The error can be obtained from ERR_get_error(3).
 
 =head1 SEE ALSO
 
-L<ERR_get_error(3)>, L<PKCS7_type(3)>
+L<ERR_get_error(3)>,
 L<SMIME_read_PKCS7(3)>, L<PKCS7_sign(3)>,
 L<PKCS7_verify(3)>, L<PKCS7_encrypt(3)>
 L<PKCS7_decrypt(3)>
 
 =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

+ 5 - 2
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 <openssl/ssl.h>
 
+ 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<ssl(7)>,
 L<SSL_session_reused(3)>,
 L<SSL_set_verify(3)>,
 L<SSL_CTX_set_verify(3)>,
-L<ssl_ct_validation_cb(3)>,
 L<SSL_SESSION_get_time(3)>
 
 =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

+ 1 - 2
doc/man3/SSL_CTX_set_keylog_callback.pod

@@ -31,10 +31,9 @@ format used by NSS for its B<SSLKEYLOGFILE> debugging output. To recreate that
 file, the key logging callback should log B<line>, followed by a newline.
 B<line> will always be a NULL-terminated string.
 
-
 =head1 SEE ALSO
 
-L<ssl(3)>
+L<ssl(7)>
 
 =head1 COPYRIGHT
 

+ 10 - 4
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<verify_callback>. In
 this case last B<verify_callback> set specifically for this B<ssl> remains. If
 no special B<callback> was set before, the default callback for the underlying
 B<ctx> is used, that was valid at the time B<ssl> was created with
-L<SSL_new(3)>.
+L<SSL_new(3)>. Within the callback function,
+B<SSL_get_ex_data_X509_STORE_CTX_idx> 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<depth> for the certificate chain
 verification that shall be allowed for B<ctx>. (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<SSL_get_ex_new_index(3)>,
+(see L<CRYPTO_get_ex_new_index(3)>,
 L<SSL_get_ex_data_X509_STORE_CTX_idx(3)>).
 
  ...
@@ -284,11 +290,11 @@ L<SSL_CTX_load_verify_locations(3)>,
 L<SSL_get_peer_certificate(3)>,
 L<SSL_CTX_set_cert_verify_callback(3)>,
 L<SSL_get_ex_data_X509_STORE_CTX_idx(3)>,
-L<SSL_get_ex_new_index(3)>
+L<CRYPTO_get_ex_new_index(3)>
 
 =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

+ 2 - 2
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<SSL_get_rbio(7)>,
+L<SSL_get_rbio(3)>,
 L<SSL_connect(3)>, L<SSL_accept(3)>,
 L<SSL_shutdown(3)>, L<ssl(7)>, L<bio(7)>
 
@@ -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

+ 1 - 1
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

+ 3 - 4
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<c_rehash(1)> utility which creates symlinks with correct
+OpenSSL includes a L<rehash(1)> utility which creates symlinks with correct
 hashed names for all files with .pem suffix in a given directory.
 
 =head1 SEE ALSO
 
 L<PEM_read_PrivateKey(3)>,
-L<d2i_X509_bio(3)>,
 L<X509_STORE_load_locations(3)>,
-L<X609_store_add_lookup(3)>,
+L<X509_store_add_lookup(3)>,
 L<SSL_CTX_load_verify_locations(3)>,
 
 =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

+ 1 - 1
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<EVP_SHA1(3)>
+L<EVP_sha1(3)>
 
 =head1 COPYRIGHT
 

+ 2 - 2
doc/man3/d2i_PrivateKey.pod

@@ -57,11 +57,11 @@ L<ERR_get_error(3)>.
 =head1 SEE ALSO
 
 L<crypto(7)>,
-L<d2i_PKCS8PrivateKey(3)>
+L<d2i_PKCS8PrivateKey_bio(3)>
 
 =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

+ 3 - 3
doc/man7/ct.pod

@@ -32,9 +32,9 @@ L<CTLOG_STORE_new(3)>,
 L<CTLOG_STORE_get0_log_by_id(3)>,
 L<SCT_new(3)>,
 L<SCT_print(3)>,
-L<SCT_verify(3)>,
 L<SCT_validate(3)>,
-L<CT_POLICY_EVAL_CTX(3)>,
+L<SCT_validate(3)>,
+L<CT_POLICY_EVAL_CTX_new(3)>,
 L<SSL_CTX_set_ct_validation_callback(3)>
 
 =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

+ 2 - 3
doc/man7/des_modes.pod

@@ -246,12 +246,11 @@ it to:
 
 =head1 SEE ALSO
 
-L<BF_encrypt(3)>, L<DES_crypt(3)>, L<IDEA(3)>,
-L<RC2(3)>
+L<BF_encrypt(3)>, L<DES_crypt(3)>
 
 =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

+ 1 - 3
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<BIO_s_accept(3)> to construct
-per-connection SSL handles after L<accept(2)>.
 
 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

+ 4 - 4
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<d2i_X509_CRL(3)>,
 L<d2i_X509_NAME(3)>,
 L<d2i_X509_REQ(3)>,
 L<d2i_X509_SIG(3)>,
-L<crypto(7)>,
-L<x509v3(3)>
+L<X509v3(3)>,
+L<crypto(7)>
 
 =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

+ 0 - 99
util/check-doc-links.pl

@@ -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 = <POD>;
-        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<something|name(s)>,
-                              # 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;

+ 87 - 3
util/find-doc-nits.pl → util/find-doc-nits

@@ -23,11 +23,13 @@ our($opt_s);
 our($opt_u);
 our($opt_h);
 our($opt_n);
+our($opt_l);
 
 sub help()
 {
     print <<EOF;
 Find small errors (nits) in documentation.  Options:
+    -l Print bogus links
     -n Print nits in POD pages
     -s Also print missing sections in POD pages (implies -n)
     -u List undocumented functions
@@ -260,18 +262,100 @@ sub printem()
 }
 
 
-getopts('nshu');
+# 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 = <POD>;
+        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<something|name(s)>,
+                              # 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 -n -s or -u flags.\n"
-    unless $opt_n or $opt_s or $opt_u;
+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 ) {