/* * upkg: tool for manipulating Unreal Tournament packages. * Copyright (C) 2009 Nick Bowler * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #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"; }