caprice32: Update to 4.6.0 Changes: * Support CAP32_DELAY in autorun commands * Support German keyboard (physical layout only) * Better freedesktop integration * Better logic for finding configuration file * Dynamic loading of CAPS (IPF) library * Nix packaging supportdiff -r1.1 -r1.2 pkgsrc/emulators/caprice32/MESSAGE
(nia)
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | =========================================================================== | 1 | =========================================================================== | |
2 | $NetBSD: MESSAGE,v 1.1 2020/03/06 12:23:01 nia Exp $ | 2 | $NetBSD: MESSAGE,v 1.2 2020/04/22 08:13:39 nia Exp $ | |
3 | 3 | |||
4 | For copyright reasons ROM files cannot be redistributed with the package. | 4 | For copyright reasons ROM files cannot be redistributed with the package. | |
5 | 5 | |||
6 | Caprice32 searches ${PREFIX}/share/caprice32/rom for BASIC and AMSDOS ROM | 6 | Caprice32 needs BASIC and AMSDOS ROM images in MAME/MESS format (only not | |
7 | images in MAME/MESS format (only not compressed), e.g. cpc6128.rom and | 7 | compressed), e.g. cpc6128.rom and amsdos.rom. The path to these | |
8 | amsdos.rom. | 8 | is configurable in ${PKG_SYSCONFDIR}/cap32.cfg. | |
9 | 9 | |||
10 | Note that Caprice32's executable name is "cap32" rather than "caprice32". | 10 | Note that Caprice32's executable name is "cap32" rather than "caprice32". | |
11 | 11 | |||
12 | The F1 key opens Caprice32's menu. | 12 | The F1 key opens Caprice32's menu. | |
13 | 13 | |||
14 | =========================================================================== | 14 | =========================================================================== |
@@ -1,16 +1,16 @@ | @@ -1,16 +1,16 @@ | |||
1 | # $NetBSD: Makefile,v 1.1 2020/03/06 12:23:01 nia Exp $ | 1 | # $NetBSD: Makefile,v 1.2 2020/04/22 08:13:39 nia Exp $ | |
2 | 2 | |||
3 | DISTNAME= caprice32-4.5.0 | 3 | DISTNAME= caprice32-4.6.0 | |
4 | CATEGORIES= emulators | 4 | CATEGORIES= emulators | |
5 | MASTER_SITES= ${MASTER_SITE_GITHUB:=ColinPitrat/} | 5 | MASTER_SITES= ${MASTER_SITE_GITHUB:=ColinPitrat/} | |
6 | GITHUB_TAG= v${PKGVERSION_NOREV} | 6 | GITHUB_TAG= v${PKGVERSION_NOREV} | |
7 | 7 | |||
8 | MAINTAINER= pkgsrc-users@NetBSD.org | 8 | MAINTAINER= pkgsrc-users@NetBSD.org | |
9 | HOMEPAGE= https://github.com/ColinPitrat/caprice32 | 9 | HOMEPAGE= https://github.com/ColinPitrat/caprice32 | |
10 | COMMENT= Emulator of the Amstrad CPC 8bit home computer range | 10 | COMMENT= Emulator of the Amstrad CPC 8bit home computer range | |
11 | LICENSE= gnu-gpl-v2 | 11 | LICENSE= gnu-gpl-v2 | |
12 | 12 | |||
13 | USE_TOOLS+= gmake pkg-config | 13 | USE_TOOLS+= gmake pkg-config | |
14 | USE_LANGUAGES= c c++ | 14 | USE_LANGUAGES= c c++ | |
15 | MAKE_FILE= makefile | 15 | MAKE_FILE= makefile | |
16 | 16 | |||
@@ -28,14 +28,15 @@ SUBST_VARS.conf+= PREFIX | @@ -28,14 +28,15 @@ SUBST_VARS.conf+= PREFIX | |||
28 | SUBST_VARS.conf+= PKG_SYSCONFDIR | 28 | SUBST_VARS.conf+= PKG_SYSCONFDIR | |
29 | 29 | |||
30 | EGDIR= ${PREFIX}/share/examples/caprice32 | 30 | EGDIR= ${PREFIX}/share/examples/caprice32 | |
31 | 31 | |||
32 | CONF_FILES+= ${EGDIR}/cap32.cfg ${PKG_SYSCONFDIR}/cap32.cfg | 32 | CONF_FILES+= ${EGDIR}/cap32.cfg ${PKG_SYSCONFDIR}/cap32.cfg | |
33 | 33 | |||
34 | RESTRICTED= Questionable ROM images in source tree | 34 | RESTRICTED= Questionable ROM images in source tree | |
35 | NO_SRC_ON_FTP= ${RESTRICTED} | 35 | NO_SRC_ON_FTP= ${RESTRICTED} | |
36 | 36 | |||
37 | .include "../../devel/SDL/buildlink3.mk" | 37 | .include "../../devel/SDL/buildlink3.mk" | |
38 | .include "../../devel/zlib/buildlink3.mk" | 38 | .include "../../devel/zlib/buildlink3.mk" | |
39 | .include "../../graphics/freetype2/buildlink3.mk" | 39 | .include "../../graphics/freetype2/buildlink3.mk" | |
40 | .include "../../graphics/png/buildlink3.mk" | 40 | .include "../../graphics/png/buildlink3.mk" | |
41 | .include "../../sysutils/desktop-file-utils/desktopdb.mk" | |||
41 | .include "../../mk/bsd.pkg.mk" | 42 | .include "../../mk/bsd.pkg.mk" |
@@ -1,20 +1,25 @@ | @@ -1,20 +1,25 @@ | |||
1 | @comment $NetBSD: PLIST,v 1.1 2020/03/06 12:23:01 nia Exp $ | 1 | @comment $NetBSD: PLIST,v 1.2 2020/04/22 08:13:39 nia Exp $ | |
2 | bin/cap32 | 2 | bin/cap32 | |
3 | man/man6/cap32.6 | 3 | man/man6/cap32.6 | |
4 | share/applications/caprice32.desktop | |||
4 | share/caprice32/resources/audio.bmp | 5 | share/caprice32/resources/audio.bmp | |
5 | share/caprice32/resources/cap32logo.bmp | 6 | share/caprice32/resources/cap32logo.bmp | |
6 | share/caprice32/resources/disk.bmp | 7 | share/caprice32/resources/disk.bmp | |
7 | share/caprice32/resources/general.bmp | 8 | share/caprice32/resources/general.bmp | |
8 | share/caprice32/resources/input.bmp | 9 | share/caprice32/resources/input.bmp | |
10 | share/caprice32/resources/keymap_de_linux.map | |||
11 | share/caprice32/resources/keymap_de_win.map | |||
9 | share/caprice32/resources/keymap_es_linux.map | 12 | share/caprice32/resources/keymap_es_linux.map | |
10 | share/caprice32/resources/keymap_es_win.map | 13 | share/caprice32/resources/keymap_es_win.map | |
11 | share/caprice32/resources/keymap_fr_linux.map | 14 | share/caprice32/resources/keymap_fr_linux.map | |
12 | share/caprice32/resources/keymap_fr_win.map | 15 | share/caprice32/resources/keymap_fr_win.map | |
13 | share/caprice32/resources/keymap_uk_linux.map | 16 | share/caprice32/resources/keymap_uk_linux.map | |
14 | share/caprice32/resources/keymap_uk_win.map | 17 | share/caprice32/resources/keymap_uk_win.map | |
15 | share/caprice32/resources/keymap_us.map | 18 | share/caprice32/resources/keymap_us.map | |
16 | share/caprice32/resources/rom.bmp | 19 | share/caprice32/resources/rom.bmp | |
17 | share/caprice32/resources/vera_mono.ttf | 20 | share/caprice32/resources/vera_mono.ttf | |
18 | share/caprice32/resources/vera_sans.ttf | 21 | share/caprice32/resources/vera_sans.ttf | |
19 | share/caprice32/resources/video.bmp | 22 | share/caprice32/resources/video.bmp | |
20 | share/examples/caprice32/cap32.cfg | 23 | share/examples/caprice32/cap32.cfg | |
24 | share/pixmaps/caprice32.png | |||
25 | @pkgdir share/caprice32/rom |
@@ -1,10 +1,9 @@ | @@ -1,10 +1,9 @@ | |||
1 | $NetBSD: distinfo,v 1.1 2020/03/06 12:23:01 nia Exp $ | 1 | $NetBSD: distinfo,v 1.2 2020/04/22 08:13:39 nia Exp $ | |
2 | 2 | |||
3 | SHA1 (caprice32-4.5.0.tar.gz) = c1f824023a0cee23488e238cb518d4b176594ee2 | 3 | SHA1 (caprice32-4.6.0.tar.gz) = 15cf01ea5237260a941d82363677bf61c502e2d5 | |
4 | RMD160 (caprice32-4.5.0.tar.gz) = b803d7f0f8742fc7bb10d23e24c71dbaa7484f6b | 4 | RMD160 (caprice32-4.6.0.tar.gz) = 845b37aff8ecacbae43cd90bf181efdee97b2fb6 | |
5 | SHA512 (caprice32-4.5.0.tar.gz) = 9f4c2583fa7d5215901765109177eef60c89dc322b59c352473bdc00dabc5d65dba112bcf4c41b47322c98e9b76d11fc7ecdf9e9973c57ba42b6966ceaba5efd | 5 | SHA512 (caprice32-4.6.0.tar.gz) = b34c1198d56035243d4e07b6099da5ba21bfe6aa2c0955c179d21678b4befc91306aedb212a7e4998ce1fc49333b38f567fc8de229cc7512f035cfc65fa1e9f2 | |
6 | Size (caprice32-4.5.0.tar.gz) = 577297 bytes | 6 | Size (caprice32-4.6.0.tar.gz) = 591257 bytes | |
7 | SHA1 (patch-cap32.cfg) = 862cb8eff1235e3cbd95410a5e2074cf7a48df09 | 7 | SHA1 (patch-doc_man6_cap32.6) = 977a6c1ad050123a342bb370e0a30ae28efc0ac1 | |
8 | SHA1 (patch-doc_man6_cap32.6) = 9779e2fb84d22f4f74bb8540872239e4359d0aeb | 8 | SHA1 (patch-makefile) = 2a4ec14d66d66168c325ed4fbf9a259b4477d8ca | |
9 | SHA1 (patch-makefile) = 8a25b98eeb0e7b2c016628bb3dda0e8a8e084915 | 9 | SHA1 (patch-src_cap32.cpp) = 24a5b40809079b81ff23be3983c20dd0391213d9 | |
10 | SHA1 (patch-src_cap32.cpp) = c6d6c23f8a0cc59cdecbe63d99cca5b87f1eb274 |
@@ -1,24 +1,24 @@ | @@ -1,24 +1,24 @@ | |||
1 | $NetBSD: patch-doc_man6_cap32.6,v 1.1 2020/03/06 12:23:01 nia Exp $ | 1 | $NetBSD: patch-doc_man6_cap32.6,v 1.2 2020/04/22 08:13:40 nia Exp $ | |
2 | 2 | |||
3 | Fix path. | 3 | Fix path. | |
4 | 4 | |||
5 | --- doc/man6/cap32.6.orig 2019-01-04 19:01:29.000000000 +0000 | 5 | --- doc/man6/cap32.6.orig 2020-03-14 14:36:08.000000000 +0000 | |
6 | +++ doc/man6/cap32.6 | 6 | +++ doc/man6/cap32.6 | |
7 | @@ -26,7 +26,7 @@ The \fBrom_path\fR entry in the configur | 7 | @@ -34,7 +34,7 @@ When launched, Caprice32 will look for a | |
8 | .PP | 8 | .br | |
9 | \fBConfiguration\fR | 9 | - \fB$HOME/.cap32.cfg\fR for compatibility. | |
10 | .RS | 10 | .br | |
11 | -When launched, Caprice32 will look for a configuration file in several locations. If a configuration file was specified using the \fB\-\-cfg_file\fR command line switch, Caprice32 will try and use it. If no configuration file was specified, or the configuration file specified does not exist, Caprice32 will try and open, in this order: \fB$CWD/cap32.cfg\fR ($CWD being the directory where the cap32 executable resides), then a \fB.cap32.cfg\fR file in the user home directory, then \fB/etc/cap32.cfg\fR. Caprice32 will use the first valid file it finds. If no configuration file is found, a default configuration will be used. | 11 | - - \fB/etc/cap32.cfg\fR. | |
12 | +When launched, Caprice32 will look for a configuration file in several locations. If a configuration file was specified using the \fB\-\-cfg_file\fR command line switch, Caprice32 will try and use it. If no configuration file was specified, or the configuration file specified does not exist, Caprice32 will try and open, in this order: \fB$CWD/cap32.cfg\fR ($CWD being the directory where the cap32 executable resides), then a \fB.cap32.cfg\fR file in the user home directory, then \fB@PKG_SYSCONFDIR@/cap32.cfg\fR. Caprice32 will use the first valid file it finds. If no configuration file is found, a default configuration will be used. | 12 | + - \fB@PKG_SYSCONFDIR@/cap32.cfg\fR. | |
13 | .br | |||
14 | Caprice32 will use the first valid file it finds. If no configuration file is found, a default configuration will be used. | |||
13 | .PP | 15 | .PP | |
14 | The configuration file contains various configuration parameters, some of which can be modified from the GUI. | 16 | @@ -148,7 +148,7 @@ The screen capture code uses driedfruit | |
15 | When saving the configuration from the GUI, it will be written in the configuration file specified by the \fB\-\-cfg_file\fR switch, if it exists, else in $CWD/cap32.cfg if it exists, otherwise in $HOME/.cap32.cfg. | |||
16 | @@ -138,7 +138,7 @@ The screen capture code uses driedfruit | |||
17 | .SH FILES | 17 | .SH FILES | |
18 | $HOME/.cap32.cfg | 18 | $HOME/.cap32.cfg | |
19 | .br | 19 | .br | |
20 | -/etc/cap32.cfg | 20 | -/etc/cap32.cfg | |
21 | +@PKG_SYSCONFDIR@/cap32.cfg | 21 | +@PKG_SYSCONFDIR@/cap32.cfg | |
22 | 22 | |||
23 | .SH SEE ALSO | 23 | .SH SEE ALSO | |
24 | https://github.com/ColinPitrat/caprice32 | 24 | https://github.com/ColinPitrat/caprice32 |
@@ -1,53 +1,51 @@ | @@ -1,53 +1,51 @@ | |||
1 | $NetBSD: patch-makefile,v 1.1 2020/03/06 12:23:01 nia Exp $ | 1 | $NetBSD: patch-makefile,v 1.2 2020/04/22 08:13:40 nia Exp $ | |
2 | 2 | |||
3 | We pass our own flags. | 3 | - Don't force -O2 | |
4 | - Use the executable for the "all" target | |||
5 | - Use BSD_INSTALL_*. | |||
4 | 6 | |||
5 | --- makefile.orig 2019-01-04 19:01:29.000000000 +0000 | 7 | --- makefile.orig 2020-03-14 14:36:08.000000000 +0000 | |
6 | +++ makefile | 8 | +++ makefile | |
7 | @@ -50,7 +50,6 @@ COMMON_CFLAGS += -DWITH_IPF | 9 | @@ -104,7 +104,7 @@ TEST_OBJECTS:=$(TEST_DEPENDS:.d=.o) | |
8 | LIBS += $(MINGW_PATH)/bin/$(CAPSIPFDLL) | |||
9 | endif | |||
10 | else | |||
11 | -prefix = /usr/local | |||
12 | TARGET = cap32 | |||
13 | TEST_TARGET = test_runner | |||
14 | IPATHS = -Isrc/ -Isrc/gui/includes `pkg-config --cflags freetype2` `sdl-config --cflags` `pkg-config --cflags libpng` | |||
15 | @@ -97,7 +96,7 @@ TEST_OBJECTS:=$(TEST_DEPENDS:.d=.o) | |||
16 | WARNINGS = -Wall -Wextra -Wzero-as-null-pointer-constant -Wformat=2 -Wold-style-cast -Wmissing-include-dirs -Wlogical-op -Woverloaded-virtual -Wpointer-arith -Wredundant-decls | 10 | WARNINGS = -Wall -Wextra -Wzero-as-null-pointer-constant -Wformat=2 -Wold-style-cast -Wmissing-include-dirs -Wlogical-op -Woverloaded-virtual -Wpointer-arith -Wredundant-decls | |
17 | COMMON_CFLAGS += $(CFLAGS) -std=c++11 $(IPATHS) | 11 | COMMON_CFLAGS += $(CFLAGS) -std=c++11 $(IPATHS) | |
18 | DEBUG_FLAGS = -Werror -g -O0 -DDEBUG | 12 | DEBUG_FLAGS = -Werror -g -O0 -DDEBUG | |
19 | -RELEASE_FLAGS = -O2 -funroll-loops -ffast-math -fomit-frame-pointer -fno-strength-reduce -finline-functions -s | 13 | -RELEASE_FLAGS = -O2 -funroll-loops -ffast-math -fomit-frame-pointer -fno-strength-reduce -finline-functions -s | |
20 | +RELEASE_FLAGS = -ffast-math -fno-strength-reduce -finline-functions | 14 | +RELEASE_FLAGS = -ffast-math -fno-strength-reduce -finline-functions | |
21 | BUILD_FLAGS = $(RELEASE_FLAGS) | 15 | BUILD_FLAGS = $(RELEASE_FLAGS) | |
22 | 16 | |||
23 | debug: BUILD_FLAGS:=$(DEBUG_FLAGS) | 17 | debug: BUILD_FLAGS:=$(DEBUG_FLAGS) | |
24 | @@ -117,7 +116,7 @@ ifdef DEBUG | 18 | @@ -124,7 +124,7 @@ ifdef DEBUG | |
25 | BUILD_FLAGS = $(DEBUG_FLAGS) | 19 | BUILD_FLAGS = $(DEBUG_FLAGS) | |
26 | all: check_deps debug | 20 | all: check_deps debug | |
27 | else | 21 | else | |
28 | -all: check_deps distrib | 22 | -all: check_deps distrib | |
29 | +all: check_deps $(TARGET) | 23 | +all: check_deps $(TARGET) | |
30 | endif | 24 | endif | |
31 | 25 | |||
32 | # gtest doesn't build with warnings flags, hence the COMMON_CFLAGS | 26 | # gtest doesn't build with warnings flags, hence the COMMON_CFLAGS | |
33 | @@ -204,11 +203,15 @@ distrib: $(TARGET) | 27 | @@ -211,11 +211,19 @@ distrib: $(TARGET) | |
34 | ln -s caprice32-$(VERSION).tar.bz2 $(ARCHIVE)/caprice32_$(VERSION).orig.tar.bz2 || true | 28 | ln -s caprice32-$(VERSION).tar.bz2 $(ARCHIVE)/caprice32_$(VERSION).orig.tar.bz2 || true | |
35 | 29 | |||
36 | install: $(TARGET) | 30 | install: $(TARGET) | |
37 | - install -D $(TARGET) $(DESTDIR)$(prefix)/bin/$(TARGET) | 31 | - install -D $(TARGET) $(DESTDIR)$(prefix)/bin/$(TARGET) | |
38 | - install -D $(GROFF_DOC) $(DESTDIR)$(prefix)/share/man/man6/cap32.6 | 32 | - install -D $(GROFF_DOC) $(DESTDIR)$(prefix)/share/man/man6/cap32.6 | |
39 | - install -D -m664 cap32.cfg $(DESTDIR)/etc/cap32.cfg | 33 | - install -D -m664 cap32.cfg $(DESTDIR)/etc/cap32.cfg | |
40 | - mkdir -p $(DESTDIR)$(prefix)/share/caprice32 | 34 | - mkdir -p $(DESTDIR)$(prefix)/share/caprice32 | |
41 | - cp -r resources rom $(DESTDIR)$(prefix)/share/caprice32 | 35 | - cp -r resources rom $(DESTDIR)$(prefix)/share/caprice32 | |
42 | + $(BSD_INSTALL_PROGRAM_DIR) $(DESTDIR)$(prefix)/bin | 36 | + $(BSD_INSTALL_PROGRAM_DIR) $(DESTDIR)$(prefix)/bin | |
43 | + $(BSD_INSTALL_PROGRAM) $(TARGET) $(DESTDIR)$(prefix)/bin/$(TARGET) | 37 | + $(BSD_INSTALL_PROGRAM) $(TARGET) $(DESTDIR)$(prefix)/bin/$(TARGET) | |
44 | + $(BSD_INSTALL_MAN_DIR) $(DESTDIR)$(prefix)/$(PKGMANDIR)/man6 | 38 | + $(BSD_INSTALL_MAN_DIR) $(DESTDIR)$(prefix)/$(PKGMANDIR)/man6 | |
45 | + $(BSD_INSTALL_MAN) $(GROFF_DOC) $(DESTDIR)$(prefix)/$(PKGMANDIR)/man6/cap32.6 | 39 | + $(BSD_INSTALL_MAN) $(GROFF_DOC) $(DESTDIR)$(prefix)/$(PKGMANDIR)/man6/cap32.6 | |
46 | + $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(prefix)/share/examples/caprice32 | 40 | + $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(prefix)/share/examples/caprice32 | |
47 | + $(BSD_INSTALL_DATA) cap32.cfg $(DESTDIR)$(prefix)/share/examples/caprice32/cap32.cfg | 41 | + $(BSD_INSTALL_DATA) cap32.cfg $(DESTDIR)$(prefix)/share/examples/caprice32/cap32.cfg | |
48 | + $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(prefix)/share/caprice32/resources | 42 | + $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(prefix)/share/caprice32/resources | |
49 | + $(BSD_INSTALL_DATA) resources/* $(DESTDIR)$(prefix)/share/caprice32/resources | 43 | + $(BSD_INSTALL_DATA) resources/*.* $(DESTDIR)$(prefix)/share/caprice32/resources | |
44 | + $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(prefix)/share/pixmaps | |||
45 | + $(BSD_INSTALL_DATA) resources/freedesktop/caprice32.png $(DESTDIR)$(prefix)/share/pixmaps | |||
46 | + $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(prefix)/share/applications | |||
47 | + $(BSD_INSTALL_DATA) resources/freedesktop/caprice32.desktop $(DESTDIR)$(prefix)/share/applications | |||
50 | + $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(prefix)/share/caprice32/rom | 48 | + $(BSD_INSTALL_DATA_DIR) $(DESTDIR)$(prefix)/share/caprice32/rom | |
51 | endif | 49 | endif | |
52 | 50 | |||
53 | #################################### | 51 | #################################### |
@@ -1,15 +1,15 @@ | @@ -1,15 +1,15 @@ | |||
1 | $NetBSD: patch-src_cap32.cpp,v 1.1 2020/03/06 12:23:01 nia Exp $ | 1 | $NetBSD: patch-src_cap32.cpp,v 1.2 2020/04/22 08:13:40 nia Exp $ | |
2 | 2 | |||
3 | Fix paths. | 3 | Fix paths. | |
4 | 4 | |||
5 | --- src/cap32.cpp.orig 2019-01-04 19:01:29.000000000 +0000 | 5 | --- src/cap32.cpp.orig 2020-03-14 14:36:08.000000000 +0000 | |
6 | +++ src/cap32.cpp | 6 | +++ src/cap32.cpp | |
7 | @@ -1578,7 +1578,7 @@ std::string getConfigurationFilename(boo | 7 | @@ -1577,7 +1577,7 @@ std::string getConfigurationFilename(boo | |
8 | configFilename = std::string(getenv("HOME")) + "/.cap32.cfg"; | 8 | { getenv("XDG_CONFIG_HOME"), "/cap32.cfg" }, | |
9 | // If still not found, look for cap32.cfg in /etc | 9 | { getenv("HOME"), "/.config/cap32.cfg" }, | |
10 | if (!forWrite && access(configFilename.c_str(), F_OK) != 0) { | 10 | { getenv("HOME"), "/.cap32.cfg" }, | |
11 | - configFilename = "/etc/cap32.cfg"; | 11 | - { PATH_OK, "/etc/cap32.cfg"} | |
12 | + configFilename = "@PKG_SYSCONFDIR@/cap32.cfg"; | 12 | + { PATH_OK, "@PKG_SYSCONFDIR@/cap32.cfg"} | |
13 | } | 13 | }; | |
14 | } | 14 | ||
15 | } | 15 | for(const auto& p: configPaths){ |