From fbab3d4859f6e5d0c8b56452ce71e75966724e0c Mon Sep 17 00:00:00 2001 From: Kevin Shanahan Date: Mon, 23 Sep 2013 12:24:31 +0930 Subject: [PATCH] common: tidy up version check in LoadBSPFile Signed-off-by: Kevin Shanahan --- common/bspfile.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/common/bspfile.c b/common/bspfile.c index f6a5fbd7..b7b971bf 100644 --- a/common/bspfile.c +++ b/common/bspfile.c @@ -202,6 +202,32 @@ CopyLump(const dheader_t *header, int lumpnum, void *destptr) return length / size; } +static const char * +BSPVersionString(int version) +{ + static char buffer[20]; + + switch (version) { + case BSP2VERSION: + return "BSP2"; + default: + snprintf(buffer, sizeof(buffer), "%d", version); + return buffer; + } +} + +static qboolean +BSPVersionSupported(int version) +{ + switch (version) { + case BSPVERSION: + case BSP2VERSION: + return true; + default: + return false; + } +} + /* * ============= * LoadBSPFile @@ -217,10 +243,10 @@ LoadBSPFile(const char *filename, bspdata_t *bsp) LoadFile(filename, &header); /* check the file version */ - bsp->version = header->version = LittleLong(header->version); - logprint("BSP is version %i\n", header->version); - if (header->version != BSPVERSION) - Error("Sorry, only bsp version %d supported.", BSPVERSION); + header->version = LittleLong(header->version); + logprint("BSP is version %s\n", BSPVersionString(header->version)); + if (!BSPVersionSupported(header->version)) + Error("Sorry, this bsp version is not supported."); /* swap the lump headers */ for (i = 0; i < BSP_LUMPS; i++) { @@ -230,6 +256,7 @@ LoadBSPFile(const char *filename, bspdata_t *bsp) /* copy the data */ memset(bsp, 0, sizeof(*bsp)); + bsp->version = header->version; bsp->nummodels = CopyLump(header, LUMP_MODELS, &bsp->dmodels); bsp->numvertexes = CopyLump(header, LUMP_VERTEXES, &bsp->dvertexes); bsp->numplanes = CopyLump(header, LUMP_PLANES, &bsp->dplanes);