#include "lib.h" #include "stream.h" #include "flags.h" #include #include __attribute__((__noreturn__)) void version(void) { fprintf(stderr, "nbtvis v0.0.1\n"); fprintf(stderr, "Copyright (C) 2023 Freya Murphy\n"); exit(0); } __attribute__((__noreturn__)) void help(void) { fprintf(stderr, "Usage: nbtvis [OPTION]... [INFILE] [OUTFILE]\n\n"); fprintf(stderr, "\t-j\tinput data is JSON\n"); fprintf(stderr, "\t-s\tinput data is SNBT\n"); fprintf(stderr, "\t-n\tinput data is NBT\n"); fprintf(stderr, "\t-J\toutput data is JSON\n"); fprintf(stderr, "\t-S\toutput data is SNBT\n"); fprintf(stderr, "\t-N\toutput data is NBT\n\n"); fprintf(stderr, "\t-h --help\tprint the help message\n"); fprintf(stderr, "\t-v --version\tprint the version\n"); fprintf(stderr, "\t--in=\tset input file name\n"); fprintf(stderr, "\t--out=\tset output file name\n"); exit(0); } int main(int argc, char **argv) { flags_t flags; parse_flags(&flags, argc, argv); if (flags.help) help(); if (flags.version) version(); tag_t tag; if (tag_read(&tag, &flags.in, flags.fin) == false) error_and_die("error: failed to read tag\n"); stream_close(&flags.in); if (tag.type != TAG_COMPOUND) error_and_die("error: nbt tag not a valid compound tag\n"); if (tag_print(&tag, &flags.out, flags.fout) == false) error_and_die("error: failed to write tag\n"); stream_close(&flags.out); tag_free(&tag); return 0; }