X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/ca8ee16cfde42ea27d40f8e45fa6d96dc24cd5d9..d82c61e8b0ff6b7660ec0288c50e6f3e6547ed4a:/src/engine/music-dummymod.c diff --git a/src/engine/music-dummymod.c b/src/engine/music-dummymod.c new file mode 100644 index 0000000..c2e61b7 --- /dev/null +++ b/src/engine/music-dummymod.c @@ -0,0 +1,73 @@ +#include +#include + +#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"; +}