Index: gnu/usr.bin/perl/MANIFEST
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/MANIFEST,v
retrieving revision 1.56
diff -u -p -r1.56 MANIFEST
--- gnu/usr.bin/perl/MANIFEST	30 Dec 2019 02:16:39 -0000	1.56
+++ gnu/usr.bin/perl/MANIFEST	26 Feb 2020 02:24:42 -0000
@@ -2024,8 +2024,8 @@ cpan/Term-ReadKey/example/test.pl		Term:
 cpan/Term-ReadKey/genchars.pl			Term::ReadKey
 cpan/Term-ReadKey/Makefile.PL			Term::ReadKey
 cpan/Term-ReadKey/ppport.h			Term::ReadKey
-cpan/Term-ReadKey/ReadKey.pm			Term::ReadKey
 cpan/Term-ReadKey/ReadKey.xs			Term::ReadKey
+cpan/Term-ReadKey/ReadKey.pm.PL		Term::ReadKey
 cpan/Term-ReadKey/README			Term::ReadKey
 cpan/Term-ReadKey/t/01_basic.t			Term::ReadKey
 cpan/Term-ReadKey/t/02_terminal_functions.t	Term::ReadKey
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/Changes
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/Changes,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 Changes
--- gnu/usr.bin/perl/cpan/Term-ReadKey/Changes	7 May 2016 16:03:09 -0000	1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/Changes	26 Feb 2020 02:24:43 -0000
@@ -1,240 +1,123 @@
-2015-06-04  Jonathan Stowe <jns+git@gellyfish.co.uk>
+2.38	 - 2019-01-05
+	* Bundle up various changes including:
+		* Indexing improvements
+		* Makefile improvements for some make utils
+		* Various code cleanups and modernizations
 
-	* .gitignore, Changes, META.yml, README, ReadKey.pm: Up version
+2.37	 - 2016-10-07
 
-2015-06-04  Jonathan Stowe <jns+git@gellyfish.co.uk>
+	* Make minimum version of ExtUtils::MakeMaker 6.58
+	* Better support parallel builds by making 'dynamic' a dependency of the ReadKey.pm
+	* Add a 'provides' META section to help indexing
 
-	* .gitignore: Add .bs file to .gitignore
+2.36	 - 2016-10-07
 
-2015-06-04  Jonathan Stowe <jns@gellyfish.co.uk>
+	* Add a package declaration to the ReadKey_pm.PL to aid indexing
 
-	* : Merge pull request #6 from ntyni/master Make genchars.pl output reproducible by sorting hash keys
+2.35	 - 2016-10-06
 
-2015-04-30  Jonathan Stowe <jns+git@gellyfish.co.uk>
+	* Use FULLPERLRUNINST to run the ReadKey_pm.PL to get the 'blib'
 
-	* Makefile.PL: Fix for "[rt.cpan.org #100932] Parallel build fails"
-	from Petr Pisar
+2.34	 - 2016-10-06
 
-2015-04-30  Jonathan Stowe <jns+git@gellyfish.co.uk>
+	* Fix GetTerminalSize() argument handling
+	* Fix miniperl build on Win32
+	* Remove unused Cwd
+	* Fix TAP output
+	* Fix warnings in XS file
+	* Don't attempt some tests if STDIN is not a terminal
+	* Generate ReadKey.pm from  ReadKey_pm.PL to expand blockoptions
+	* demand-load Carp,
+	* remove unneeded AutoLoader,
+	* Improve genchars.pl, support make -s silence.
+	* Improve Makefile.PL add SIGN, fix pure_site_install, support dual-life, fix realclean
 
-	* MANIFEST.SKIP: Add .git directory to the MANIFEST.SKIP
+2.33	 - 2015-06-04
 
-2015-04-13  Jonathan Stowe <jns+git@gellyfish.co.uk>
+	* Make genchars.pl output reproducible by sorting hash keys
+	* Fix for "[rt.cpan.org #100932] Parallel build fails" from Petr Pisar
+	* Move tests to t directory from Sébastien Deseille <sebastien.deseille@gmail.com>
+	* Move original test to example directory
+	* Don't use 'resize' or 'stty' on MS Windows
 
-	* MANIFEST, MANIFEST.SKIP: Add new artefacts
-
-2015-04-13  Jonathan Stowe <jns+git@gellyfish.co.uk>
-
-	* .travis.yml: Add travis-ci testing
-
-2015-04-13  Jonathan Stowe <jns+git@gellyfish.co.uk>
-
-	* .gitignore: Add .gitignore
-
-2015-04-13  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* : Merge pull request #5 from
-	sdeseille/Create_T_directory_and_split_test.pl Create t directory and split test.pl
-
-2015-04-11  Sébastien Deseille <sebastien.deseille@gmail.com>
-
-	* README: Update README to reflect the move of test.pl in example
-	subdirectory
-
-2015-04-11  Sébastien Deseille <sebastien.deseille@gmail.com>
-
-	* README: Revert "Update README to reflect the move of test.pl in
-	example subdirectory" This reverts commit 09402dcd68d8d0417e0eb2f9ea0aeaf4b4c72e9a.
-
-2015-04-11  Sébastien Deseille <sebastien.deseille@gmail.com>
-
-	* README: Update README to reflect the move of test.pl in example
-	subdirectory
-
-2015-04-11  Sébastien Deseille <sebastien.deseille@gmail.com>
-
-	* example/test.pl, test.pl: Move test.pl in example's subdirectory
-	in order to keep the possibility to use its interactive mode
-
-2015-04-11  Sébastien Deseille <sebastien.deseille@gmail.com>
-
-	* t/02_terminal_functions.t: Finished to implement all tests from
-	test.pl
-
-2015-04-11  Sébastien Deseille <sebastien.deseille@gmail.com>
-
-	* t/02_terminal_functions.t: Add test to Check TerminalSize OUT
-
-2015-04-11  Sébastien Deseille <sebastien.deseille@gmail.com>
-
-	* t/02_terminal_functions.t: Add test to Check non-blocking read
-
-2015-04-10  Sébastien Deseille <sebastien.deseille@gmail.com>
-
-	* t/02_terminal_functions.t: Add second test about Comparing
-	TerminalSize
-
-2015-04-10  Sébastien Deseille <sebastien.deseille@gmail.com>
-
-	* t/01_basic.t: Add first test to validate module loading
-
-2015-04-03  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* : Merge pull request #3 from kmx/master no resize, no stty on MS Windows
-
-2014-05-10  Jonathan Stowe <jns+git@gellyfish.co.uk>
-
-	* Changes: Update changes with git2cl (some manual reordering)
-
-2014-05-10  Jonathan Stowe <jns+git@gellyfish.co.uk>
+2.32	 - 2014-05-10
 
 	* Makefile.PL: Makefile.PL more specific
+	* Fix some warnings
+	* Don't index Configure.pm
+	* POD fixes
+	* Change licensing to optional Artistic
 
-2014-05-10  Jonathan Stowe <jns+git@gellyfish.co.uk>
-
-	* : Merge pull request #2 from jacquesg/warnings Fix some warnings
-
-2014-03-09  Jonathan Stowe <jns+git@gellyfish.co.uk>
-
-	* Configure.pm, META.yml, Makefile.PL: Don't index Configure.pm
-
-2014-03-03  Jonathan Stowe <jns+git@gellyfish.co.uk>
-
-	* Changes, README, ReadKey.pm: Added documentation patch as per
-	Chris Marshall Bumped version
+2.31	 - 2013-10-26
+	
+	* Update pport.h
+	* Added additional metadata to Makefile.PL
 
-2013-10-28  Jonathan Stowe <jns+git@gellyfish.co.uk>
+2.30.02  - 2011-02-07
 
-	* README: Some changes to README
+2.30.01  - 2008-06-24
 
-2013-10-28  Brian Wightman <MidLifeXis@wightmanfam.org>
+2.30	 - 2005-01-12
 
-	* ReadKey.pm: Promote SUPPORT and LICENSE to top-level head sections SUPPORT and LICENSE sections were in item sections, but outside of
-	an over/back block.
-
-2013-10-27  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* Makefile.PL, README, ReadKey.pm, ReadKey.xs, genchars.pl: Change
-	licensing Fix some warnings
-
-2013-10-26  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* ReadKey.pm: Applied patch from rt #35669
-
-2013-10-26  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* Makefile.PL, ReadKey.xs: Applied change from rt #26235 Also fixed
-	repo name
-
-2013-10-26  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* ReadKey.pm: Patch from rt #35671
-
-2013-10-26  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* ppport.h: Updated ppport.h as per #78831
-
-2013-10-26  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* Makefile.PL: Changed distname per RT #87885 Added additional
-	metadata
-
-2013-10-26  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* ReadKey.pm: Added changes for RT #86584
-
-2013-10-26  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* ReadKey.pm: Added patch from jpeacock@cpan.org for RT #88266
-
-2011-04-19  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* Changes: Added Changes
-
-2011-04-19  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* : commit 40ba6a2a80ae495b921ab416f6b024014daac25e Author: Stas
-	Grabois <CENSORED> Date:   Tue Jun 24 01:57:37 2008 -0800
-
-2006-01-13  jonathan <jonathan@d4a3e428-c23c-0410-a93a-b1ce904c0fb3>
-
-	* MANIFEST, Makefile.PL: Added Changes git-svn-id: http://jstowe.googlecode.com/svn/trunk/TermReadKey@74
-	d4a3e428-c23c-0410-a93a-b1ce904c0fb3
-
-2005-01-11  jonathan <jonathan@d4a3e428-c23c-0410-a93a-b1ce904c0fb3>
-
-	* test.pl: Skip tests if /dev/tty for automated testing git-svn-id: http://jstowe.googlecode.com/svn/trunk/TermReadKey@53
-	d4a3e428-c23c-0410-a93a-b1ce904c0fb3
-
-2005-01-11  jonathan <jonathan@d4a3e428-c23c-0410-a93a-b1ce904c0fb3>
-
-	* ReadKey.pm: Fixed POD git-svn-id: http://jstowe.googlecode.com/svn/trunk/TermReadKey@52
-	d4a3e428-c23c-0410-a93a-b1ce904c0fb3
-
-2005-01-11  jonathan <jonathan@d4a3e428-c23c-0410-a93a-b1ce904c0fb3>
-
-	* README, ReadKey.pm, ReadKey.xs, genchars.pl, ppport.h: * Updated ppport.h * Fixed example in synopsis * termio branch not updated git-svn-id: http://jstowe.googlecode.com/svn/trunk/TermReadKey@51
-	d4a3e428-c23c-0410-a93a-b1ce904c0fb3
-
-2004-03-02  jonathan <jonathan@d4a3e428-c23c-0410-a93a-b1ce904c0fb3>
-
-	* Put back in CVS git-svn-id: http://jstowe.googlecode.com/svn/trunk/TermReadKey@19
-	d4a3e428-c23c-0410-a93a-b1ce904c0fb3
-
-2005-01-12  Jonathan Stowe <jns@gellyfish.co.uk>
-
-	* Configure.pm, MANIFEST, META.yml, Makefile.PL, README,
-	ReadKey.pm, ReadKey.xs, genchars.pl, ppport.h, test.pl: import
-	TermReadKey 2.30 from CPAN git-cpan-module:   TermReadKey git-cpan-version:  2.30
-	git-cpan-authorid: JSTOWE git-cpan-file:
-	authors/id/J/JS/JSTOWE/TermReadKey-2.30.tar.gz
+	* Skip tests if /dev/tty for automated testing 
+	* Fixed POD 
+	* Fixed example in synopsis
+	* Update ppport.h
 
