ref: 5f03152c619d5b15ffb100fc325ff8046593d606
parent: a2dc55b11af2a516fef397f8af0f49d041b932f0
author: Sigrid Solveig Haflínudóttir <ftrvxmtrx@gmail.com>
date: Tue Mar 2 05:43:52 EST 2021
add a very simple XM parser
--- a/README.md
+++ b/README.md
@@ -13,6 +13,8 @@
| m4a | yes | no | yes |
| opus | yes | no | yes |
| WAV | yes | no | yes |
+| IT | yes | no | ??? |
+| XM | yes | no | ??? |
| replay gain | yes | no | ??? |
| size | tiny | bloated | more bloated |
| license | MIT | LGPL | LGPL/MPL |
--- a/mkfile
+++ b/mkfile
@@ -14,6 +14,7 @@
utf16.$O\
vorbis.$O\
wav.$O\
+ xm.$O\
HFILES=\
/sys/include/tags.h\
--- a/tags.c
+++ b/tags.c
@@ -16,6 +16,7 @@
extern int tagm4a(Tagctx *ctx);
extern int tagopus(Tagctx *ctx);
extern int tagwav(Tagctx *ctx);
+extern int tagxm(Tagctx *ctx);
static const Getter g[] =
{
@@ -27,6 +28,7 @@
{tagopus, Fopus},
{tagwav, Fwav},
{tagit, Fit},
+ {tagxm, Fxm},
};
void
--- a/tags.h
+++ b/tags.h
@@ -33,6 +33,7 @@
Fopus,
Fwav,
Fit,
+ Fxm,
Fmax,
};
--- /dev/null
+++ b/xm.c
@@ -1,0 +1,15 @@
+#include "tagspriv.h"
+
+int
+tagxm(Tagctx *ctx)
+{
+ char d[17+20+1], *s;
+
+ if(ctx->read(ctx, d, 17+20) != 17+20 || memcmp(d, "Extended Module: ", 17) != 0)
+ return -1;
+ d[17+20] = 0;
+ for(s = d+17; *s == ' '; s++);
+ txtcb(ctx, Ttitle, "", s);
+
+ return 0;
+}