X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/67988e9de2e9002064d52b4a1c5b5c4f8e6e665f..0b66ccda847802bdc7ba4755743031c323df4b7e:/src/upkg.c diff --git a/src/upkg.c b/src/upkg.c index 20b7336..bcbee2f 100644 --- a/src/upkg.c +++ b/src/upkg.c @@ -19,7 +19,12 @@ #include #include +#include + #include "upkg.h" +#include "serializable.h" +#include "exportable.h" +#include "music.h" void print_upkg_flags(const char *prefix, unsigned long flags) { @@ -52,6 +57,8 @@ int main(int argc, char **argv) { struct upkg *pkg; + g_type_init(); + if (argc < 2) { fprintf(stderr, "usage: upkg file\n"); return EXIT_FAILURE; @@ -79,6 +86,18 @@ int main(int argc, char **argv) printf("Exports: %lu\n", pkg->export_count); printf("Imports: %lu\n", pkg->import_count); + GObject *music = u_music_new(); + struct upkg_file *f = upkg_export_open(pkg, 0); + upkg_deserialize(music, f); + + char name[256]; + upkg_export_name(music, name, sizeof name); + FILE *fp = fopen(name, "wb"); + if (!fp) return EXIT_FAILURE; + upkg_export(music, fp); + fclose(fp); + printf("Wrote %s\n", name); + upkg_close(pkg); return 0; }