summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
authorA. Wilcox <awilcox@wilcox-tech.com>2019-02-21 16:56:45 +0000
committerA. Wilcox <awilcox@wilcox-tech.com>2019-02-21 16:56:45 +0000
commit76bc29874fd5fd4f772b9aae73c5760516f0cc5a (patch)
tree4ef41155cf23f6303df8b2049e903e1525266400 /user
parent771372edf66f59cd0cd77c652e58ff4584a73d1f (diff)
parenta46991ed1070857203f2203c4360d786cce44add (diff)
downloadpackages-76bc29874fd5fd4f772b9aae73c5760516f0cc5a.tar.gz
packages-76bc29874fd5fd4f772b9aae73c5760516f0cc5a.tar.bz2
packages-76bc29874fd5fd4f772b9aae73c5760516f0cc5a.tar.xz
packages-76bc29874fd5fd4f772b9aae73c5760516f0cc5a.zip
Merge branch 'tinyfugue' into 'master'
user/tf: new package See merge request !179
Diffstat (limited to 'user')
-rw-r--r--user/tf/0001-Add-DESTDIR-support.patch113
-rw-r--r--user/tf/0002-Correct-use-of-va_list.patch34
-rw-r--r--user/tf/0003-Minor-man-page-fixes.patch112
-rw-r--r--user/tf/0006-Fix-library-install-path.patch38
-rw-r--r--user/tf/0007-Fix-spelling-errors.patch59
-rw-r--r--user/tf/0008-Build-on-musl.patch49
-rw-r--r--user/tf/APKBUILD47
7 files changed, 452 insertions, 0 deletions
diff --git a/user/tf/0001-Add-DESTDIR-support.patch b/user/tf/0001-Add-DESTDIR-support.patch
new file mode 100644
index 000000000..e45794bd4
--- /dev/null
+++ b/user/tf/0001-Add-DESTDIR-support.patch
@@ -0,0 +1,113 @@
+--- tf-50b8/unix/unix.mak
++++ tf-50b8.new/unix/unix.mak
+@@ -87,57 +87,65 @@
+ -test -z "$(STRIP)" || $(STRIP) tf$(X) || true
+
+ PREFIXDIRS:
+- test -d "$(bindir)" || mkdir $(bindir)
+- test -d "$(datadir)" || mkdir $(datadir)
+
+ install_TF $(TF): tf$(X) $(BUILDERS)
+- -@rm -f $(TF)
+- cp tf$(X) $(TF)
+- chmod $(MODE) $(TF)
++ install -Dm755 tf$(X) $(DESTDIR)$(bindir)/tf
+
+ SYMLINK $(SYMLINK): $(TF)
+- test -z "$(SYMLINK)" || { rm -f $(SYMLINK) && ln -s $(TF) $(SYMLINK); }
+
+ LIBRARY $(TF_LIBDIR): ../tf-lib/tf-help ../tf-lib/tf-help.idx
+- @echo '## Creating library directory...'
+-# @# Overly simplified shell commands, to avoid problems on ultrix
+- -@test -n "$(TF_LIBDIR)" || echo "TF_LIBDIR is undefined."
+- test -n "$(TF_LIBDIR)"
+- test -d "$(TF_LIBDIR)" || mkdir $(TF_LIBDIR)
+- -@test -d "$(TF_LIBDIR)" || echo "Can't make $(TF_LIBDIR) directory. See if"
+- -@test -d "$(TF_LIBDIR)" || echo "there is already a file with that name."
+- test -d "$(TF_LIBDIR)"
+-#
+-# @#rm -f $(TF_LIBDIR)/*; # wrong: this would remove local.tf, etc.
+- @echo '## Copying library files...'
+- cd ../tf-lib; \
+- for f in *; do test -f $$f && files="$$files $$f"; done; \
+- ( cd $(TF_LIBDIR); rm -f $$files tf.help tf.help.index; ); \
+- cp $$files $(TF_LIBDIR); \
+- cd $(TF_LIBDIR); \
+- chmod $(MODE) $$files; chmod ugo-wx $$files
+- -rm -f $(TF_LIBDIR)/CHANGES
+- cp ../CHANGES $(TF_LIBDIR)
+- chmod $(MODE) $(TF_LIBDIR)/CHANGES; chmod ugo-wx $(TF_LIBDIR)/CHANGES
+- chmod $(MODE) $(TF_LIBDIR)
+- -@cd $(TF_LIBDIR); old=`ls replace.tf 2>/dev/null`; \
+- if [ -n "$$old" ]; then \
+- echo "## WARNING: Obsolete files found in $(TF_LIBDIR): $$old"; \
+- fi
+- @echo '## Creating links so old library names still work...'
+-# @# note: ln -sf isn't portable.
+- @cd $(TF_LIBDIR); \
+- rm -f bind-bash.tf; ln -s kb-bash.tf bind-bash.tf; \
+- rm -f bind-emacs.tf; ln -s kb-emacs.tf bind-emacs.tf; \
+- rm -f completion.tf; ln -s complete.tf completion.tf; \
+- rm -f factorial.tf; ln -s factoral.tf factorial.tf; \
+- rm -f file-xfer.tf; ln -s filexfer.tf file-xfer.tf; \
+- rm -f local.tf.sample; ln -s local-eg.tf local.tf.sample; \
+- rm -f pref-shell.tf; ln -s psh.tf pref-shell.tf; \
+- rm -f space_page.tf; ln -s spc-page.tf space_page.tf; \
+- rm -f speedwalk.tf; ln -s spedwalk.tf speedwalk.tf; \
+- rm -f stack_queue.tf; ln -s stack-q.tf stack_queue.tf; \
+- rm -f worldqueue.tf; ln -s world-q.tf worldqueue.tf;
++ install -Dm644 ../tf-lib/lisp.tf $(DESTDIR)$(datadir)/tf-lib/lisp.tf
++ install -Dm644 ../tf-lib/hanoi.tf $(DESTDIR)$(datadir)/tf-lib/hanoi.tf
++ install -Dm644 ../tf-lib/spell.tf $(DESTDIR)$(datadir)/tf-lib/spell.tf
++ install -Dm644 ../tf-lib/spedwalk.tf $(DESTDIR)$(datadir)/tf-lib/spedwalk.tf
++ install -Dm644 ../tf-lib/kb-emacs.tf $(DESTDIR)$(datadir)/tf-lib/kb-emacs.tf
++ install -Dm644 ../tf-lib/tf-help.idx $(DESTDIR)$(datadir)/tf-lib/tf-help.idx
++ install -Dm644 ../tf-lib/tools.tf $(DESTDIR)$(datadir)/tf-lib/tools.tf
++ install -Dm644 ../tf-lib/watch.tf $(DESTDIR)$(datadir)/tf-lib/watch.tf
++ install -Dm644 ../tf-lib/kb_badterm.tf $(DESTDIR)$(datadir)/tf-lib/kb_badterm.tf
++ install -Dm644 ../tf-lib/world-q.tf $(DESTDIR)$(datadir)/tf-lib/world-q.tf
++ install -Dm644 ../tf-lib/changes.tf $(DESTDIR)$(datadir)/tf-lib/changes.tf
++ install -Dm644 ../tf-lib/stack-q.tf $(DESTDIR)$(datadir)/tf-lib/stack-q.tf
++ install -Dm644 ../tf-lib/factoral.tf $(DESTDIR)$(datadir)/tf-lib/factoral.tf
++ install -Dm644 ../tf-lib/cylon.tf $(DESTDIR)$(datadir)/tf-lib/cylon.tf
++ install -Dm644 ../tf-lib/quoter.tf $(DESTDIR)$(datadir)/tf-lib/quoter.tf
++ install -Dm644 ../tf-lib/psh.tf $(DESTDIR)$(datadir)/tf-lib/psh.tf
++ install -Dm644 ../tf-lib/textutil.tf $(DESTDIR)$(datadir)/tf-lib/textutil.tf
++ install -Dm644 ../tf-lib/finger.tf $(DESTDIR)$(datadir)/tf-lib/finger.tf
++ install -Dm644 ../tf-lib/savehist.tf $(DESTDIR)$(datadir)/tf-lib/savehist.tf
++ install -Dm644 ../tf-lib/textencode.tf $(DESTDIR)$(datadir)/tf-lib/textencode.tf
++ install -Dm644 ../tf-lib/spc-page.tf $(DESTDIR)$(datadir)/tf-lib/spc-page.tf
++ install -Dm644 ../tf-lib/teraterm.keyboard.cnf $(DESTDIR)$(datadir)/tf-lib/teraterm.keyboard.cnf
++ install -Dm644 ../tf-lib/testcolor.tf $(DESTDIR)$(datadir)/tf-lib/testcolor.tf
++ install -Dm644 ../tf-lib/tintin.tf $(DESTDIR)$(datadir)/tf-lib/tintin.tf
++ install -Dm644 ../tf-lib/grep.tf $(DESTDIR)$(datadir)/tf-lib/grep.tf
++ install -Dm644 ../tf-lib/tfrc $(DESTDIR)$(datadir)/tf-lib/tfrc
++ install -Dm644 ../tf-lib/rwho.tf $(DESTDIR)$(datadir)/tf-lib/rwho.tf
++ install -Dm644 ../tf-lib/alias.tf $(DESTDIR)$(datadir)/tf-lib/alias.tf
++ install -Dm644 ../tf-lib/kbbind.tf $(DESTDIR)$(datadir)/tf-lib/kbbind.tf
++ install -Dm644 ../tf-lib/complete.tf $(DESTDIR)$(datadir)/tf-lib/complete.tf
++ install -Dm644 ../tf-lib/kbregion.tf $(DESTDIR)$(datadir)/tf-lib/kbregion.tf
++ install -Dm644 ../tf-lib/color.tf $(DESTDIR)$(datadir)/tf-lib/color.tf
++ install -Dm644 ../tf-lib/kb-bash.tf $(DESTDIR)$(datadir)/tf-lib/kb-bash.tf
++ install -Dm644 ../tf-lib/kbstack.tf $(DESTDIR)$(datadir)/tf-lib/kbstack.tf
++ install -Dm644 ../tf-lib/filexfer.tf $(DESTDIR)$(datadir)/tf-lib/filexfer.tf
++ install -Dm644 ../tf-lib/activity_status.tf $(DESTDIR)$(datadir)/tf-lib/activity_status.tf
++ install -Dm644 ../tf-lib/tfstatus.tf $(DESTDIR)$(datadir)/tf-lib/tfstatus.tf
++ install -Dm644 ../tf-lib/relog.tf $(DESTDIR)$(datadir)/tf-lib/relog.tf
++ install -Dm644 ../tf-lib/local-eg.tf $(DESTDIR)$(datadir)/tf-lib/local-eg.tf
++ install -Dm644 ../tf-lib/stdlib.tf $(DESTDIR)$(datadir)/tf-lib/stdlib.tf
++ install -Dm644 ../tf-lib/at.tf $(DESTDIR)$(datadir)/tf-lib/at.tf
++ install -Dm644 ../tf-lib/tick.tf $(DESTDIR)$(datadir)/tf-lib/tick.tf
++ install -Dm644 ../tf-lib/kb-os2.tf $(DESTDIR)$(datadir)/tf-lib/kb-os2.tf
++ install -Dm644 ../tf-lib/kbfunc.tf $(DESTDIR)$(datadir)/tf-lib/kbfunc.tf
++ install -Dm644 ../tf-lib/pcmd.tf $(DESTDIR)$(datadir)/tf-lib/pcmd.tf
++ install -Dm644 ../tf-lib/map.tf $(DESTDIR)$(datadir)/tf-lib/map.tf
++ install -Dm644 ../tf-lib/activity_status2.tf $(DESTDIR)$(datadir)/tf-lib/activity_status2.tf
++ install -Dm644 ../tf-lib/kb-old.tf $(DESTDIR)$(datadir)/tf-lib/kb-old.tf
++ install -Dm644 ../tf-lib/tr.tf $(DESTDIR)$(datadir)/tf-lib/tr.tf
++ install -Dm644 ../CHANGES $(DESTDIR)$(datadir)/tf-lib/CHANGES
++ install -Dm644 ../README $(DESTDIR)$(datadir)/tf-lib/README
++ install -Dm644 ../tf-lib/examples.old $(DESTDIR)$(datadir)/tf-lib/examples.old
+
+ makehelp: makehelp.c
+ $(CC) $(CFLAGS) -o makehelp makehelp.c
diff --git a/user/tf/0002-Correct-use-of-va_list.patch b/user/tf/0002-Correct-use-of-va_list.patch
new file mode 100644
index 000000000..d13fcd854
--- /dev/null
+++ b/user/tf/0002-Correct-use-of-va_list.patch
@@ -0,0 +1,34 @@
+From: Russ Allbery <rra@debian.org>
+Date: Sun, 17 Feb 2008 22:23:24 -0800
+Subject: Correct use of va_list
+
+va_copy a va_list before using it in vsprintf so that we don't use the
+same va_list repeatedly. Patch taken from the upstream bug tracker
+and will apparently be in the next release after 5.0beta8.
+---
+ src/tfio.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/tfio.c b/src/tfio.c
+index 2cd2103..151583e 100644
+--- a/src/tfio.c
++++ b/src/tfio.c
+@@ -497,6 +497,7 @@ void vSprintf(String *buf, int flags, const char *fmt, va_list ap)
+ const conString *Sval;
+ int len, min, max, leftjust, stars;
+ attr_t attrs = buf->attrs;
++ va_list ap_copy;
+
+ if (!(flags & SP_APPEND) && buf->data) Stringtrunc(buf, 0);
+ while (*fmt) {
+@@ -522,7 +523,9 @@ void vSprintf(String *buf, int flags, const char *fmt, va_list ap)
+ case 'x': case 'X': case 'u': case 'o':
+ case 'f': case 'e': case 'E': case 'g': case 'G':
+ case 'p':
+- vsprintf(tempbuf, spec, ap);
++ va_copy(ap_copy, ap);
++ vsprintf(tempbuf, spec, ap_copy);
++ va_end(ap_copy);
+ Stringcat(buf, tempbuf);
+ /* eat the arguments used by vsprintf() */
+ while (stars--) (void)va_arg(ap, int);
diff --git a/user/tf/0003-Minor-man-page-fixes.patch b/user/tf/0003-Minor-man-page-fixes.patch
new file mode 100644
index 000000000..9611744a5
--- /dev/null
+++ b/user/tf/0003-Minor-man-page-fixes.patch
@@ -0,0 +1,112 @@
+From: Russ Allbery <rra@debian.org>
+Date: Sun, 17 Feb 2008 22:17:59 -0800
+Subject: Minor man page fixes
+
+Escape hyphens properly, add a better man page header, fix the
+placement of punctuation around font changes, and fix a spelling
+error.
+---
+ src/tf.1.nroffman | 34 +++++++++++++++++-----------------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/src/tf.1.nroffman b/src/tf.1.nroffman
+index e8daaca..90691db 100644
+--- a/src/tf.1.nroffman
++++ b/src/tf.1.nroffman
+@@ -1,11 +1,11 @@
+ .\" $Id: tf.1.nroffman,v 34000.8 2007/01/13 23:12:39 kkeys Exp $
+-.TH TF 1 LOCAL
++.TH TF 1 "2007-01-13" "TinyFugue 5.0" "TinyFugue"
+ .SH NAME
+ tf \- TinyFugue, a MUD client
+ .SH SYNOPSIS
+-.B "tf [-f\fIfile\fB] [-lnq] [\fIworld\fB]"
++.B "tf [\-f\fIfile\fB] [\-lnq] [\fIworld\fB]"
+ .br
+-.B "tf [-f\fIfile\fB] \fIhost\fB \fIport\fB"
++.B "tf [\-f\fIfile\fB] \fIhost\fB \fIport\fB"
+ .SH DESCRIPTION
+ \fITinyFugue\fR (also known as "Fugue" or "TF") is a line-based client
+ designed for connecting to MUD servers (note: LP, DIKU, and other servers
+@@ -48,15 +48,15 @@ world and try to connect to it.
+ The \fBhost\fR may be an IP number or regular name format.
+ .PP
+ OPTIONS
+-.IP "-f\fIfile\fR"
++.IP "\-f\fIfile\fR"
+ Load \fIfile\fR instead of $HOME/.tfrc at startup.
+-.IP "-f"
++.IP "\-f"
+ Do not load any personal configuration file. The library will still be loaded.
+-.IP "-l"
++.IP "\-l"
+ Disable automatic login.
+-.IP "-n"
++.IP "\-n"
+ Do not connect to any world at startup.
+-.IP "-q"
++.IP "\-q"
+ Quiet login (overrides %{quiet} flag).
+
+ .SH FEATURES
+@@ -109,7 +109,7 @@ Log a session to a file.
+ .sp
+ Separate LP and Diku style prompts from normal output.
+ .sp
+-Page output using a --More-- prompt.
++Page output using a \-\-More\-\- prompt.
+ .sp
+ Recall previously received text.
+
+@@ -120,14 +120,14 @@ configuration file "stdlib.tf", located in TFLIBDIR.
+ TFLIBDIR is defined when \fITF\fR is installed, and is often
+ /usr/local/lib/tf.lib, or under the home directory of the installer.
+ This library contains many macros
+-and definitions essential to the correct operation of \fITF.\fR
++and definitions essential to the correct operation of \fITF\fR.
+
+ Next, \fITF\fR will attempt to read your personal configuration
+ file, $HOME/.tfrc, in which you can put any \fITF\fR commands you
+ want executed automatically at startup. Two of the most useful
+ commands to use in a \fITF\fR configuration file are /addworld and /load.
+
+-For backward compatability, \fITF\fR will also try
++For backward compatibility, \fITF\fR will also try
+ to read the \fITinyTalk\fR configuration file.
+ Its name defautls to $HOME/.tinytalk, or can be defined by the TINYTALK
+ environment variable.
+@@ -140,19 +140,19 @@ the first Tinyclient with any great number of features, including
+ hiliting and suppression of text, simple triggers, and separating input and
+ output on the screen.
+ Leo Plotkin (Grod) made rather extensive modifications to \fITinytalk\fR
+-to produce \fITinywar,\fR which was plagued with some
++to produce \fITinywar\fR, which was plagued with some
+ serious bugs and was never officially released (the phrase "Tinywar
+ doesn't exist" is often quoted), and is now an unsupported client.
+ \fITF\fR began when Greg Hudson (Explorer_Bob) merged many of the new
+-features of \fITinywar\fR back into \fITinyTalk,\fR
++features of \fITinywar\fR back into \fITinyTalk\fR,
+ and added many new features of his own, most notably the split screen.
+ Some of the code in Greg's releases was contributed by Leo Plotkin.
+-After Greg moved on to \fIVaporTalk,\fR Ken Keys (Hawkeye) took over design
++After Greg moved on to \fIVaporTalk\fR, Ken Keys (Hawkeye) took over design
+ and maintenance of \fITF\fR in July 1991, and continues to make improvements
+ in features and performance.
+ .PP
+ The code size of \fITF\fR has surpassed 300K (unstripped),
+-and is signifigantly larger than \fITinytalk.\fR
++and is signifigantly larger than \fITinytalk\fR.
+ It is, in fact, more than three times the size of a number of existing servers.
+ As of version 3.0, it has 66 builtin commands and 57 library commands,
+ each documented in the helpfile.
+@@ -225,8 +225,8 @@ default macro library.
+ .PP
+ The .tinytalk file may not be supported in the future; use .tfrc instead.
+ .PP
+-The '-' command line option in versions prior to 2.0 is no longer supported,
+-and has been replaced with '-l'.
++The '\-' command line option in versions prior to 2.0 is no longer supported,
++and has been replaced with '\-l'.
+
+ .SH BUGS
+ .PP
diff --git a/user/tf/0006-Fix-library-install-path.patch b/user/tf/0006-Fix-library-install-path.patch
new file mode 100644
index 000000000..52c8e885f
--- /dev/null
+++ b/user/tf/0006-Fix-library-install-path.patch
@@ -0,0 +1,38 @@
+From: Russ Allbery <rra@debian.org>
+Date: Sun, 14 Aug 2016 14:14:47 -0700
+Subject: Fix library install path
+
+The upstream top-level configure script doesn't correctly handle
+--program-suffix without this tweak.
+---
+ configure.in | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index e783564..c938531 100644
+--- a/configure.in
++++ b/configure.in
+@@ -599,13 +599,13 @@ fi
+ dnl The "right" way of using program_transform_name, program_prefix, and
+ dnl program_suffix expects you to use AC_ARG_PROGRAM here and do transformation
+ dnl in the Makefile, but we want the values now, so we do it ourselves.
+-EXENAME="tf"
++EXENAME="tf" PROGNAME="tf"
+ test "${program_prefix}" != "NONE" && EXENAME="${program_prefix}${EXENAME}"
+ test "${program_suffix}" != "NONE" && EXENAME="${EXENAME}${program_suffix}"
+ if test "${program_transform_name}" != "NONE"; then
+ EXENAME=`echo "${EXENAME}" | sed "${program_transform_name}"`
+ fi
+-LIBNAME="${EXENAME}-lib"
++LIBNAME="${PROGNAME}-lib"
+
+ if test "$enable_symlink" = "no"; then
+ SYMLINK=""
+@@ -616,6 +616,7 @@ else
+ fi
+
+ AC_SUBST(EXENAME)
++AC_SUBST(PROGNAME)
+ AC_SUBST(LIBNAME)
+ AC_SUBST(SYMLINK)
+
diff --git a/user/tf/0007-Fix-spelling-errors.patch b/user/tf/0007-Fix-spelling-errors.patch
new file mode 100644
index 000000000..8e78721b7
--- /dev/null
+++ b/user/tf/0007-Fix-spelling-errors.patch
@@ -0,0 +1,59 @@
+From: Russ Allbery <rra@debian.org>
+Date: Sun, 14 Aug 2016 14:22:52 -0700
+Subject: Fix spelling errors
+
+occured -> occurred everywhere
+---
+ CHANGES | 4 ++--
+ src/command.c | 2 +-
+ src/signals.c | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/CHANGES b/CHANGES
+index 037c766..dfc5029 100644
+--- a/CHANGES
++++ b/CHANGES
+@@ -316,7 +316,7 @@ Renamed BACKGROUND hook to BGTRIG (but old name still works).
+ Added BGTEXT hook.
+ Fixed activity_status.tf to update for lines generated by /echo -w.
+ Fixed: ACTIVITY and PREACTIVITY hooks didn't run in the world in which the
+- activity occured when caused by /echo -w.
++ activity occurred when caused by /echo -w.
+ Fixed order of /dc message relative to text already queued on socket.
+ Fixed: under certain conditions, a dead socket would not go away and could
+ not be foregrounded.
+@@ -972,7 +972,7 @@ Fixed compilation error involving conditional and hstrerror under some
+ lame compilers (socket.c:788).
+ Fixed output misdirection during a read() inside a command sub.
+ Fixed rare bug causing command line to execute in wrong world when a
+- simultaneous background trigger occured.
++ simultaneous background trigger occurred.
+ Fixed /world with no arguments.
+ Fixed fatal input bug after /histsize -i. (35a21)
+ Fixed bug which disabled history recording after /recall on an empty history.
+diff --git a/src/command.c b/src/command.c
+index 0409787..624d03b 100644
+--- a/src/command.c
++++ b/src/command.c
+@@ -605,7 +605,7 @@ int do_file_load(const char *args, int tinytalk)
+ !user_result->u.ival && !warned)
+ {
+ eprintf("(This line was implicitly treated as an /addworld "
+- "because it occured before the first '/' line and did not "
++ "because it occurred before the first '/' line and did not "
+ "start with a '/', ';', or '#'.)");
+ warned = 1;
+ }
+diff --git a/src/signals.c b/src/signals.c
+index bd96b87..a00c70e 100644
+--- a/src/signals.c
++++ b/src/signals.c
+@@ -410,7 +410,7 @@ static char initial_dir[PATH_MAX+1] = "."; /* default: many users never chdir */
+ static void coremsg(FILE *dumpfile)
+ {
+ fputs("Also describe what you were doing in tf when this\r\n", stderr);
+- fputs("occured, and whether you can repeat it.\r\n\n", stderr);
++ fputs("occurred, and whether you can repeat it.\r\n\n", stderr);
+ fprintf(dumpfile, "> %.512s\r\n", version);
+ if (*sysname) fprintf(dumpfile, "> %.256s\r\n", sysname);
+ fprintf(dumpfile, "> %.256s\r\n", featurestr->data);
diff --git a/user/tf/0008-Build-on-musl.patch b/user/tf/0008-Build-on-musl.patch
new file mode 100644
index 000000000..9ca62290c
--- /dev/null
+++ b/user/tf/0008-Build-on-musl.patch
@@ -0,0 +1,49 @@
+diff -Nurd tf-50b8/src/malloc.c tf-50b8.new/src/malloc.c
+--- tf-50b8/src/malloc.c 2007-01-13 23:12:39.000000000 +0000
++++ tf-50b8.new/src/malloc.c 2018-01-24 09:13:08.406519279 +0000
+@@ -12,7 +12,7 @@
+ #include "signals.h"
+ #include "malloc.h"
+
+-caddr_t mmalloc_base = NULL;
++void *mmalloc_base = NULL;
+ int low_memory_warning = 0;
+ static char *reserve = NULL;
+
+diff -Nurd tf-50b8/src/macro.c tf-50b8.new/src/macro.c
+--- tf-50b8/src/macro.c 2007-01-13 23:12:39.000000000 +0000
++++ tf-50b8.new/src/macro.c 2018-01-24 09:26:18.479836714 +0000
+@@ -893,7 +893,8 @@
+ }
+ spec->attr &= ~F_NONE;
+ if (spec->nsubattr) {
+- int n = pcre_info(spec->trig.ri->re, NULL, NULL);
++ int n = 0;
++ pcre_fullinfo(spec->trig.ri->re, NULL, PCRE_INFO_CAPTURECOUNT, &n);
+ for (i = 0; i < spec->nsubattr; i++) {
+ spec->subattr[i].attr &= ~F_NONE;
+ if (spec->subattr[i].subexp > n) {
+diff -Nurd tf-50b8/src/pattern.c tf-50b8.new/src/pattern.c
+--- tf-50b8/src/pattern.c 2007-01-13 23:12:39.000000000 +0000
++++ tf-50b8.new/src/pattern.c 2018-01-24 09:28:21.526500904 +0000
+@@ -151,7 +151,7 @@
+ emsg ? emsg : "unknown error");
+ goto tf_reg_compile_error;
+ }
+- n = pcre_info(ri->re, NULL, NULL);
++ pcre_fullinfo(ri->re, NULL, PCRE_INFO_CAPTURECOUNT, &n);
+ if (n < 0) goto tf_reg_compile_error;
+ ri->ovecsize = 3 * (n + 1);
+ ri->ovector = dmalloc(NULL, sizeof(int) * ri->ovecsize, file, line);
+diff -Nurd tf-50b8/src/pattern.h tf-50b8.new/src/pattern.h
+--- tf-50b8/src/pattern.h 2007-01-13 23:12:39.000000000 +0000
++++ tf-50b8.new/src/pattern.h 2018-01-24 09:28:36.039833945 +0000
+@@ -10,7 +10,7 @@
+ #ifndef PATTERN_H
+ #define PATTERN_H
+
+-#include "pcre-2.08/pcre.h"
++#include <pcre.h>
+
+ typedef struct RegInfo {
+ pcre *re;
diff --git a/user/tf/APKBUILD b/user/tf/APKBUILD
new file mode 100644
index 000000000..65f205fb7
--- /dev/null
+++ b/user/tf/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=tf
+pkgver=5.0b8
+_pkgver=${pkgver%.*}${pkgver#*.}
+pkgrel=0
+pkgdesc="Powerful curses-based MUD client"
+url="http://tinyfugue.sourceforge.net/"
+arch="all"
+options="!check" # no tests
+license="GPL-2.0+"
+depends=""
+makedepends="openssl-dev ncurses-dev pcre-dev"
+source="https://sourceforge.net/projects/tinyfugue/files/tinyfugue/5.0%20beta%208/tf-$_pkgver.tar.gz
+ 0001-Add-DESTDIR-support.patch
+ 0002-Correct-use-of-va_list.patch
+ 0003-Minor-man-page-fixes.patch
+ 0006-Fix-library-install-path.patch
+ 0007-Fix-spelling-errors.patch
+ 0008-Build-on-musl.patch
+ "
+builddir="$srcdir/tf-$_pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="3b99c039d7a9c6ab7ee7b1040ff7c99fe39cbe991f373333ea7c130d54383f102f14ae33303a415f5419cd43238caffc46114e842c6964329c0999e0f506e3d0 tf-50b8.tar.gz
+e891f5d4fb2db8f1f875fa2c7fa2a4d76c9ae2a54fdcc61c80e906e4f6f2d11e736fd2579d56cb313209e46c7ea01eba46b19ccf4b3f5e007585fd65fc547b34 0001-Add-DESTDIR-support.patch
+7d2b2da0f4213fcfbce86eb9042cb83751c80aba5881861d5f49d4604a4eba52d60b5254c8b119528f0890ae7a68dfe4fea7eb2c94dd0d01676b194bca4db219 0002-Correct-use-of-va_list.patch
+1e8f05d2744b60cc78f494283bb5f9ef7a804a6811d16028d5486a7394658a03aed04962adfd5bc60fe1517d3831b41f4ca1c3956a624f09a2a4b14f5ab91608 0003-Minor-man-page-fixes.patch
+0066bbb3919e6b157eb276c3975cadc258a195037c0f199c3f9db83868d6035f81b79b9a41a743c99f317fd253a2f670dcf122d5f7c449fc1677c56cfaa8bb6a 0006-Fix-library-install-path.patch
+a84aeaf097eb1ec61f9c86f73795ad9f8c111057837b1a0b127905302372e01b6489f9a19f14a29171cef9a787314d511dc98e1140d0c122dd9af5f526eb4bc0 0007-Fix-spelling-errors.patch
+f9eadd1ffb2bc51db5d2bd0e9636573ef560bf849a780c8ee99bccb3870463a1b2caeaa1d3005e11d99c7689ae6ecd8f75056db09cf2d3df084058b4a3db32f0 0008-Build-on-musl.patch"