diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index e69de29..0000000
diff --git a/.gitignore b/.gitignore
index 8c1bdd8..c338db7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-/aalib-1.4rc5.tar.gz
+aalib-1.4rc5.tar.gz
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 908340f..0000000
--- a/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Makefile for source rpm: aalib
-# $Id$
-NAME := aalib
-SPECFILE = $(firstword $(wildcard *.spec))
-
-define find-makefile-common
-for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
-endef
-
-MAKEFILE_COMMON := $(shell $(find-makefile-common))
-
-ifeq ($(MAKEFILE_COMMON),)
-# attept a checkout
-define checkout-makefile-common
-test -f CVS/Rootx && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
-endef
-
-MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
-endif
-
-include $(MAKEFILE_COMMON)
diff --git a/aalib-1.4_rc5-fix-aarender.patch b/aalib-1.4_rc5-fix-aarender.patch
new file mode 100644
index 0000000..2c3d5bf
--- /dev/null
+++ b/aalib-1.4_rc5-fix-aarender.patch
@@ -0,0 +1,34 @@
+This bug can be seen very clearly with e.g. mplayer -vo aa -monitoraspect 3
+in which case a big part of the picture is missing or there is even completely
+black output.
+
+The reason for this is, when drawing only a part of the picture via aarender()
+the first X coordinate is used for the loop count, but it is not applied to the
+destination and source image index, thus instead of (re)drawing the middle part
+of the image, it draws always the left part.
+
+Actual Results:
+only the left part of the image is draw (depending on the video, only the left
+black bar might be draw, so you will see nothing at all - if so use a slightly
+smaller value for -monitoraspect).
+
+Expected Results:
+All of the image should be drawn, and -monitoraspect should only squeeze the
+image, not cause part of it to miss.
+
+Gentoo-bug: http://bugs.gentoo.org/id=214142
+Reported-by: Reimar Döffinger
+Fixed-by: Reimar Döffinger
+--- a/src/aarender.c.orig 2008-03-18 23:55:32.000000000 +0100
++++ b/src/aarender.c 2008-03-18 23:55:50.000000000 +0100
+@@ -94,8 +94,8 @@
+ gamma = randomval / 2;
+ mval = (c->parameters[c->filltable[255]].p[4]);
+ for (y = y1; y < y2; y++) {
+- pos = 2 * y * wi;
+- pos1 = y * aa_scrwidth(c);
++ pos = 2 * (y * wi + x1);
++ pos1 = y * aa_scrwidth(c) + x1;
+ esum = 0;
+ for (x = x1; x < x2; x++) {
+ i1 = table[((((int) c->imagebuffer[pos])))];
diff --git a/aalib-1.4_rc5-free-offset-pointer.patch b/aalib-1.4_rc5-free-offset-pointer.patch
new file mode 100644
index 0000000..3ae697e
--- /dev/null
+++ b/aalib-1.4_rc5-free-offset-pointer.patch
@@ -0,0 +1,14 @@
+--- a/src/aarender.c
++++ b/src/aarender.c
+@@ -63,10 +63,10 @@ void aa_renderpalette(aa_context * c, __
+ errors[0] = calloc(1, (x2 + 5) * sizeof(int));
+ if (errors[0] == NULL)
+ dither = AA_ERRORDISTRIB;
+- errors[0] += 3;
+ errors[1] = calloc(1, (x2 + 5) * sizeof(int));
+ if (errors[1] == NULL)
+ free(errors[0]), dither = AA_ERRORDISTRIB;
++ errors[0] += 3;
+ errors[1] += 3;
+ cur = 0;
+ }
diff --git a/aalib-1.4rc5-opaque-ncurses-fix.patch b/aalib-1.4rc5-opaque-ncurses-fix.patch
new file mode 100644
index 0000000..42c430c
--- /dev/null
+++ b/aalib-1.4rc5-opaque-ncurses-fix.patch
@@ -0,0 +1,14 @@
+diff -up aalib-1.4.0/src/aacurses.c.opaque-ncurses-fix aalib-1.4.0/src/aacurses.c
+--- aalib-1.4.0/src/aacurses.c.opaque-ncurses-fix 2024-02-10 06:32:32.008267145 -0500
++++ aalib-1.4.0/src/aacurses.c 2024-02-10 06:33:38.648245270 -0500
+@@ -71,8 +71,8 @@ static void curses_getsize(aa_context *
+ {
+ if (__resized_curses)
+ curses_uninit(c), curses_init(&c->params, NULL,&c->driverparams, NULL), __resized_curses = 0;
+- *width = stdscr->_maxx + 1;
+- *height = stdscr->_maxy + 1;
++ *width = getmaxx(stdscr);
++ *height = getmaxy(stdscr);
+ #ifdef GPM_MOUSEDRIVER
+ gpm_mx = *width;
+ gpm_my = *height;
diff --git a/aalib-c99.patch b/aalib-c99.patch
new file mode 100644
index 0000000..2a65cc2
--- /dev/null
+++ b/aalib-c99.patch
@@ -0,0 +1,108 @@
+Add additional system header #include directives for more
+function prototypes. This avoids implicit function declarations
+and build failures with future compilers.
+
+Submitted upstream:
+
+diff --git a/src/aafire.c b/src/aafire.c
+index 4f36149aa84fba57..a59b5c5fa58e085b 100644
+--- a/src/aafire.c
++++ b/src/aafire.c
+@@ -1,4 +1,5 @@
+ #include
++#include
+ #include "aalib.h"
+
+ #define XSIZ aa_imgwidth(context)
+diff --git a/src/aainfo.c b/src/aainfo.c
+index d3f6d50f34590638..f4250ee37ae46134 100644
+--- a/src/aainfo.c
++++ b/src/aainfo.c
+@@ -1,3 +1,4 @@
++#include
+
+ #include "aalib.h"
+ #include "aaint.h"
+diff --git a/src/aakbdreg.c b/src/aakbdreg.c
+index def65fe25646d75a..682616313c1b6ebd 100644
+--- a/src/aakbdreg.c
++++ b/src/aakbdreg.c
+@@ -1,4 +1,5 @@
+ #include
++#include
+ #include "config.h"
+ #include "aalib.h"
+ #include "aaint.h"
+diff --git a/src/aalib.c b/src/aalib.c
+index 11fecc8fe8ef6b59..1ef12c0dfa9026a4 100644
+--- a/src/aalib.c
++++ b/src/aalib.c
+@@ -1,4 +1,5 @@
+ #include
++#include
+ #include
+ #include
+ #include "aalib.h"
+diff --git a/src/aalinuxkbd.c b/src/aalinuxkbd.c
+index c7f388abfe9e8c7f..ea988154518dfc8e 100644
+--- a/src/aalinuxkbd.c
++++ b/src/aalinuxkbd.c
+@@ -8,6 +8,7 @@
+ */
+
+ #include "config.h"
++#include
+ #ifdef LINUX_DRIVER
+ #include
+ #include
+diff --git a/src/aamoureg.c b/src/aamoureg.c
+index 03808289eb59b928..6d807416ae0d3dc2 100644
+--- a/src/aamoureg.c
++++ b/src/aamoureg.c
+@@ -1,4 +1,5 @@
+ #include
++#include
+ #include "config.h"
+ #include "aalib.h"
+ #include "aaint.h"
+diff --git a/src/aaregist.c b/src/aaregist.c
+index 54abec0b9797533a..768b8ce29e286b00 100644
+--- a/src/aaregist.c
++++ b/src/aaregist.c
+@@ -1,4 +1,5 @@
+ #include
++#include
+ #include "config.h"
+ #include "aalib.h"
+ #include "aaint.h"
+diff --git a/src/aasavefont.c b/src/aasavefont.c
+index b00e1e6d7f181952..864ba225d5ef626c 100644
+--- a/src/aasavefont.c
++++ b/src/aasavefont.c
+@@ -1,3 +1,4 @@
++#include
+ #include "aalib.h"
+ int main(int argc, char **argv)
+ {
+diff --git a/src/aatest.c b/src/aatest.c
+index 9816f5d855134894..89933cfba6344270 100644
+--- a/src/aatest.c
++++ b/src/aatest.c
+@@ -1,3 +1,5 @@
++#include
++#include
+ #include "aalib.h"
+ int main(int argc, char **argv)
+ {
+diff --git a/src/aaxkbd.c b/src/aaxkbd.c
+index f16afc63bb565512..44b91458b4bef3bc 100644
+--- a/src/aaxkbd.c
++++ b/src/aaxkbd.c
+@@ -7,6 +7,7 @@
+ #include
+ #include
+ #include
++#include
+ #include "aalib.h"
+ #include "aaint.h"
+ #include "aaxint.h"
diff --git a/aalib-ppc.patch b/aalib-ppc.patch
new file mode 100644
index 0000000..617f01f
--- /dev/null
+++ b/aalib-ppc.patch
@@ -0,0 +1,19 @@
+--- aalib-1.4.0/ltconfig.foo 2007-05-04 08:47:13.000000000 -0400
++++ aalib-1.4.0/ltconfig 2007-05-04 08:48:26.000000000 -0400
+@@ -1994,16 +1994,6 @@ linux-gnu*)
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ deplibs_check_method=pass_all
+-
+- if test -f /lib/ld.so.1; then
+- dynamic_linker='GNU ld.so'
+- else
+- # Only the GNU ld.so supports shared libraries on MkLinux.
+- case "$host_cpu" in
+- powerpc*) dynamic_linker=no ;;
+- *) dynamic_linker='Linux ld.so' ;;
+- esac
+- fi
+ ;;
+
+ netbsd*)
diff --git a/aalib.spec b/aalib.spec
index 5d994d6..f43ae9c 100644
--- a/aalib.spec
+++ b/aalib.spec
@@ -1,20 +1,33 @@
%global rc_subver rc5
+%global optflags %{optflags} -std=gnu17
Summary: ASCII art library
Name: aalib
Version: 1.4.0
-Release: 0.37.%{rc_subver}%{?dist}
-License: LGPLv2+
+Release: 0.57.%{rc_subver}%{?dist}
+License: LGPL-2.1-or-later
URL: http://aa-project.sourceforge.net/aalib/
Source0: http://download.sourceforge.net/aa-project/%{name}-1.4%{rc_subver}.tar.gz
Patch0: aalib-aclocal.patch
Patch1: aalib-config-rpath.patch
Patch2: aalib-1.4rc5-bug149361.patch
Patch3: aalib-1.4rc5-rpath.patch
-Patch4: aalib-1.4rc5-x_libs.patch
-Patch5: aalib-1.4rc5-libflag.patch
-BuildRequires: slang-devel libXt-devel gpm-devel ncurses-devel
-BuildRequires: autoconf libtool
+Patch4: aalib-1.4rc5-x_libs.patch
+Patch5: aalib-1.4rc5-libflag.patch
+Patch6: aalib-c99.patch
+Patch7: https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/aalib/files/aalib-1.4_rc5-free-offset-pointer.patch
+Patch8: https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/aalib/files/aalib-1.4_rc5-fix-aarender.patch
+# Modern ncurses has an opaque WINDOW structure (you cannot address its members directly)
+# Use the getmaxx() and getmaxy() functions provided by ncurses instead.
+Patch9: aalib-1.4rc5-opaque-ncurses-fix.patch
+
+BuildRequires: autoconf
+BuildRequires: gpm-devel
+BuildRequires: libtool
+BuildRequires: libXt-devel
+BuildRequires: make
+BuildRequires: ncurses-devel
+BuildRequires: slang-devel
%description
AA-lib is a low level gfx library just as many other libraries are. The
@@ -39,23 +52,27 @@ with aalib.
%prep
%setup -q
-%patch0 -p0
-%patch1 -p0
-%patch2 -p1 -b .bug149361
-%patch3 -p1 -b .rpath
-%patch4 -p1 -b .x_libs
-%patch5 -p0 -b .libflag
+%patch -P0 -p0
+%patch -P1 -p0
+%patch -P2 -p1 -b .bug149361
+%patch -P3 -p1 -b .rpath
+%patch -P4 -p1 -b .x_libs
+%patch -P5 -p0 -b .libflag
+%patch -P6 -p1
+%patch -P7 -p1 -b .free-offset-pointer
+%patch -P8 -p1 -b .fix-aarender
+%patch -P9 -p1 -b .opaque-ncurses-fix
# included libtool is too old, we need to rebuild
autoreconf -v -f -i
%build
%configure --disable-static --with-curses-driver=yes --with-ncurses
-make %{?_smp_mflags}
+%make_build
%install
-make install DESTDIR=$RPM_BUILD_ROOT INSTALL="%{__install} -p"
+%make_install
rm -f $RPM_BUILD_ROOT{%{_libdir}/libaa.la,%{_infodir}/dir}
# clean up multilib conflicts
@@ -73,7 +90,7 @@ touch -r NEWS $RPM_BUILD_ROOT%{_bindir}/aalib-config $RPM_BUILD_ROOT%{_datadir}/
%files libs
%doc README ChangeLog NEWS
%license COPYING
-%{_libdir}/libaa.so.*
+%{_libdir}/libaa.so.1*
%files devel
%{_bindir}/aalib-config
@@ -84,6 +101,73 @@ touch -r NEWS $RPM_BUILD_ROOT%{_bindir}/aalib-config $RPM_BUILD_ROOT%{_datadir}/
%{_datadir}/aclocal/aalib.m4
%changelog
+* Fri Jan 16 2026 Fedora Release Engineering - 1.4.0-0.57.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
+
+* Wed Jul 23 2025 Fedora Release Engineering - 1.4.0-0.56.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
+
+* Mon Mar 3 2025 Tom Callaway - 1.4.0-0.55.rc5
+- force std=gnu17 (it does not support C23)
+- fixes FTBFS
+
+* Thu Jan 16 2025 Fedora Release Engineering - 1.4.0-0.54.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
+
+* Fri Jan 03 2025 Xavier Bachelot - 1.4.0-0.53.rc5
+- Re-enable gpm on EL10
+
+* Fri Oct 04 2024 Xavier Bachelot - 1.4.0-0.52.rc5
+- Do not BuildRequires gpm-devel on EL10
+- Specfile clean up
+
+* Wed Jul 17 2024 Fedora Release Engineering - 1.4.0-0.51.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
+
+* Sat Feb 10 2024 Tom Callaway - 1.4.0-0.50.rc5
+- apply two fixes from gentoo
+- fix aalib to handle opaque WINDOW in ncurses
+- fix license tag
+- fix patch macro syntax
+- fixes FTBFS
+
+* Mon Jan 22 2024 Fedora Release Engineering - 1.4.0-0.49.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Fri Jan 19 2024 Fedora Release Engineering - 1.4.0-0.48.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Wed Jul 19 2023 Fedora Release Engineering - 1.4.0-0.47.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
+* Thu Apr 06 2023 Florian Weimer - 1.4.0-0.46.rc5
+- Port to C99
+
+* Wed Jan 18 2023 Fedora Release Engineering - 1.4.0-0.45.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
+* Wed Jul 20 2022 Fedora Release Engineering - 1.4.0-0.44.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
+* Wed Jan 19 2022 Fedora Release Engineering - 1.4.0-0.43.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Wed Jul 21 2021 Fedora Release Engineering - 1.4.0-0.42.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Mon Jan 25 2021 Fedora Release Engineering - 1.4.0-0.41.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Fri Jul 31 2020 Fedora Release Engineering - 1.4.0-0.40.rc5
+- Second attempt - Rebuilt for
+ https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Mon Jul 27 2020 Fedora Release Engineering - 1.4.0-0.39.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue Jan 28 2020 Fedora Release Engineering - 1.4.0-0.38.rc5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Wed Jul 24 2019 Fedora Release Engineering - 1.4.0-0.37.rc5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
diff --git a/sources b/sources
index ead3a87..d31b3e6 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (aalib-1.4rc5.tar.gz) = 3e4506eccce3b81ccbbb79a4a1b90abd39e2259e6043fde90f70b9ca279bd4c37758a047167267b97c4ec92f64fb17c7c8f548114f0d0c6e78ddb9463b5f1299
+9801095c42bba12edebd1902bcf0a990 aalib-1.4rc5.tar.gz