Florian Weimer 2022-11-25 17:30:51 +01:00
parent fa588f9218
commit 1109e0a0d5
2 changed files with 145 additions and 2 deletions

View File

@ -0,0 +1,139 @@
Explicitly specify the return type of main as int for C99 compatibility.
Submitted upstream: <https://github.com/jonathanstowe/TermReadKey/pull/40>
diff --git a/Configure.pm b/Configure.pm
index aabf136756ff2be5..82aab81c964c3350 100644
--- a/Configure.pm
+++ b/Configure.pm
@@ -503,7 +503,7 @@ by the compiler is returned.
=cut
sub CheckHeader { #Find a header (or set of headers) that exists
- ApplyHeaders("main(){}",@_);
+ ApplyHeaders("int main(){}",@_);
}
=head2 CheckStructure
@@ -516,7 +516,7 @@ properly will be returned. B<undef> will be returned if nothing succeeds.
sub CheckStructure { # Check existance of a structure.
my($structname,@headers) = @_;
- ApplyHeaders("main(){ struct $structname s;}",@headers);
+ ApplyHeaders("int main(){ struct $structname s;}",@headers);
}
=head2 CheckField
@@ -530,7 +530,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;
+ ApplyHeaders("int main(){ struct $structname s1; struct $structname s2;
s1.$fieldname = s2.$fieldname; }",@headers);
}
@@ -544,7 +544,7 @@ that symbol will be returned. B<undef> will be returned if nothing succeeds.
sub CheckLSymbol { # Check for linkable symbol
my($symbol,@libs) = @_;
- ApplyLibs("main() { void * f = (void *)($symbol); }",@libs);
+ ApplyLibs("int main() { void * f = (void *)($symbol); }",@libs);
}
=head2 CheckSymbol
@@ -558,7 +558,8 @@ B<undef> will be returned if nothing succeeds.
sub CheckSymbol { # Check for linkable/header symbol
my($symbol,@lookup) = @_;
- ApplyHeadersAndLibs("main() { void * f = (void *)($symbol); }",@lookup);
+ ApplyHeadersAndLibs("int main() { void * f = (void *)($symbol); }",
+ @lookup);
}
=head2 CheckHSymbol
@@ -571,7 +572,7 @@ that symbol will be returned. B<undef> will be returned if nothing succeeds.
sub CheckHSymbol { # Check for header symbol
my($symbol,@headers) = @_;
- ApplyHeaders("main() { void * f = (void *)($symbol); }",@headers);
+ ApplyHeaders("int main() { void * f = (void *)($symbol); }",@headers);
}
=head2 CheckHPrototype (unexported)
@@ -591,7 +592,7 @@ sub CheckHPrototype { # Check for header prototype.
# names function doesn't exist, this call will _succeed_. Caveat Utilitor.
my($function,$proto,@headers) = @_;
my(@proto) = @{$proto};
- ApplyHeaders("main() { extern ".$proto[0]." $function(".
+ ApplyHeaders("int main() { extern ".$proto[0]." $function(".
join(",",@proto[1..$#proto])."); }",@headers);
}
@@ -612,7 +613,8 @@ Example:
sub GetSymbol { # Check for linkable/header symbol
my($symbol,$printf,$cast,@lookup) = @_,"","";
scalar(ApplyHeadersAndLibsAndExecute(
- "main(){ printf(\"\%$printf\",($cast)($symbol));exit(0);}",@lookup));
+ "int main(){ printf(\"\%$printf\",($cast)($symbol));exit(0);}",
+ @lookup));
}
=head2 GetTextSymbol
@@ -768,7 +770,7 @@ main(){ }");
"double","long double",
"char","unsigned char","short int","unsigned short int");
- if(Compile("main(){flurfie a;}")) { @types = (); }
+ if(Compile("int main(){flurfie a;}")) { @types = (); }
$Verbose=0;
@@ -781,7 +783,7 @@ main(){ }");
if(Compile("
extern void func($types[$i]);
extern void func($types[$j]);
-main(){}")) {
+int main(){}")) {
print "Removing type $types[$j] because it equals $types[$i]\n";
splice(@types,$j,1);
$j--;
@@ -795,7 +797,7 @@ main(){}")) {
if(Compile("
$types[$i] func(void);
extern $types[$j] func(void);
-main(){}")) {
+int main(){}")) {
print "Removing type $types[$j] because it equals $types[$i]\n";
splice(@types,$j,1);
$j--;
@@ -833,7 +835,7 @@ main(){}")) {
# Can we check the return type without worry about arguements?
if($checkreturn and (!$checknilargs or !$checkniletcargs)) {
for (@types) {
- if(ApplyHeaders("extern $_ $function(". ($checknilargs?"...":"").");main(){}",[@headers])) {
+ if(ApplyHeaders("extern $_ $function(". ($checknilargs?"...":"").");int main(){}",[@headers])) {
$rettype = $_; # Great, we found the return type.
last;
}
@@ -847,9 +849,9 @@ main(){}")) {
my $numargs=-1;
my $varargs=0;
for (0..32) {
- if(ApplyHeaders("main(){ $function(".join(",",("0") x $_).");}",@headers)) {
+ if(ApplyHeaders("int main(){ $function(".join(",",("0") x $_).");}",@headers)) {
$numargs=$_;
- if(ApplyHeaders("main(){ $function(".join(",",("0") x ($_+1)).");}",@headers)) {
+ if(ApplyHeaders("int main(){ $function(".join(",",("0") x ($_+1)).");}",@headers)) {
$varargs=1;
}
last
@@ -865,7 +867,7 @@ main(){}")) {
if(@args>0 and !defined($rettype)) {
for (@types) {
- if(defined(ApplyHeaders("extern $_ $function(".join(",",@args).");main(){}",[@headers]))) {
+ if(defined(ApplyHeaders("extern $_ $function(".join(",",@args).");int main(){}",[@headers]))) {
$rettype = $_; # Great, we found the return type.
last;
}

View File

@ -1,10 +1,11 @@
Name: perl-TermReadKey
Version: 2.38
Release: 14%{?dist}
Release: 15%{?dist}
Summary: A perl module for simple terminal control
License: (Copyright only) and (Artistic or GPL+)
URL: https://metacpan.org/release/TermReadKey
Source0: https://cpan.metacpan.org/authors/id/J/JS/JSTOWE/TermReadKey-%{version}.tar.gz
Patch0: perl-TermReadKey-configure-c99.patch
# Build
BuildRequires: findutils
BuildRequires: gcc
@ -41,7 +42,7 @@ can just plug in "use Term::ReadKey" on any architecture and have a
good likelyhood of it working.
%prep
%setup -q -n TermReadKey-%{version}
%autosetup -p1 -n TermReadKey-%{version}
%build
CFLAGS="%{optflags}" perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1
@ -62,6 +63,9 @@ make test
%{_mandir}/man3/*
%changelog
* Fri Nov 25 2022 Florian Weimer <fweimer@redhat.com> - 2.38-15
- Port Configure.pm to C99
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.38-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild