diff --git a/README.md b/README.md index 9ab0ced..0d2db45 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,14 @@ -# spitWAD +# spitwad -`spitWAD` is a simple DOOM WAD management library +Originally conceived as a joke between some friends after we laughed about how it would be better to use WADs to send data +between applications then JSON, because JSON is stupid and wasteful. `spitwad` is a library for interacting with WAD +files, popularized by ID games like DOOM and Quake. You can use it in your DOOM clone, or to package your data and +send it over a network as a WAD. Why? Why not! -`DOOM1.WAD` contained in this repo is the shareware version of DOOM and is used for tests +## Requirements + +Should work on any POSIX platform out of the box + +## Usage + +Docs are a work in progress! diff --git a/spitwad.c b/spitwad.c index a9e26a9..8e88128 100644 --- a/spitwad.c +++ b/spitwad.c @@ -22,9 +22,9 @@ static char* getstring(const unsigned char* data, size_t offset) { return s; } -int new_WAD(struct WAD* wad, const unsigned char* data, size_t data_sz) { +int new_WAD_from_data(struct WAD* wad, const unsigned char* data, size_t data_sz) { if (wad == NULL) { - return fail("Supplied wad to new_WAD was NULL"); + return fail("Supplied wad to new_WAD_from_data was NULL"); } wad->data = malloc(sizeof(unsigned char) * data_sz); @@ -98,18 +98,25 @@ int new_WAD_from_file(struct WAD* wad, const char* path) { fread(buf, 1, fsz, fp); fclose(fp); - new_WAD(wad, buf, fsz); + new_WAD_from_data(wad, buf, fsz); free(buf); return 0; } +int new_WAD(struct WAD* wad) { + wad->data = NULL; + wad->data_sz = 0; + wad->directory = NULL; + wad->dir_sz = 0; + wad->dir_offset = 0; +} + void destroy_WAD(struct WAD* wad) { free(wad->data); free(wad->directory); free(wad); } - int write_to_file(struct WAD* wad, const char* path) { FILE *fp = NULL; fp = fopen(path, "wb"); diff --git a/spitwad.h b/spitwad.h index 3bd7f73..3783f1b 100644 --- a/spitwad.h +++ b/spitwad.h @@ -24,9 +24,11 @@ struct WAD { struct DirEntry *directory; }; -int new_WAD(struct WAD* wad, const unsigned char* data, size_t data_sz); +int new_WAD_from_data(struct WAD* wad, const unsigned char* data, size_t data_sz); int new_WAD_from_file(struct WAD* wad, const char* path); +int new_WAD(struct WAD* wad); void destroy_WAD(struct WAD* wad); int write_to_file(struct WAD* wad, const char* path); + #endif //SPITWAD_H