-2002-07-28  Jonathan Stowe <jns@gellyfish.co.uk>
+2.21	 - 2002-07-28
 
+	2002-07-28  Jonathan Stowe <jns@gellyfish.co.uk>
 	* README, ReadKey.pm, ReadKey.xs, ppport.h, test.pl: import
 	TermReadKey 2.21 from CPAN git-cpan-module:   TermReadKey git-cpan-version:  2.21
 	git-cpan-authorid: JSTOWE git-cpan-file:
 	authors/id/J/JS/JSTOWE/TermReadKey-2.21.tar.gz
 
-2002-05-24  Jonathan Stowe <jns@gellyfish.co.uk>
+2.20	 - 2002-05-24
 
+	2002-05-24  Jonathan Stowe <jns@gellyfish.co.uk>
 	* README, ReadKey.pm, ReadKey.xs: import TermReadKey 2.20 from CPAN git-cpan-module:   TermReadKey git-cpan-version:  2.20
 	git-cpan-authorid: JSTOWE git-cpan-file:
 	authors/id/J/JS/JSTOWE/TermReadKey-2.20.tar.gz
 
-2002-03-21  Jonathan Stowe <jns@gellyfish.co.uk>
+2.19	 - 2002-03-21
 
+	2002-03-21  Jonathan Stowe <jns@gellyfish.co.uk>
 	* README, ReadKey.pm, ReadKey.xs: import TermReadKey 2.19 from CPAN git-cpan-module:   TermReadKey git-cpan-version:  2.19
 	git-cpan-authorid: JSTOWE git-cpan-file:
 	authors/id/J/JS/JSTOWE/TermReadKey-2.19.tar.gz
 
-2002-02-10  Jonathan Stowe <jns@gellyfish.co.uk>
+2.18	 - 2002-02-10
 
+	2002-02-10  Jonathan Stowe <jns@gellyfish.co.uk>
 	* Configure.pm, Makefile.PL, README, ReadKey.pm, ReadKey.xs,
 	genchars.pl: import TermReadKey 2.18 from CPAN git-cpan-module:   TermReadKey git-cpan-version:  2.18
 	git-cpan-authorid: JSTOWE git-cpan-file:
 	authors/id/J/JS/JSTOWE/TermReadKey-2.18.tar.gz
 
-2002-01-25  Jonathan Stowe <jns@gellyfish.co.uk>
+2.17	 - 2002-01-25
 
+	2002-01-25  Jonathan Stowe <jns@gellyfish.co.uk>
 	* Makefile.PL, README, ReadKey.pm, ReadKey.xs, test.pl: import
 	TermReadKey 2.17 from CPAN git-cpan-module:   TermReadKey git-cpan-version:  2.17
 	git-cpan-authorid: JSTOWE git-cpan-file:
 	authors/id/J/JS/JSTOWE/TermReadKey-2.17.tar.gz
 
-2001-11-29  Jonathan Stowe <jns@gellyfish.co.uk>
+2.16	 - 2001-11-29
 
+	2001-11-29  Jonathan Stowe <jns@gellyfish.co.uk>
 	* ReadKey.pm, ReadKey.xs, genchars.pl, ppport.h: import TermReadKey
 	2.16 from CPAN git-cpan-module:   TermReadKey git-cpan-version:  2.16
 	git-cpan-authorid: JSTOWE git-cpan-file:
 	authors/id/J/JS/JSTOWE/TermReadKey-2.16.tar.gz
 
-2001-11-07  Jonathan Stowe <jns@gellyfish.co.uk>
+2.15	 - 2001-11-07
 
+	2001-11-07  Jonathan Stowe <jns@gellyfish.co.uk>
 	* ReadKey.pm, ReadKey.xs: import TermReadKey 2.15 from CPAN git-cpan-module:   TermReadKey git-cpan-version:  2.15
 	git-cpan-authorid: JSTOWE git-cpan-file:
 	authors/id/J/JS/JSTOWE/TermReadKey-2.15.tar.gz
 
+2.14	 - 1999-03-29
 1999-03-29  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Makefile.PL, ReadKey.pm, ReadKey.xs, ppport.h: import TermReadKey
@@ -242,6 +125,7 @@
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.14.tar.gz
 
+2.13	 - 1999-03-24
 1999-03-24  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* MANIFEST, Makefile.PL, README, ReadKey.pm, ReadKey.xs,
@@ -249,6 +133,7 @@
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.13.tar.gz
 
+2.12	 - 1998-01-07
 1998-01-07  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Makefile.PL, README, ReadKey.pm, ReadKey.xs, test.pl: import
@@ -256,6 +141,7 @@
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.12.tar.gz
 
+2.11	 - 1997-12-14
 1997-12-13  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Makefile.PL, README, ReadKey.pm, ReadKey.xs, test.pl: import
@@ -263,6 +149,7 @@
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.11.tar.gz
 
+2.09	 - 1997-10-07
 1997-10-07  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Makefile.PL, ReadKey.pm, ReadKey.xs, genchars.pl: import
@@ -270,6 +157,7 @@
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.09.tar.gz
 
+2.08	 - 1997-10-06
 1997-10-06  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Makefile.PL, README, ReadKey.pm, ReadKey.xs: import TermReadKey
@@ -277,6 +165,7 @@
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.08.tar.gz
 
+2.07	 - 1997-01-27
 1997-01-27  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Makefile.PL, ReadKey.pm, ReadKey.xs: import TermReadKey 2.07 from
@@ -284,6 +173,7 @@
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.07.tar.gz
 
+2.06	 - 1996-11-26
 1996-11-25  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Makefile.PL, README, ReadKey.pm, ReadKey.xs, test.pl: import
@@ -291,6 +181,7 @@
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.06.tar.gz
 
+2.05	 - 1996-03-14
 1996-03-14  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Makefile.PL, README, ReadKey.pm, ReadKey.xs: import TermReadKey
@@ -298,12 +189,14 @@
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.05.tar.gz
 
+2.04	 - 1995-10-11
 1995-10-11  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Makefile.PL, README, ReadKey.xs: import TermReadKey 2.04 from CPAN git-cpan-module:   TermReadKey git-cpan-version:  2.04
 	git-cpan-authorid: KJALB git-cpan-file:
 	authors/id/K/KJ/KJALB/TermReadKey-2.04.tar.gz
 
+2.03	 - 1995-09-29
 1995-09-29  Kenneth Albanowski <kjahds@kjahds.com>
 
 	* Configure.pm, MANIFEST, Makefile.PL, README, ReadKey.pm,
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm,v
retrieving revision 1.3
diff -u -p -r1.3 Configure.pm
--- gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm	3 Jul 2016 01:07:58 -0000	1.3
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/Configure.pm	26 Feb 2020 02:24:43 -0000
@@ -16,10 +16,9 @@
 
 # for when no_index is not enough
 package 
-Configure;
+  Configure;
 
 use strict;
-
 use vars qw(@EXPORT @ISA);
 
 use Carp;
@@ -71,7 +70,7 @@ levels of specificity, so here is a summ
 
 CheckHeader:		Look for headers.
 
-CheckStructure:	Look for a structure.
+CheckStructure:		Look for a structure.
 
 CheckField:		Look for a field in a structure.
 
@@ -85,11 +84,11 @@ GetTextSymbol:		Get the contents of a sy
 
 GetNumericSymbol:	Get the contents of a symbol as a number.	
 
-Apply:		Try compiling code with a set of headers and libs.
+Apply:			Try compiling code with a set of headers and libs.
 
 ApplyHeaders:		Try compiling code with a set of headers.
 
-ApplyLibraries:	Try linking code with a set of libraries.
+ApplyLibraries:		Try linking code with a set of libraries.
 
 ApplyHeadersAndLibaries:	You get the idea.
 
@@ -99,7 +98,7 @@ CPP:		Feed some code through the C prepr
 
 Compile:	Try to compile some C code.
 
-Link:	Try to compile & link some C code.
+Link:		Try to compile & link some C code.
 
 Execute:	Try to compile, link, & execute some C code.
 
