]> git.draconx.ca Git - upkg.git/blobdiff - src/engine/music-dummymod.c
Implement support for libmodplug in Engine.Music.
[upkg.git] / src / engine / music-dummymod.c
diff --git a/src/engine/music-dummymod.c b/src/engine/music-dummymod.c
new file mode 100644 (file)
index 0000000..c2e61b7
--- /dev/null
@@ -0,0 +1,73 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "music-module.h"
+#include "upkg.h"
+
+struct music_mod {
+       struct upkg_file *f;
+};
+
+int music_mod_init(void)
+{
+       return 0;
+}
+
+void music_mod_exit(void)
+{
+}
+
+struct music_mod *music_mod_open(struct upkg_file *f)
+{
+       struct music_mod *m = malloc(sizeof *m);
+
+       if (m) {
+               m->f = f;
+       }
+
+       return m;
+}
+
+void music_mod_close(struct music_mod *m)
+{
+       free(m);
+}
+
+int music_mod_dump(struct music_mod *m, FILE *of)
+{
+       unsigned char buf[1024];
+       size_t rc;
+
+       if (upkg_export_seek(m->f, 0, SEEK_SET) != 0) {
+               return -1;
+       }
+
+       while (1) {
+               rc = upkg_export_read(m->f, buf, sizeof buf);
+               if (rc == 0) {
+                       if (!m->f->eof)
+                               return -1;
+                       return 0;
+               }
+
+               if (fwrite(buf, rc, 1, of) != 1) {
+                       if (feof(of)) {
+                               fprintf(stderr, "unexpected end-of-file.\n");
+                       } else {
+                               perror("fwrite");
+                       }
+                       return -1;
+               }
+
+               if (rc < sizeof buf) {
+                       if (!m->f->eof)
+                               return -1;
+                       return 0;
+               }
+       }
+}
+
+const char *music_mod_type(struct music_mod *mod)
+{
+       return "unknown";
+}