@@ -175,7 +174,7 @@ sub Compile { # Feed code to compiler. O
 	my($result) = scalar(`$C_cc $C_ccflags -c $in $C_ldflags $C_libs $options 2>&1`);
 	print "Executing '$C_cc $C_ccflags -c $in $C_ldflags $C_libs $options 2>&1'\n"  if $Verbose;
 	my($error) = $?;
-   my($error2) = ! -e $out;
+        my($error2) = ! -e $out;
 	unlink($in,$out);
 	return (($error || $error2) ? 0 : 1) unless wantarray;
 	($error,$result,$error2);
@@ -427,11 +426,12 @@ sub Apply { #
 			@l = split(/\s+/,$lookup[$i+1]);
 		}
 
-		if($ret=&{$cmd == \&Link && !@l?\&Compile:$cmd}(join("",map($_?"#include <$_>\n":"",grep(!/^-I/,@h))).
+		if ($ret=&{$cmd == \&Link && !@l?\&Compile:$cmd}(
+                        join("",map($_?"#include <$_>\n":"",grep(!/^-I/,@h))).
 				$code,grep(/^-I/,@h),@l)) {
 			print "Ret=|$ret|\n" if $Verbose;
 			return $ret unless wantarray;
-		return (join(" ",@h),join(" ",@l));
+                        return (join(" ",@h),join(" ",@l));
 		}
 	}
 	return 0 unless wantarray;
@@ -531,7 +531,7 @@ be returned if nothing succeeds.
 sub CheckField { # Check for the existance of specified field in structure
 	my($structname,$fieldname,@headers) = @_;
 	ApplyHeaders("main(){ struct $structname s1; struct $structname s2;
-								 s1.$fieldname = s2.$fieldname; }",@headers);
+		     s1.$fieldname = s2.$fieldname; }",@headers);
 }
 
 =head2 CheckLSymbol
@@ -592,7 +592,7 @@ sub CheckHPrototype { # Check for header
 	my($function,$proto,@headers) = @_;
 	my(@proto) = @{$proto};
 	ApplyHeaders("main() { extern ".$proto[0]." $function(".
-								 join(",",@proto[1..$#proto])."); }",@headers);
+                     join(",",@proto[1..$#proto])."); }",@headers);
 }
 
 =head2 GetSymbol
@@ -705,48 +705,61 @@ sub DeducePrototype {
         
 	if($firstdeduce) {
 		$firstdeduce=0;
-		my $checknumber=!Compile("extern int func(int a,int b); 
-									 extern int func(int a,int b,int c); 
-									 main(){}");
-		$checkreturn=!Compile("extern int func(int a,int b); 
-									 extern long func(int a,int b); 
-									 main(){}");
-		my $checketc=   !Compile("extern int func(int a,int b); 
-									 extern long func(int a,...); 
-									 main(){}");
-		my $checknumberetc=!Compile("extern int func(int a,int b); 
-									 extern int func(int a,int b,...); 
-									 main(){}");
-		my $checketcnumber=!Compile("extern int func(int a,int b,int c,...); 
-									 extern int func(int a,int b,...); 
-									 main(){}");
-		my $checkargtypes=!Compile("extern int func(int a); 
-									 extern int func(long a); 
-									 main(){}");
-		my $checkargsnil=!Compile("extern int func(); 
-									 extern int func(int a,int b,int c); 
-									 main(){}");
-		$checknilargs=!Compile("extern int func(int a,int b,int c); 
-									 extern int func(); 
-									 main(){}");
-		my $checkargsniletc=!Compile("extern int func(...); 
-									 extern int func(int a,int b,int c); 
-									 main(){}");
-		$checkniletcargs=!Compile("extern int func(int a,int b,int c); 
-									 extern int func(...); 
-									 main(){}");
-
-		my $checkconst=!Compile("extern int func(const int * a);
-										extern int func(int * a);
-										main(){ }");
-
-		my $checksign=!Compile("extern int func(int a);
-										extern int func(unsigned int a);
-										main(){ }");
-
-		$checkreturnnil=!Compile("extern func(int a);
-										extern void func(int a);
-										main(){ }");
+		my $checknumber=!Compile("
+extern int func(int a,int b); 
+extern int func(int a,int b,int c); 
+main(){}");
+		$checkreturn=!Compile("
+extern int func(int a,int b); 
+extern long func(int a,int b); 
+main(){}");
+		my $checketc=   !Compile("
+extern int func(int a,int b); 
+extern long func(int a,...); 
+main(){}");
+		my $checknumberetc=!Compile("
+extern int func(int a,int b); 
+extern int func(int a,int b,...); 
+main(){}");
+		my $checketcnumber=!Compile("
+extern int func(int a,int b,int c,...); 
+extern int func(int a,int b,...); 
+main(){}");
+		my $checkargtypes=!Compile("
+extern int func(int a); 
+extern int func(long a); 
+main(){}");
+		my $checkargsnil=!Compile("
+extern int func(); 
+extern int func(int a,int b,int c); 
+main(){}");
+		$checknilargs=!Compile("
+extern int func(int a,int b,int c);
+extern int func(); 
+main(){}");
+		my $checkargsniletc=!Compile("
+extern int func(...); 
+extern int func(int a,int b,int c); 
+main(){}");
+		$checkniletcargs=!Compile("
+extern int func(int a,int b,int c); 
+extern int func(...); 
+main(){}");
+
+		my $checkconst=!Compile("
+extern int func(const int * a);
+extern int func(int * a);
+main(){ }");
+
+		my $checksign=!Compile("
+extern int func(int a);
+extern int func(unsigned int a);
+main(){ }");
+
+		$checkreturnnil=!Compile("
+extern func(int a);
+extern void func(int a);
+main(){ }");
 
 		@types = sort grep(Compile("main(){$_ a;}"),
 			"void","int","long int","unsigned int","unsigned long int","long long int",
@@ -765,11 +778,13 @@ sub DeducePrototype {
 			for ($i=0;$i<=$#types;$i++) {
 				for ($j=$i+1;$j<=$#types;$j++) {
 					next if $j==$i;
-					if(Compile("extern void func($types[$i]);
-										  extern void func($types[$j]); main(){}")) {
-						print "Removing type $types[$j] because it equals $types[$i]\n";
-						splice(@types,$j,1);
-						$j--;
+					if(Compile("
+extern void func($types[$i]);
+extern void func($types[$j]);
+main(){}")) {
+                                            print "Removing type $types[$j] because it equals $types[$i]\n";
+                                            splice(@types,$j,1);
+                                            $j--;
 					}
 				}
 			}
@@ -777,8 +792,10 @@ sub DeducePrototype {
 			for ($i=0;$i<=$#types;$i++) {
 				for ($j=$i+1;$j<=$#types;$j++) {
 					next if $j==$i;
-					if(Compile("$types[$i] func(void);
-										  extern $types[$j] func(void); main(){}")) {
+					if(Compile("
+$types[$i] func(void);
+extern $types[$j] func(void);
+main(){}")) {
 						print "Removing type $types[$j] because it equals $types[$i]\n";
 						splice(@types,$j,1);
 						$j--;
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/MANIFEST
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/MANIFEST,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 MANIFEST
--- gnu/usr.bin/perl/cpan/Term-ReadKey/MANIFEST	7 May 2016 16:03:09 -0000	1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/MANIFEST	26 Feb 2020 02:24:43 -0000
@@ -3,7 +3,7 @@ MANIFEST
 MANIFEST.SKIP
 Makefile.PL
 README
-ReadKey.pm
+ReadKey.pm.PL
 ReadKey.xs
 genchars.pl
 ppport.h
@@ -11,5 +11,6 @@ example/test.pl
 t/01_basic.t
 t/02_terminal_functions.t
 Changes
-META.yml                                Module meta-data (added by MakeMaker)
+META.yml                                 Module YAML meta-data (added by MakeMaker)
 META.json                                Module JSON meta-data (added by MakeMaker)
+SIGNATURE                                Public-key signature (added by MakeMaker)
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/MANIFEST.SKIP
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/MANIFEST.SKIP,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 MANIFEST.SKIP
--- gnu/usr.bin/perl/cpan/Term-ReadKey/MANIFEST.SKIP	7 May 2016 16:03:08 -0000	1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/MANIFEST.SKIP	26 Feb 2020 02:24:43 -0000
@@ -1,3 +1,4 @@
 .gitignore
 .travis.yml
 .git
+.gz
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/META.json
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/META.json,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 META.json
--- gnu/usr.bin/perl/cpan/Term-ReadKey/META.json	7 May 2016 16:03:09 -0000	1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/META.json	26 Feb 2020 02:24:43 -0000
@@ -1,23 +1,20 @@
 {
-   "abstract" : "unknown",
+   "abstract" : "Change terminal modes, and perform non-blocking reads.",
    "author" : [
-      "unknown"
+      "Kenneth Albanowski",
+      "Jonathan Stowe"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142060",
+   "generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.150010",
    "license" : [
       "perl_5"
    ],
    "meta-spec" : {
       "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
-      "version" : "2"
+      "version" : 2
    },
    "name" : "TermReadKey",
    "no_index" : {
-      "directory" : [
-         "t",
-         "inc"
-      ],
       "file" : [
          "Configure.pm"
       ],
@@ -28,15 +25,21 @@
    "prereqs" : {
       "build" : {
          "requires" : {
-            "ExtUtils::MakeMaker" : "0"
+            "ExtUtils::MakeMaker" : "6.58"
          }
       },
       "configure" : {
          "requires" : {
-            "ExtUtils::MakeMaker" : "0"
+            "ExtUtils::MakeMaker" : "6.58"
          }
       }
    },
+   "provides" : {
+      "Term::ReadKey" : {
+         "file" : "ReadKey.pm.PL",
+         "version" : "2.38"
+      }
+   },
    "release_status" : "stable",
    "resources" : {
       "repository" : {
@@ -45,5 +48,6 @@
          "web" : "https://github.com/jonathanstowe/TermReadKey"
       }
    },
-   "version" : "2.33"
+   "version" : "2.38",
+   "x_serialization_backend" : "JSON::PP version 2.97001"
 }
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/META.yml
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/META.yml,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 META.yml
--- gnu/usr.bin/perl/cpan/Term-ReadKey/META.yml	7 May 2016 16:03:08 -0000	1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/META.yml	26 Feb 2020 02:24:43 -0000
@@ -1,26 +1,29 @@
 ---
-abstract: unknown
+abstract: 'Change terminal modes, and perform non-blocking reads.'
 author:
-  - unknown
+  - 'Kenneth Albanowski'
+  - 'Jonathan Stowe'
 build_requires:
-  ExtUtils::MakeMaker: '0'
+  ExtUtils::MakeMaker: '6.58'
 configure_requires:
-  ExtUtils::MakeMaker: '0'
+  ExtUtils::MakeMaker: '6.58'
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142060'
+generated_by: 'ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.150010'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
   version: '1.4'
 name: TermReadKey
 no_index:
-  directory:
-    - t
-    - inc
   file:
     - Configure.pm
   package:
     - Configure
+provides:
+  Term::ReadKey:
+    file: ReadKey.pm.PL
+    version: '2.38'
 resources:
   repository: https://github.com/jonathanstowe/TermReadKey.git
-version: '2.33'
+version: '2.38'
+x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile.PL
--- gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL	3 Jul 2016 01:07:58 -0000	1.3
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/Makefile.PL	26 Feb 2020 02:24:43 -0000
@@ -1,20 +1,37 @@
+use strict;
+use warnings;
 
 use ExtUtils::MakeMaker;
 use Carp;
 
-my $mm_version = $ExtUtils::MakeMaker::VERSION || $ExtUtils::MakeMaker::Version;
-if( $mm_version < 3.5 ) {
-        croak("Sorry, but MakeMaker 3.5 or better is needed to build this package.");
+my $mm_version = $ExtUtils::MakeMaker::VERSION;
+if ( $mm_version < 6.58 ) {
+    croak("Sorry, but MakeMaker 6.58 or better is needed to build this package.");
 }
 
-&WriteMakefile(
-	NAME         => 'Term::ReadKey',
-	DISTNAME     => 'TermReadKey',
-    LICENSE      => 'perl',
-    META_MERGE => {
+WriteMakefile(
+    NAME       => 'Term::ReadKey',
+    DISTNAME   => 'TermReadKey',
+    LICENSE    => 'perl',
+    ABSTRACT   => 'Change terminal modes, and perform non-blocking reads.',
+    AUTHOR     => ['Kenneth Albanowski','Jonathan Stowe'],
+    CONFIGURE_REQUIRES => {
+        'ExtUtils::MakeMaker' => 6.58,
+    },
+    BUILD_REQUIRES  =>  {
+        'ExtUtils::MakeMaker' => 6.58,
+    },
+    META_ADD => { # needs to _ADD because I want over-ride the dynamic_config
+        dynamic_config => 1,
         no_index  => {
-            file  => [qw(Configure.pm)],
-            package  => [qw(Configure)],
+            file     => [ qw(Configure.pm) ],
+            package  => [ qw(Configure) ],
+        },
+        provides  => {
+            'Term::ReadKey' => {
+                file    => 'ReadKey.pm.PL',
+                version => '2.38',
+            },
         },
         'meta-spec' => { version => 2 },
         resources => {
@@ -25,62 +42,62 @@ if( $mm_version < 3.5 ) {
             },
         },
     },
-	VERSION_FROM => 'ReadKey.pm',
-        XSPROTOARG   => '-noprototypes',
-	PM => { "ReadKey.pm" => '$(INST_LIBDIR)/ReadKey.pm'},
-
-	'dist' => { COMPRESS=>"gzip", SUFFIX=>"gz" },
-  "test" => {
-    "TESTS" => "t/*.t"
-  }
-
-# Uncomment these to allow testing of sgtty under Linux. Not needed normally.
-#	INC => "-I/usr/include/bsd",
-#	LIBS => "-lbsd"
+    VERSION_FROM    => 'ReadKey.pm.PL',
+    XSPROTOARG      => '-noprototypes',
+    PL_FILES	    => { 'ReadKey.pm.PL' => 'ReadKey.pm' },
+    PM              => { 'ReadKey.pm' => '$(INST_ARCHLIBDIR)/ReadKey.pm' },
+    clean           => { FILES => 'cchars.h ReadKey.pm' },
+    SIGN            => 1,
+
+    # Uncomment these to allow testing of sgtty under Linux. Not needed normally.
+    # INC => "-I/usr/include/bsd",
+    # LIBS => "-lbsd"
 );
 
-sub MY::realclean {
-	my $self = shift;
-	$_ = $self->MM::realclean();
-	s/\t/\trm -f cchars.h\n\t/;
-	$_;
-}
-
 sub MY::top_targets {
-	my $self = shift;
-	$_ = $self->MM::top_targets();
-	$_ .= "
+    my $self = shift;
+    $_ = $self->MM::top_targets();
+    # ensure that the XS is built before the PM
+    s/pure_all :: config pm_to_blib (.* )linkext/pure_all :: config linkext pm_to_blib $1/;
+
+    $_ .= "
 
 sgtty cchars.h: genchars.pl
-	\$(PERL) -I. -I\$(PERL_LIB) genchars.pl
+	\$(PERLRUN) genchars.pl
 
 distcc: genchars.pl
-	\$(PERL) -I. -I\$(PERL_LIB) genchars.pl dist
+	\$(PERLRUN) genchars.pl dist
 
-ReadKey.c: cchars.h
+ReadKey\$(OBJ_EXT): ReadKey.c cchars.h
 
 ";
-	$_;
+    return $_;
+}
 
+# The template needs DynaLoader. don't use miniperl (dual-life only)
+sub MY::processPL {
+    my $self = shift;
+    $_ = $self->MM::processPL();
+    s/ReadKey.pm :: ReadKey.pm.PL/ReadKey.pm :: ReadKey.pm.PL dynamic/;
+    s/\$\(PERLRUN\)/\$(FULLPERLRUNINST)/;
+    return $_;
 }
 
 sub MY::test {
-	my $self = shift;
-	$_ = $self->MM::test();
-	s#example/test.pl#-w example/test.pl#;
-	$_;
+    my $self = shift;
+    $_ = $self->MM::test();
+    s#example/test.pl#-w example/test.pl#;
+    return $_;
 }
 
-sub MY::test_interactive
-{
+sub MY::test_interactive {
     return "Fooo";
 }
 
-sub MY::pure_site_install
-{
+sub MY::pure_site_install {
     my $self = shift;
     my $new = $self->MM::test();
 
-    $new .= "\n\t./register_module Your::Module";
+    $new .= "\n\t./register_module Term::ReadKey";
     return $new;
 }
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/README
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/README,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 README
--- gnu/usr.bin/perl/cpan/Term-ReadKey/README	7 May 2016 16:03:09 -0000	1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/README	26 Feb 2020 02:24:43 -0000
@@ -1,7 +1,7 @@
- Term::ReadKey 2.33 - Change terminal modes, and perform non-blocking reads.
+ Term::ReadKey 2.36 - Change terminal modes, and perform non-blocking reads.
 
  Copyright (C) 1994-1999 Kenneth Albanowski.
-               2001-2015 Jonathan Stowe and others
+               2001-2016 Jonathan Stowe and others
 
 This package is dual licensed.  You can either choose to license it under
 the original terms which were:
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.pm.PL
===================================================================
RCS file: gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.pm.PL
diff -N gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.pm.PL
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.pm.PL	26 Feb 2020 02:24:43 -0000
@@ -0,0 +1,733 @@
+#! perl
+
+package Term::ReadKey;
+
+# This also needs to be adjusted in the generated code below
+# and in the Makefile.PL
+use vars qw($VERSION);
+
+$VERSION = '2.38';
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use File::Spec;
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate.  Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries.  Thus you write
+#  $startperl
+# to ensure Configure will look for $Config{startperl}.
+# Wanted:  $archlibexp
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+my $origdir = cwd;
+my $dir = dirname($0);
+chdir $dir;
+my $file = 'ReadKey.pm';
+
+open OUT, ">", $file or die "Can't create $file: $!";
+
+print "Creating $file\n";
+
+print OUT <<'!FIRSTPART';
+# -*- buffer-read-only: t -*-
+#
+# This file is auto-generated. ***ANY*** changes here will be lost
+#
+package Term::ReadKey;
+
+use strict;
+use warnings;
+
+=head1 NAME
+
+Term::ReadKey - A perl module for simple terminal control
+
+=head1 SYNOPSIS
+
+    use Term::ReadKey;
+    ReadMode 4; # Turn off controls keys
+    while (not defined ($key = ReadKey(-1))) {
+        # No key yet
+    }
+    print "Get key $key\n";
+    ReadMode 0; # Reset tty mode before exiting
+
+=head1 DESCRIPTION
+
+Term::ReadKey is a compiled perl module dedicated to providing simple
+control over terminal driver modes (cbreak, raw, cooked, etc.,) support for
+non-blocking reads, if the architecture allows, and some generalized handy
+functions for working with terminals. One of the main goals is to have the
+functions as portable as possible, so you can just plug in "use
+Term::ReadKey" on any architecture and have a good likelihood of it working.
+
+Version 2.30.01:
+Added handling of arrows, page up/down, home/end, insert/delete keys 
+under Win32. These keys emit xterm-compatible sequences.
+Works with Term::ReadLine::Perl.
+
+=over 4
+
+=item ReadMode MODE [, Filehandle]
+
+Takes an integer argument or a string synonym (case insensitive), which
+can currently be one of the following values:
+
+    INT   SYNONYM    DESCRIPTION
+
+    0    'restore'   Restore original settings.
+
+    1    'normal'    Change to what is commonly the default mode,
+                     echo on, buffered, signals enabled, Xon/Xoff
+                     possibly enabled, and 8-bit mode possibly disabled.
+
+    2    'noecho'    Same as 1, just with echo off. Nice for
+                     reading passwords.
+
+    3    'cbreak'    Echo off, unbuffered, signals enabled, Xon/Xoff
+                     possibly enabled, and 8-bit mode possibly enabled.
+
+    4    'raw'       Echo off, unbuffered, signals disabled, Xon/Xoff
+                     disabled, and 8-bit mode possibly disabled.
+
+    5    'ultra-raw' Echo off, unbuffered, signals disabled, Xon/Xoff 
+                     disabled, 8-bit mode enabled if parity permits,
+                     and CR to CR/LF translation turned off. 
+
+
+These functions are automatically applied to the STDIN handle if no
+other handle is supplied. Modes 0 and 5 have some special properties
+worth mentioning: not only will mode 0 restore original settings, but it
+cause the next ReadMode call to save a new set of default settings. Mode
+5 is similar to mode 4, except no CR/LF translation is performed, and if
+possible, parity will be disabled (only if not being used by the terminal,
+however. It is no different from mode 4 under Windows.)
+
+If you just need to read a key at a time, then modes 3 or 4 are probably
+sufficient. Mode 4 is a tad more flexible, but needs a bit more work to
+control. If you use ReadMode 3, then you should install a SIGINT or END
+handler to reset the terminal (via ReadMode 0) if the user aborts the
+program via C<^C>. (For any mode, an END handler consisting of "ReadMode 0"
+is actually a good idea.)
+
+If you are executing another program that may be changing the terminal mode,
+you will either want to say
+
+    ReadMode 1;             # same as ReadMode 'normal'
+    system('someprogram');
+    ReadMode 1;
+
+which resets the settings after the program has run, or:
+
+    $somemode=1;
+    ReadMode 0;             # same as ReadMode 'restore'
+    system('someprogram');
+    ReadMode 1;
+
+which records any changes the program may have made, before resetting the
+mode.
+
+=item ReadKey MODE [, Filehandle]
+
+Takes an integer argument, which can currently be one of the following 
+values:
+
+    0    Perform a normal read using getc
+    -1   Perform a non-blocked read
+    >0	 Perform a timed read
+
+If the filehandle is not supplied, it will default to STDIN. If there is
+nothing waiting in the buffer during a non-blocked read, then undef will be
+returned.  In most situations, you will probably want to use C<ReadKey -1>.
+
+I<NOTE> that if the OS does not provide any known mechanism for non-blocking
+reads, then a C<ReadKey -1> can die with a fatal error. This will hopefully
+not be common.
+
+If MODE is greater then zero, then ReadKey will use it as a timeout value in
+seconds (fractional seconds are allowed), and won't return C<undef> until
+that time expires.
+
+I<NOTE>, again, that some OS's may not support this timeout behaviour.
+
+If MODE is less then zero, then this is treated as a timeout
+of zero, and thus will return immediately if no character is waiting. A MODE
+of zero, however, will act like a normal getc.
+
+I<NOTE>, there are currently some limitations with this call under Windows.
+It may be possible that non-blocking reads will fail when reading repeating
+keys from more then one console.
+
+
+=item ReadLine MODE [, Filehandle]
+
+Takes an integer argument, which can currently be one of the following 
+values:
+
+    0    Perform a normal read using scalar(<FileHandle>)
+    -1   Perform a non-blocked read
+    >0	 Perform a timed read
+
+If there is nothing waiting in the buffer during a non-blocked read, then
+undef will be returned.
+
+I<NOTE>, that if the OS does not provide any known mechanism for
+non-blocking reads, then a C<ReadLine 1> can die with a fatal
+error. This will hopefully not be common.
+
+I<NOTE> that a non-blocking test is only performed for the first character
+in the line, not the entire line.  This call will probably B<not> do what
+you assume, especially with C<ReadMode> MODE values higher then 1. For
+example, pressing Space and then Backspace would appear to leave you
+where you started, but any timeouts would now be suspended.
+
+B<This call is currently not available under Windows>.
+
+=item GetTerminalSize [Filehandle]
+
+Returns either an empty array if this operation is unsupported, or a four
+element array containing: the width of the terminal in characters, the
+height of the terminal in character, the width in pixels, and the height in
+pixels. (The pixel size will only be valid in some environments.)
+
+I<NOTE>, under Windows, this function must be called with an B<output>
+filehandle, such as C<STDOUT>, or a handle opened to C<CONOUT$>.
+
+=item SetTerminalSize WIDTH,HEIGHT,XPIX,YPIX [, Filehandle]
+
+Return -1 on failure, 0 otherwise.
+
+I<NOTE> that this terminal size is only for B<informative> value, and
+changing the size via this mechanism will B<not> change the size of
+the screen. For example, XTerm uses a call like this when
+it resizes the screen. If any of the new measurements vary from the old, the
+OS will probably send a SIGWINCH signal to anything reading that tty or pty.
+
+B<This call does not work under Windows>.
+
+=item GetSpeed [, Filehandle]
+
+Returns either an empty array if the operation is unsupported, or a two
+value array containing the terminal in and out speeds, in B<decimal>. E.g,
+an in speed of 9600 baud and an out speed of 4800 baud would be returned as
+(9600,4800). Note that currently the in and out speeds will always be
+identical in some OS's.
+
+B<No speeds are reported under Windows>.
+
+=item GetControlChars [, Filehandle]
+
+Returns an array containing key/value pairs suitable for a hash. The pairs
+consist of a key, the name of the control character/signal, and the value
+of that character, as a single character.
+
+B<This call does nothing under Windows>.
+
+Each key will be an entry from the following list:
+
+	DISCARD
+	DSUSPEND
+	EOF
+	EOL
+	EOL2
+	ERASE
+	ERASEWORD
+	INTERRUPT
+	KILL
+	MIN
+	QUIT
+	QUOTENEXT
+	REPRINT
+	START
+	STATUS
+	STOP
+	SUSPEND
+	SWITCH
+	TIME
+
+Thus, the following will always return the current interrupt character,
+regardless of platform.
+
+	%keys = GetControlChars;
+	$int = $keys{INTERRUPT};
+
+=item SetControlChars [, Filehandle]
+
+Takes an array containing key/value pairs, as a hash will produce. The pairs
+should consist of a key that is the name of a legal control
+character/signal, and the value should be either a single character, or a
+number in the range 0-255. SetControlChars will die with a runtime error if
+an invalid character name is passed or there is an error changing the
+settings. The list of valid names is easily available via
+
+	%cchars = GetControlChars();
+	@cnames = keys %cchars;
+
+B<This call does nothing under Windows>.
+
+=back
+
+=head1 AUTHOR
+
+Kenneth Albanowski <kjahds@kjahds.com>
+
+Currently maintained by Jonathan Stowe <jns@gellyfish.co.uk>
+
+=head1 SUPPORT
+
+The code is maintained at 
+
+     https://github.com/jonathanstowe/TermReadKey
+
+Please feel free to fork and suggest patches.
+
+
+=head1 LICENSE
+
+Prior to the 2.31 release the license statement was:
+
+ Copyright (C) 1994-1999 Kenneth Albanowski.
+               2001-2005 Jonathan Stowe and others
+
+               Unlimited distribution and/or modification is allowed as long as this
+               copyright notice remains intact.
+
+And was only stated in the README file.
+
+Because I believe the original author's intent was to be more open than the
+other commonly used licenses I would like to leave that in place. However if
+you or your lawyers require something with some more words you can optionally
+choose to license this under the standard Perl license:
+
+      This module is free software; you can redistribute it and/or modify it
+      under the terms of the Artistic License. For details, see the full
+      text of the license in the file "Artistic" that should have been provided
+      with the version of perl you are using.
+
+      This program is distributed in the hope that it will be useful, but
+      without any warranty; without even the implied warranty of merchantability
+      or fitness for a particular purpose.
+
+
+=cut
+
+use vars qw($VERSION);
+
+$VERSION = '2.38';
+
+require Exporter;
+require DynaLoader;
+
+use vars qw(@ISA @EXPORT_OK @EXPORT);
+
+@ISA = qw(Exporter DynaLoader);
+
+# Items to export into callers namespace by default
+# (move infrequently used names to @EXPORT_OK below)
+
+@EXPORT = qw(
+  ReadKey
+  ReadMode
+  ReadLine
+  GetTerminalSize
+  SetTerminalSize
+  GetSpeed
+  GetControlChars
+  SetControlChars
+);
+
+@EXPORT_OK = qw();
+
+bootstrap Term::ReadKey;
+
+# Should we use LINES and COLUMNS to try and get the terminal size?
+# Change this to zero if you have systems where these are commonly
+# set to erroneous values. (But if either are near zero, they won't be
+# used anyhow.)
+
+use vars qw($UseEnv $CurrentMode %modes);
+
+$UseEnv = 1;
+
+$CurrentMode = 0;
+
+%modes = (                            # lowercase is canonical
+    original    => 0,
+    restore     => 0,
+    normal      => 1,
+    noecho      => 2,
+    cbreak      => 3,
+    raw         => 4,
+    'ultra-raw' => 5
+);
+
+# reduce Carp memory footprint, only load when needed
+sub croak { require Carp; goto &Carp::croak; }
+sub carp  { require Carp; goto &Carp::carp; }
+
+sub ReadMode
+{
+    my $mode = $modes{ lc $_[0] };  # lowercase is canonical
+    my $fh = normalizehandle( ( @_ > 1 ? $_[1] : \*STDIN ) );
+
+    if ( defined($mode) )    { $CurrentMode = $mode }
+    elsif ( $_[0] =~ /^\d/ ) { $CurrentMode = $_[0] }
+    else                     { croak("Unknown terminal mode `$_[0]'"); }
+
+    SetReadMode($CurrentMode, $fh);
+}
+
+sub normalizehandle
+{
+    my ($file) = @_; # allows fake signature optimization
+
+    no strict;
+    #	print "Handle = $file\n";
+    if ( ref($file) ) { return $file; }    # Reference is fine
+
+    #	if ($file =~ /^\*/) { return $file; } # Type glob is good
+    if ( ref( \$file ) eq 'GLOB' ) { return $file; }    # Glob is good
+
+    #	print "Caller = ",(caller(1))[0],"\n";
+    return \*{ ( ( caller(1) )[0] ) . "::$file" };
+}
+
+sub GetTerminalSize
+{
+    my $file = normalizehandle( ( @_ > 0 ? $_[0] : \*STDOUT ) );
+
+    my (@results, @fail);
+
+    if ( &termsizeoptions() & 1 )                       # VIO
+    {
+        @results = GetTermSizeVIO($file);
+        push( @fail, "VIOGetMode call" );
+    }
+    elsif ( &termsizeoptions() & 2 )                    # GWINSZ
+    {
+        @results = GetTermSizeGWINSZ($file);
+        push( @fail, "TIOCGWINSZ ioctl" );
+    }
+    elsif ( &termsizeoptions() & 4 )                    # GSIZE
+    {
+        @results = GetTermSizeGSIZE($file);
+        push( @fail, "TIOCGSIZE ioctl" );
+    }
+    elsif ( &termsizeoptions() & 8 )                    # WIN32
+    {
+        @results = GetTermSizeWin32($file);
+        push( @fail, "Win32 GetConsoleScreenBufferInfo call" );
+    }
+    else
+    {
+        @results = ();
+    }
+
+    if ( @results < 4 and $UseEnv )
+    {
+        my ($C) = defined( $ENV{COLUMNS} ) ? $ENV{COLUMNS} : 0;
+        my ($L) = defined( $ENV{LINES} )   ? $ENV{LINES}   : 0;
+        if ( ( $C >= 2 ) and ( $L >= 2 ) )
+        {
+            @results = ( $C + 0, $L + 0, 0, 0 );
+        }
+        push( @fail, "COLUMNS and LINES environment variables" );
+    }
+
+    if ( @results < 4 && $^O ne 'MSWin32')
+    {
+        my ($prog) = "resize";
+
+        # Workaround for Solaris path silliness
+        if ( -f "/usr/openwin/bin/resize" ) {
+            $prog = "/usr/openwin/bin/resize";
+        }
+
+        my ($resize) = scalar(`$prog 2>/dev/null`);
+        if (defined $resize
+            and (  $resize =~ /COLUMNS\s*=\s*(\d+)/
+                or $resize =~ /setenv\s+COLUMNS\s+'?(\d+)/ )
+           )
+        {
+            $results[0] = $1;
+            if (   $resize =~ /LINES\s*=\s*(\d+)/
+                or $resize =~ /setenv\s+LINES\s+'?(\d+)/ )
+            {
+                $results[1] = $1;
+                @results[ 2, 3 ] = ( 0, 0 );
+            }
+            else
+            {
+                @results = ();
+            }
+        }
+        else
+        {
+            @results = ();
+        }
+        push( @fail, "resize program" );
+    }
+
+    if ( @results < 4 && $^O ne 'MSWin32' )
+    {
+        my ($prog) = "stty size";
+
+        my ($stty) = scalar(`$prog 2>/dev/null`);
+        if (defined $stty
+            and (  $stty =~ /(\d+) (\d+)/ )
+           )
+        {
+            $results[0] = $2;
+            $results[1] = $1;
+            @results[ 2, 3 ] = ( 0, 0 );
+        }
+        else
+        {
+            @results = ();
+        }
+        push( @fail, "stty program" );
+    }
+
+    if ( @results != 4 )
+    {
+        carp("Unable to get Terminal Size."
+             . join( "", map( " The $_ didn't work.", @fail ) ));
+	return undef;
+    }
+
+    @results;
+}
+
+!FIRSTPART
+
+close OUT;
+# preload the XS module needed for the blockoptions() expansions below
+# does not work with miniperl
+package Term::ReadKey;
+require DynaLoader;
+our @ISA = qw(DynaLoader);
+
+print "Bootstrapping the XS for blockoptions: ";
+bootstrap Term::ReadKey or die;
+print blockoptions()."\n";
+
+open OUT, ">>", $file or die "Can't append to $file: $!";
+print OUT "# blockoptions: \n";
+if ( &blockoptions() & 1 )    # Use nodelay
+{
+    print OUT "#nodelay\n";
+    if ( &blockoptions() & 2 )    #poll
+    {
+        print OUT <<'!NO!SUBS!';
+# poll
+sub ReadKey {
+  my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+  if (defined $_[0] && $_[0] > 0) {
+      if ($_[0]) {
+          return undef if &pollfile($File,$_[0]) == 0;
+      }
+  }
+  if (defined $_[0] && $_[0] < 0) { &setnodelay($File,1); }
+  my $value = getc $File;
+  if (defined $_[0] && $_[0] < 0) { &setnodelay($File,0); }
+  $value;
+}
+sub ReadLine {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if (defined $_[0] && $_[0] > 0) {
+        if ($_[0]) {
+            return undef if &pollfile($File,$_[0]) == 0;
+        }
+    }
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,1) };
+    my $value = scalar(<$File>);
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,0) };
+    $value;
+}
+!NO!SUBS!
+
+    }
+    elsif ( &blockoptions() & 4 )    #select
+    {
+        print OUT <<'!NO!SUBS!';
+#select
+sub ReadKey {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if (defined $_[0] && $_[0] > 0) {
+        if ($_[0]) { return undef if &selectfile($File,$_[0]) == 0 }
+    }
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,1); }
+    my $value = getc $File;
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,0); }
+    $value;
+}
+sub ReadLine {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if (defined $_[0] && $_[0] > 0) {
+        if ($_[0]) { return undef if &selectfile($File,$_[0]) == 0 }
+    }
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,1) };
+    my $value = scalar(<$File>);
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,0) };
+    $value;
+}
+!NO!SUBS!
+
+    }
+    else
+    {    #nothing
+        print OUT <<'!NO!SUBS!';
+sub ReadKey {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if (defined $_[0] && $_[0] > 0) {
+    	# Nothing better seems to exist, so I just use time-of-day
+    	# to timeout the read. This isn't very exact, though.
+    	$starttime = time;
+    	$endtime = $starttime + $_[0];
+        &setnodelay($File,1);
+        my $value;
+    	while (time < $endtime) { # This won't catch wraparound!
+            $value = getc $File;
+            last if defined($value);
+    	}
+        &setnodelay($File,0);
+        return $value;
+    }
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,1); }
+    my $value = getc $File;
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,0); }
+    $value;
+}
+sub ReadLine {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if (defined $_[0] && $_[0] > 0) {
+    	# Nothing better seems to exist, so I just use time-of-day
+    	# to timeout the read. This isn't very exact, though.
+    	$starttime = time;
+    	$endtime = $starttime + $_[0];
+        &setnodelay($File,1);
+        my $value;
+    	while (time < $endtime) { # This won't catch wraparound!
+            $value = scalar(<$File>);
+            last if defined($value);
+    	}
+        &setnodelay($File,0);
+        return $value;
+    }
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,1) };
+    my $value = scalar(<$File>);
+    if (defined $_[0] && $_[0] < 0) { &setnodelay($File,0) };
+    $value;
+}
+!NO!SUBS!
+
+    }
+}
+else {
+    print OUT "#no nodelay\n";
+
+    if ( &blockoptions() & 2 )    # Use poll
+    {
+        print OUT <<'!NO!SUBS!';
+#poll
+sub ReadKey {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if (defined $_[0] && $_[0] != 0) {
+        return undef if &pollfile($File,$_[0]) == 0
+    }
+    getc $File;
+}
+sub ReadLine {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if (defined $_[0] && $_[0] != 0 ) {
+        return undef if &pollfile($File,$_[0]) == 0;
+    }
+    scalar(<$File>);
+}
+!NO!SUBS!
+
+    }
+    elsif ( &blockoptions() & 4 )    # Use select
+    {
+        print OUT <<'!NO!SUBS!';
+#select
+sub ReadKey {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if (defined $_[0] && $_[0] != 0) {
+        return undef if &selectfile($File,$_[0]) == 0
+    }
+    getc $File;
+}
+sub ReadLine {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if (defined $_[0] && $_[0] != 0) {
+        return undef if &selectfile($File,$_[0]) == 0;
+    }
+    scalar(<$File>);
+}
+!NO!SUBS!
+
+    }
+    elsif ( &blockoptions() & 8 )    # Use Win32
+    {
+        print OUT <<'!NO!SUBS!';
+#Win32
+sub ReadKey {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if ($_[0] || $CurrentMode >= 3) {
+        Win32PeekChar($File, $_[0]);
+    } else {
+	getc $File;
+    }
+    #if ($_[0]!=0) {return undef if !Win32PeekChar($File, $_[0])};
+    #getc $File;
+}
+sub ReadLine {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    #if ($_[0]!=0) {return undef if !Win32PeekChar($File, $_[0])};
+    #scalar(<$File>);
+    if ($_[0]) {
+        croak("Non-blocking ReadLine is not supported on this architecture")
+    }
+    scalar(<$File>);
+}
+!NO!SUBS!
+
+    }
+    else
+    {
+        print OUT <<'!NO!SUBS!';
+sub ReadKey {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if ($_[0]) {
+        croak("Non-blocking ReadKey is not supported on this architecture")
+    }
+    getc $File;
+}
+sub ReadLine {
+    my $File = normalizehandle((@_>1?$_[1]:\*STDIN));
+    if ($_[0]) {
+      croak("Non-blocking ReadLine is not supported on this architecture")
+    }
+    scalar(<$File>);
+}
+!NO!SUBS!
+
+    }
+}
+
+print OUT <<'EOF';
+1;
+# ex: set ro:
+EOF
+
+close OUT;
+if (-s $file < 1000) {
+    warn "WARNING: $file probably too small";
+} else {
+    print "Done\n";
+}
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs,v
retrieving revision 1.2
diff -u -p -r1.2 ReadKey.xs
--- gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs	3 Jul 2016 01:07:58 -0000	1.2
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/ReadKey.xs	26 Feb 2020 02:24:43 -0000
@@ -1,5 +1,6 @@
 /* -*-C-*- */
 
+#define PERL_NO_GET_CONTEXT     /* we want efficiency */
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
@@ -16,7 +17,10 @@
  Written by Kenneth Albanowski on Thu Oct  6 11:42:20 EDT 1994
  Contact at kjahds@kjahds.com or CIS:70705,126
 
- Maintained by Jonathan Stowe <jns@gellyfish.com>
+ Maintained by Jonathan Stowe <jns@gellyfish.co.uk>
+
+ The below captures the history prior to it being in full time version
+ control:
 
  $Id: ReadKey.xs,v 2.22 2005/01/11 21:15:17 jonathan Exp $
 
@@ -375,41 +379,41 @@
 #include "cchars.h"
 
 
-int GetTermSizeVIO _((PerlIO * file,
+STATIC int GetTermSizeVIO _((pTHX_ PerlIO * file,
 	int * retwidth, int * retheight, 
 	int * xpix, int * ypix));
 
-int GetTermSizeGWINSZ _((PerlIO * file,
+STATIC int GetTermSizeGWINSZ _((pTHX_ PerlIO * file,
 	int * retwidth, int * retheight, 
 	int * xpix, int * ypix));
 
-int GetTermSizeGSIZE _((PerlIO * file,
+STATIC int GetTermSizeGSIZE _((pTHX_ PerlIO * file,
 	int * retwidth, int * retheight, 
 	int * xpix, int * ypix));
 
-int GetTermSizeWin32 _((PerlIO * file,
+STATIC int GetTermSizeWin32 _((pTHX_ PerlIO * file,
 	int * retwidth, int * retheight,
 	int * xpix, int * ypix));
 
-int SetTerminalSize _((PerlIO * file,
+STATIC int SetTerminalSize _((pTHX_ PerlIO * file,
 	int width, int height, 
 	int xpix, int ypix));
 
-void ReadMode _((PerlIO * file,int mode));
+STATIC void ReadMode _((pTHX_ PerlIO * file,int mode));
 
-int pollfile _((PerlIO * file, double delay));
+STATIC int pollfile _((pTHX_ PerlIO * file, double delay));
 
-int setnodelay _((PerlIO * file, int mode));
+STATIC int setnodelay _((pTHX_ PerlIO * file, int mode));
 
-int selectfile _((PerlIO * file, double delay));
+STATIC int selectfile _((pTHX_ PerlIO * file, double delay));
 
-int Win32PeekChar _((PerlIO * file, double delay, char * key));
+STATIC int Win32PeekChar _((pTHX_ PerlIO * file, double delay, char * key));
 
-int getspeed _((PerlIO * file, I32 *in, I32 * out ));
+STATIC int getspeed _((pTHX_ PerlIO * file, I32 *in, I32 * out ));
 
 
 #ifdef VIOMODE
-int GetTermSizeVIO(PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
+int GetTermSizeVIO(pTHX_ PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
 {
 	/*int handle=PerlIO_fileno(file);
 
@@ -431,7 +435,7 @@ int GetTermSizeVIO(PerlIO *file,int *ret
         return 0;
 }
 #else
-int GetTermSizeVIO(PerlIO *file,int * retwidth,int *retheight, int *xpix,int *ypix)
+int GetTermSizeVIO(pTHX_ PerlIO *file,int * retwidth,int *retheight, int *xpix,int *ypix)
 {
 	croak("TermSizeVIO is not implemented on this architecture");
         return 0;
@@ -440,7 +444,7 @@ int GetTermSizeVIO(PerlIO *file,int * re
 
 
 #if defined(TIOCGWINSZ) && !defined(DONT_USE_GWINSZ)
-int GetTermSizeGWINSZ(PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
+int GetTermSizeGWINSZ(pTHX_ PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
 {
 	int handle=PerlIO_fileno(file);
 	struct winsize w;
@@ -455,7 +459,7 @@ int GetTermSizeGWINSZ(PerlIO *file,int *
 
 }
 #else
-int GetTermSizeGWINSZ(PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
+int GetTermSizeGWINSZ(pTHX_ PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
 {
 	croak("TermSizeGWINSZ is not implemented on this architecture");
         return 0;
@@ -463,7 +467,7 @@ int GetTermSizeGWINSZ(PerlIO *file,int *
 #endif
 
 #if (!defined(TIOCGWINSZ) || defined(DONT_USE_GWINSZ)) && (defined(TIOCGSIZE) && !defined(DONT_USE_GSIZE))
-int GetTermSizeGSIZE(PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
+int GetTermSizeGSIZE(pTHX_ PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
 {
 	int handle=PerlIO_fileno(file);
 
@@ -478,7 +482,7 @@ int GetTermSizeGSIZE(PerlIO *file,int *r
 	}
 }
 #else
-int GetTermSizeGSIZE(PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
+int GetTermSizeGSIZE(pTHX_ PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
 {
 	croak("TermSizeGSIZE is not implemented on this architecture");
         return 0;
@@ -486,7 +490,7 @@ int GetTermSizeGSIZE(PerlIO *file,int *r
 #endif
 
 #ifdef USE_WIN32
-int GetTermSizeWin32(PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
+int GetTermSizeWin32(pTHX_ PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
 {
 	int handle=PerlIO_fileno(file);
 	HANDLE whnd = (HANDLE)_get_osfhandle(handle);
@@ -509,7 +513,7 @@ int GetTermSizeWin32(PerlIO *file,int *r
 		return -1;
 }
 #else
-int GetTermSizeWin32(PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
+int GetTermSizeWin32(pTHX_ PerlIO *file,int *retwidth,int *retheight,int *xpix,int *ypix)
 {
 	croak("TermSizeWin32 is not implemented on this architecture");
         return 0;
@@ -517,7 +521,7 @@ int GetTermSizeWin32(PerlIO *file,int *r
 #endif /* USE_WIN32 */
 
 
-int termsizeoptions() {
+STATIC int termsizeoptions() {
 	return	0
 #ifdef VIOMODE
 		| 1
@@ -535,9 +539,8 @@ int termsizeoptions() {
 }
 
 
-int SetTerminalSize(PerlIO *file,int width,int height,int xpix,int ypix)
+int SetTerminalSize(pTHX_ PerlIO *file,int width,int height,int xpix,int ypix)
 {
-	char buffer[10];
 	int handle=PerlIO_fileno(file);
 
 #ifdef VIOMODE
@@ -545,6 +548,7 @@ int SetTerminalSize(PerlIO *file,int wid
 #else
 
 #if defined(TIOCSWINSZ) && !defined(DONT_USE_SWINSZ)
+	char buffer[10];
 	struct winsize w;
 
 	w.ws_col=width;
@@ -564,6 +568,7 @@ int SetTerminalSize(PerlIO *file,int wid
 	}
 #else
 # if defined(TIOCSSIZE) && !defined(DONT_USE_SSIZE)
+	char buffer[10];
 	struct ttysize w;
 
 	w.ts_lines=height;
@@ -594,7 +599,7 @@ int SetTerminalSize(PerlIO *file,int wid
 
 }
 
-I32 terminal_speeds[] = {
+STATIC const I32 terminal_speeds[] = {
 #ifdef B50
 	50, B50,
 #endif
@@ -658,10 +663,12 @@ I32 terminal_speeds[] = {
 	-1,-1
 };
 
-int getspeed(PerlIO *file,I32 *in, I32 *out)
+int getspeed(pTHX_ PerlIO *file,I32 *in, I32 *out)
 {
 	int handle=PerlIO_fileno(file);
+#if defined(I_TERMIOS) || defined(I_TERMIO) || defined(I_SGTTY)
 	int i;
+#endif
 #       ifdef I_TERMIOS
 	/* Posixy stuff */
 
@@ -762,10 +769,10 @@ struct tbuffer {
 #endif
 #endif
 
-HV * filehash; /* Used to store the original terminal settings for each handle*/
-HV * modehash; /* Used to record the current terminal "mode" for each handle*/
+static HV * filehash; /* Used to store the original terminal settings for each handle*/
+static HV * modehash; /* Used to record the current terminal "mode" for each handle*/
 
-void ReadMode(PerlIO *file,int mode)
+void ReadMode(pTHX_ PerlIO *file,int mode)
 {
 	dTHR;
 	int handle;
@@ -1450,7 +1457,7 @@ understand this syntax, either fix the c
 DONT_USE_SELECT. */
 
 #ifdef Have_select
-int selectfile(PerlIO *file,double delay)
+int selectfile(pTHX_ PerlIO *file,double delay)
 {
 	struct timeval t;
 	int handle=PerlIO_fileno(file);
@@ -1479,7 +1486,7 @@ int selectfile(PerlIO *file,double delay
 }
 
 #else
-int selectfile(PerlIO *file, double delay)
+int selectfile(pTHX_ PerlIO *file, double delay)
 {
 	croak("select is not supported on this architecture");
 	return 0;
@@ -1487,7 +1494,7 @@ int selectfile(PerlIO *file, double dela
 #endif
 
 #ifdef Have_nodelay
-int setnodelay(PerlIO *file, int mode)
+int setnodelay(pTHX_ PerlIO *file, int mode)
 {
 	int handle=PerlIO_fileno(file);
 	int flags;
@@ -1501,7 +1508,7 @@ int setnodelay(PerlIO *file, int mode)
 }
 
 #else
-int setnodelay(PerlIO *file, int mode) 
+int setnodelay(pTHX_ PerlIO *file, int mode)
 {
 	croak("setnodelay is not supported on this architecture");
 	return 0;
@@ -1509,7 +1516,7 @@ int setnodelay(PerlIO *file, int mode) 
 #endif
 
 #ifdef Have_poll
-int pollfile(PerlIO *file,double delay)
+int pollfile(pTHX_ pTHX_ PerlIO *file,double delay)
 {
 	int handle=PerlIO_fileno(file);
 	struct pollfd fds;
@@ -1522,7 +1529,7 @@ int pollfile(PerlIO *file,double delay)
 	return (poll(&fds,1,(long)(delay * 1000.0))>0);
 } 
 #else
-int pollfile(PerlIO *file,double delay) 
+int pollfile(pTHX_ PerlIO *file,double delay)
 {
 	croak("pollfile is not supported on this architecture");
 	return 0;
@@ -1567,7 +1574,7 @@ typedef struct {
              goto again;                \
     } while (0)
 
-int Win32PeekChar(PerlIO *file,double delay,char *key)
+int Win32PeekChar(pTHX_ PerlIO *file,double delay,char *key)
 {
 	int handle;
 	HANDLE whnd;
@@ -1611,7 +1618,7 @@ again:
     }
 
 	if (delay > 0) {
-		if (WaitForSingleObject(whnd, delay * 1000.0) != WAIT_OBJECT_0)
+		if (WaitForSingleObject(whnd, delay * 1000) != WAIT_OBJECT_0)
 		{
 			return FALSE;
 		}
@@ -1703,7 +1710,7 @@ again:
 
 } 
 #else
-int Win32PeekChar(PerlIO *file, double delay,char *key) 
+int Win32PeekChar(pTHX_ PerlIO *file, double delay,char *key)
 {
 	croak("Win32PeekChar is not supported on this architecture");
 	return 0;
@@ -1711,7 +1718,7 @@ int Win32PeekChar(PerlIO *file, double d
 #endif
 
 
-int blockoptions() {
+STATIC int blockoptions() {
 	return	0
 #ifdef Have_nodelay
 		| 1
@@ -1728,7 +1735,7 @@ int blockoptions() {
 		;
 }
 
-int termoptions() {
+STATIC int termoptions() {
 	int i=0;
 #ifdef USE_TERMIOS
 	i=1;		
@@ -1756,6 +1763,10 @@ int
 selectfile(file,delay)
 	InputStream	file
 	double	delay
+CODE:
+	RETVAL = selectfile(aTHX_ file, delay);
+OUTPUT:
+	RETVAL
 
 # Clever, eh?
 void
@@ -1764,18 +1775,26 @@ SetReadMode(mode,file=STDIN)
 	InputStream	file
 	CODE:
 	{
-		ReadMode(file,mode);
+		ReadMode(aTHX_ file,mode);
 	}
 
 int
 setnodelay(file,mode)
 	InputStream	file
 	int	mode
+CODE:
+	RETVAL = setnodelay(aTHX_ file, mode);
+OUTPUT:
+	RETVAL
 
 int
 pollfile(file,delay)
 	InputStream	file
 	double	delay
+CODE:
+	RETVAL = pollfile(aTHX_ file, delay);
+OUTPUT:
+	RETVAL
 
 SV *
 Win32PeekChar(file, delay)
@@ -1784,7 +1803,7 @@ Win32PeekChar(file, delay)
 	CODE:
 	{
 		char key;
-		if (Win32PeekChar(file, delay, &key))
+		if (Win32PeekChar(aTHX_ file, delay, &key))
 			RETVAL = newSVpv(&key, 1);
 		else
 			RETVAL = newSVsv(&PL_sv_undef);
@@ -1807,7 +1826,7 @@ GetTermSizeWin32(file=STDIN)
 	PPCODE:
 	{
 		int x,y,xpix,ypix;
-		if( GetTermSizeWin32(file,&x,&y,&xpix,&ypix)==0)
+		if( GetTermSizeWin32(aTHX_ file,&x,&y,&xpix,&ypix)==0)
 		{
 			EXTEND(sp, 4);
 			PUSHs(sv_2mortal(newSViv((IV)x)));
@@ -1827,7 +1846,7 @@ GetTermSizeVIO(file=STDIN)
 	PPCODE:
 	{
 		int x,y,xpix,ypix;
-		if( GetTermSizeVIO(file,&x,&y,&xpix,&ypix)==0)
+		if( GetTermSizeVIO(aTHX_ file,&x,&y,&xpix,&ypix)==0)
 		{
 			EXTEND(sp, 4);
 			PUSHs(sv_2mortal(newSViv((IV)x)));
@@ -1847,7 +1866,7 @@ GetTermSizeGWINSZ(file=STDIN)
 	PPCODE:
 	{
 		int x,y,xpix,ypix;
-		if( GetTermSizeGWINSZ(file,&x,&y,&xpix,&ypix)==0)
+		if( GetTermSizeGWINSZ(aTHX_ file,&x,&y,&xpix,&ypix)==0)
 		{
 			EXTEND(sp, 4);
 			PUSHs(sv_2mortal(newSViv((IV)x)));
@@ -1867,7 +1886,7 @@ GetTermSizeGSIZE(file=STDIN)
 	PPCODE:
 	{
 		int x,y,xpix,ypix;
-		if( GetTermSizeGSIZE(file,&x,&y,&xpix,&ypix)==0)
+		if( GetTermSizeGSIZE(aTHX_ file,&x,&y,&xpix,&ypix)==0)
 		{
 			EXTEND(sp, 4);
 			PUSHs(sv_2mortal(newSViv((IV)x)));
@@ -1890,7 +1909,7 @@ SetTerminalSize(width,height,xpix,ypix,f
 	InputStream	file
 	CODE:
 	{
-		RETVAL=SetTerminalSize(file,width,height,xpix,ypix);
+		RETVAL=SetTerminalSize(aTHX_ file,width,height,xpix,ypix);
 	}
 	OUTPUT:
 		RETVAL
@@ -1901,10 +1920,14 @@ GetSpeed(file=STDIN)
 	PPCODE:
 	{
 		I32 in,out;
+/*
+ *    experimentally relaxed for 
+ *    https://rt.cpan.org/Ticket/Display.html?id=88050
 		if(items!=0) {
 			croak("Usage: Term::ReadKey::GetSpeed()");
 		}
-		if(getspeed(file,&in,&out)) {
+*/
+		if(getspeed(aTHX_ file,&in,&out)) {
 			/* Failure */
 			ST( 0) = sv_newmortal();
 		} else {
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/SIGNATURE
===================================================================
RCS file: gnu/usr.bin/perl/cpan/Term-ReadKey/SIGNATURE
diff -N gnu/usr.bin/perl/cpan/Term-ReadKey/SIGNATURE
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/SIGNATURE	26 Feb 2020 02:24:43 -0000
@@ -0,0 +1,41 @@
+This file contains message digests of all files listed in MANIFEST,
+signed via the Module::Signature module, version 0.81.
+
+To verify the content in this distribution, first make sure you have
+Module::Signature installed, then type:
+
+    % cpansign -v
+
+It will check each file's integrity, as well as the signature's
+validity.  If "==> Signature verified OK! <==" is not displayed,
+the distribution may already have been compromised, and you should
+not run its Makefile.PL or Build.PL.
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+SHA1 616229399c8babf4256fadad2571aad7d72a3ea8 Changes
+SHA1 87c9015c9692363397e1b5a8895db403bb6b24ad Configure.pm
+SHA1 fb4e59f63cf055ed8d1a7578d797b365c00ae276 MANIFEST
+SHA1 9bc08cea258bfe3fb880b2a5c7dd941a55d7860c MANIFEST.SKIP
+SHA1 0264821daf45fa82f1305fc31448e78f17d36432 META.json
+SHA1 4cc1f0b60a13222510e07f1aacf9e8c0609e6901 META.yml
+SHA1 fdcaac61068156a6823f79c61eed02942c012fda Makefile.PL
+SHA1 86fe91551c70c1899796cda79bb5c8d265d987aa README
+SHA1 463beea66445d64a7d7c877b234ecf8ad046f515 ReadKey.pm.PL
+SHA1 3bd8375779236d70dcc5c70aa269618b35a76a34 ReadKey.xs
+SHA1 c009e9a2bbd000588fbcba9a9ae08dfdaa1e8ad1 example/test.pl
+SHA1 f2e7df00c08c34872cedcce1746cc71d642c1d80 genchars.pl
+SHA1 58a50d6a9276b38cb76fae60561c2e1e9f95801b ppport.h
+SHA1 a4ac8dc9eee6dbc7f1522c733068c7ac1c31db61 t/01_basic.t
+SHA1 24ce32574887ccf5f7b3ec5619f840e5944d8c75 t/02_terminal_functions.t
+-----BEGIN PGP SIGNATURE-----
+
+iQEcBAEBAgAGBQJcMJqnAAoJECBWhy2NZBIANEQIAI7mZf0PDoA65wgUhSXXkQNv
+n/eWk5R6ykla6smZII5Jf7kwBThbwlIFXlGgr4Ub1SWnupXm82mcjMzk/Qpfl+au
+svGrr6c9S3uSliGTSwEq8LSjU7LDOkUDkCDx4fT88+4fQvWnagkMMxJ3UujNgyIa
+MmBFx5GqDJyakW85AK9KtMvUGFrXb9in/5ADkgrd0fuM607cn519ogUNejHnRL6y
+FLxguVH7WT8+0urUTIvK8VC4nU2t8Rng9z+NYATDYmA5/+DpEoRt35dJPwgqsVbk
+rZWt9zPaPMvnRPPK85FiAL6nvTWaXP1OoJu73OmamBTZC6ffdniKS74gH0V+7dc=
+=8p+z
+-----END PGP SIGNATURE-----
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl,v
retrieving revision 1.2
diff -u -p -r1.2 genchars.pl
--- gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl	3 Jul 2016 01:07:58 -0000	1.2
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/genchars.pl	26 Feb 2020 02:24:43 -0000
@@ -1,14 +1,16 @@
 #!/usr/bin/perl
-
 #
 # $Id: genchars.pl,v 2.22 2005/01/11 21:15:17 jonathan Exp $
 #
 ##############################
-$version="1.97";
+$version="1.98";
 ##############################
 use Config;
 
+BEGIN { push @INC, "."; }
 use Configure;
+use constant SILENT =>
+  (defined $ENV{MAKEFLAGS} and $ENV{MAKEFLAGS} =~ /\b(s|silent|quiet)\b/ ? 1 : 0);
 
 #sub report {
 #	my($prog)=join(" ",@_);
@@ -88,19 +90,21 @@ open(CCHARS,">cchars.h") || die "Fatal e
 );
 
 print CCHARS "
+/* -*- buffer-read-only: t -*-
 
-/* Written by genchars.pl version $version */
+  This file is auto-generated. ***ANY*** changes here will be lost.
+  Written by genchars.pl version $version */
 
 ";
 
 print CCHARS "#define HAVE_POLL_H\n" if CheckHeader("poll.h");
 print CCHARS "#define HAVE_SYS_POLL_H\n" if CheckHeader("sys/poll.h");
 
-print "\n";
+print "\n" unless SILENT;
 if(1) {
 	@values = sort { $possible{$a} cmp $possible{$b} or $a cmp $b } keys %possible;
 
-	print "Writing termio/termios section of cchars.h... ";
+	print "Writing termio/termios section of cchars.h... " unless SILENT;
 	print CCHARS "
 
 #ifdef CC_TERMIOS
@@ -129,9 +133,15 @@ if(1) {
 # define LEGALMAXCC 126
 #endif
 
+#ifdef XS_INTERNAL
+#  define TRTXS(a) XS_INTERNAL(a)
+#else
+#  define TRTXS(a) XS(a)
+#endif
+
 #if defined(CC_TERMIO) || defined(CC_TERMIOS)
 
-char	* cc_names[] = {	".join('',map("
+STATIC const char	* const cc_names[] = {	".join('',map("
 #if defined($_) && ($_ < LEGALMAXCC)
 	\"$possible{$_}\",	"."
 #else				"."
@@ -139,13 +149,13 @@ char	* cc_names[] = {	".join('',map("
 #endif				", @values ))."
 };
 
-const int MAXCC = 0	",join('',map("
+STATIC const int MAXCC = 0	",join('',map("
 #if defined($_)  && ($_ < LEGALMAXCC)
 	+1		/* $possible{$_} */
 #endif			", @values ))."
 	;
 
-XS(XS_Term__ReadKey_GetControlChars)
+TRTXS(XS_Term__ReadKey_GetControlChars)
 {
 	dXSARGS;
 	if (items < 0 || items > 1) {
@@ -182,7 +192,7 @@ PUSHs(sv_2mortal(newSVpv((char*)&s.c_cc[
 	}
 }
 
-XS(XS_Term__ReadKey_SetControlChars)
+TRTXS(XS_Term__ReadKey_SetControlChars)
 {
 	dXSARGS;
 	/*if ((items % 2) != 0) {
@@ -243,7 +253,7 @@ XS(XS_Term__ReadKey_SetControlChars)
 
 ";
 
-	print "Done.\n";
+	print "Done.\n" unless SILENT;
 
 }
 
@@ -252,9 +262,9 @@ undef %billy;
 if(@ARGV) { # If any argument is supplied on the command-line don't check sgtty
 	$SGTTY=0; #skip tests
 }  else {
-	print "Checking for sgtty...\n";
+	print "Checking for sgtty...\n" unless SILENT;
 
-	$SGTTY = CheckStructure "sgttyb","sgtty.h";
+	$SGTTY = CheckStructure("sgttyb","sgtty.h");
 #	$SGTTY = !Compile("
 ##include <sgtty.h>
 #struct sgttyb s;
@@ -271,7 +281,7 @@ if(@ARGV) { # If any argument is supplie
 #ioctl(0,TIOCGETP,&s);
 #}");
 
-	print "	Sgtty ",($SGTTY?"":"NOT "),"found.\n";
+	print "	Sgtty ",($SGTTY?"":"NOT "),"found.\n" unless SILENT;
 }
 
 $billy{"ERASE"} = "s1.sg_erase";
@@ -280,27 +290,27 @@ $tchars=$ltchars=0;
 
 if($SGTTY) {
 
-	print "Checking sgtty...\n";
+	print "Checking sgtty...\n" unless SILENT;
 
-	$tchars = CheckStructure "tchars","sgtty.h";
+	$tchars = CheckStructure("tchars","sgtty.h");
 #	$tchars = !report(	'
 ##include <sgtty.h>
 #struct tchars t;  
 #main() { ioctl(0,TIOCGETC,&t); }
 #');
-	print "	tchars structure found.\n" if $tchars;
+	print "	tchars structure found.\n" if $tchars and !SILENT;
 
-	$ltchars = CheckStructure "ltchars","sgtty.h";
+	$ltchars = CheckStructure("ltchars","sgtty.h");
 #	$ltchars = !report(	'
 ##include <sgtty.h>
 #struct ltchars t;  
 #main() { ioctl(0,TIOCGLTC,&t); }
 #');
 
-	print "	ltchars structure found.\n" if $ltchars;
+	print "	ltchars structure found.\n" if $ltchars and !SILENT;
 
 
-	print "Checking symbols\n";
+	print "Checking symbols\n" unless SILENT;
 
 
 	for $c (sort keys %possible2) {
@@ -312,7 +322,7 @@ if($SGTTY) {
 #")) {
 		if($tchars and CheckField("tchars","t_$c","sgtty.h")) {
 
-			print "	t_$c ($possible2{$c}) found in tchars\n";
+			print "	t_$c ($possible2{$c}) found in tchars\n" unless SILENT;
 			$billy{$possible2{$c}} = "s2.t_$c";
 		}
 
@@ -322,7 +332,7 @@ if($SGTTY) {
 #main () { char c = s3.t_$c; }
 #")) {
 		elsif($ltchars and CheckField("ltchars","t_$c","sgtty.h")) {
-			print "	t_$c ($possible2{$c}) found in ltchars\n";
+			print "	t_$c ($possible2{$c}) found in ltchars\n" unless SILENT;
 			$billy{$possible2{$c}} = "s3.t_$c";
 		}
 
@@ -355,7 +365,7 @@ struct termstruct {
 	$struct .= "
 };";
 
-print "Writing sgtty section of cchars.h... ";
+print "Writing sgtty section of cchars.h... " unless SILENT;
 
 	print CCHARS "
 
@@ -363,13 +373,13 @@ print "Writing sgtty section of cchars.h
 $struct
 #define TermStructure struct termstruct
 
-char	* cc_names[] = {	".join('',map("
+STATIC const char	* const cc_names[] = {	".join('',map("
 	\"$_\",			", @values ))."
 };
 
 #define MAXCC	". ($#values+1)."
 
-XS(XS_Term__ReadKey_GetControlChars)
+TRTXS(XS_Term__ReadKey_GetControlChars)
 {
 	dXSARGS;
 	if (items < 0 || items > 1) {
@@ -401,7 +411,7 @@ PUSHs(sv_2mortal(newSVpv(&s.$billy{$valu
 	}
 }
 
-XS(XS_Term__ReadKey_SetControlChars)
+TRTXS(XS_Term__ReadKey_SetControlChars)
 {
 	dXSARGS;
 	/*if ((items % 2) != 0) {
@@ -452,7 +462,7 @@ XS(XS_Term__ReadKey_SetControlChars)
 
 #if !defined(CC_TERMIO) && !defined(CC_TERMIOS) && !defined(CC_SGTTY)
 #define TermStructure int
-XS(XS_Term__ReadKey_GetControlChars)
+TRTXS(XS_Term__ReadKey_GetControlChars)
 {
 	dXSARGS;
 	if (items <0 || items>1) {
@@ -466,7 +476,7 @@ XS(XS_Term__ReadKey_GetControlChars)
 	}
 }
 
-XS(XS_Term__ReadKey_SetControlChars)
+TRTXS(XS_Term__ReadKey_SetControlChars)
 {
 	dXSARGS;
 	if (items < 0 || items > 1) {
@@ -478,9 +488,10 @@ XS(XS_Term__ReadKey_SetControlChars)
 
 #endif
 
+/* ex: set ro: */
 ";
 
-print "Done.\n";
+print "Done.\n" unless SILENT;
 
 
 
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl,v
retrieving revision 1.2
diff -u -p -r1.2 test.pl
--- gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl	3 Jul 2016 01:07:58 -0000	1.2
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/example/test.pl	26 Feb 2020 02:24:43 -0000
@@ -59,7 +59,8 @@ else
 *IN = *IN;    # Make single-use warning go away
 $|  = 1;
 
-my $size1 = join( ",", GetTerminalSize( \IN ) );
+# Bad filehandle: IN at ../lib/Term/ReadKey.pm line 377 with \IN and harness
+my $size1 = join( ",", GetTerminalSize( -t \IN ? \IN : "IN" ) );
 my $size2 = join( ",", GetTerminalSize("IN") );
 my $size3 = join( ",", GetTerminalSize(*IN) );
 my $size4 = join( ",", GetTerminalSize( \*IN ) );
Index: gnu/usr.bin/perl/cpan/Term-ReadKey/t/02_terminal_functions.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/cpan/Term-ReadKey/t/02_terminal_functions.t,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 02_terminal_functions.t
--- gnu/usr.bin/perl/cpan/Term-ReadKey/t/02_terminal_functions.t	7 May 2016 16:03:09 -0000	1.1.1.1
+++ gnu/usr.bin/perl/cpan/Term-ReadKey/t/02_terminal_functions.t	26 Feb 2020 02:24:43 -0000
@@ -2,11 +2,20 @@ use strict;
 use warnings;
 
 
-use Test::More tests => 7;
+use Test::More ;
+
+if ( -t STDIN ) {
+   plan tests => 7;
+}
+else {
+   plan skip_all => "Need a terminal to test";
+}
 
 use Term::ReadKey;
 use Fcntl;
 
+$| = 1;
+
 if ( not exists $ENV{COLUMNS} ){
     $ENV{COLUMNS} = 80;
     $ENV{LINES}   = 24;
@@ -29,24 +38,23 @@ SKIP:
             }
         }
     };
-    skip( 'Because Term::ReadKey need at least a tty to be useful', 1 ) if $@;
+    skip( 'Because Term::ReadKey need at least a tty to be useful', 7 ) if $@;
     *IN = *IN;    # Make single-use warning go away
     $|  = 1;
     no strict "subs";
-    my $size1 = join( ",", GetTerminalSize( \IN ) );
     my $size2 = join( ",", GetTerminalSize("IN") );
     my $size3 = join( ",", GetTerminalSize(*IN) );
     my $size4 = join( ",", GetTerminalSize( \*IN ) );
 
     my $size_result=0;
-    if ( ( $size1 eq $size2 ) && ( $size2 eq $size3 ) && ( $size3 eq $size4 ) ){
+    if ( ( $size2 eq $size3 ) && ( $size3 eq $size4 ) ){
         $size_result = 1;
     }
     is($size_result, 1, "Comparing TerminalSize IN");
 
     my $usable_terminal=0;
     for (my $i = 1; $i < 6; $i++){
-        if ( &Term::ReadKey::termoptions() == $i ){
+        if ( Term::ReadKey::termoptions() == $i ){
             $usable_terminal = 1;
             last;
         }
@@ -55,10 +63,10 @@ SKIP:
 
     my @modes;
     eval {
-        push( @modes, "O_NODELAY" ) if &Term::ReadKey::blockoptions() & 1;
-        push( @modes, "poll()" )    if &Term::ReadKey::blockoptions() & 2;
-        push( @modes, "select()" )  if &Term::ReadKey::blockoptions() & 4;
-        push( @modes, "Win32" )     if &Term::ReadKey::blockoptions() & 8;
+        push( @modes, "O_NODELAY" ) if Term::ReadKey::blockoptions() & 1;
+        push( @modes, "poll()" )    if Term::ReadKey::blockoptions() & 2;
+        push( @modes, "select()" )  if Term::ReadKey::blockoptions() & 4;
+        push( @modes, "Win32" )     if Term::ReadKey::blockoptions() & 8;
     };
     is($@, '', "Check non-blocking read");
 
