From f3e040230772f978540a71aea43dfde200992922 Mon Sep 17 00:00:00 2001 From: "John Wilbert M. Villamor" Date: Sat, 6 Apr 2019 10:11:07 +0800 Subject: First commit --- libpsn00b/lzp/qlp.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 libpsn00b/lzp/qlp.c (limited to 'libpsn00b/lzp/qlp.c') diff --git a/libpsn00b/lzp/qlp.c b/libpsn00b/lzp/qlp.c new file mode 100644 index 0000000..3be8356 --- /dev/null +++ b/libpsn00b/lzp/qlp.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include "lzqlp.h" + +static char* lcase(char* str) { + + while(*str != 0x00) { + *str = tolower(*str); + str++; + } + + return(str); + +} + +int qlpFileCount(void* qlpfile) { + + if (strncmp(((QLP_HEAD*)qlpfile)->id, "QLP", 3) != 0) + return(PACK_ERR_INVALID); + + return(((QLP_HEAD*)qlpfile)->numfiles); + +} + +QLP_FILE* qlpFileEntry(int index, void* qlpfile) { + + if (strncmp(((QLP_HEAD*)qlpfile)->id, "QLP", 3) != 0) + return(NULL); + + if (index > ((QLP_HEAD*)qlpfile)->numfiles) + return(NULL); + + return(&((QLP_FILE*)(qlpfile+4))[index]); + +} + +void* qlpFileAddr(int index, void* qlpfile) { + + return( qlpfile+((QLP_FILE*)(qlpfile+4))[index].offs ); + +} + +int qlpFindFile(char* fileName, void* qlpfile) { + + int i; + char nameBuff[2][16]; + + strcpy(nameBuff[0], fileName); + lcase(nameBuff[0]); + + for(i=0; i<((QLP_HEAD*)qlpfile)->numfiles; i++) { + + strcpy(nameBuff[1], ((QLP_FILE*)(qlpfile+4))[i].name); + lcase(nameBuff[1]); + + if (strcmp(nameBuff[0], nameBuff[1]) == 0) + return(i); + + } + + return(PACK_ERR_NOTFOUND); + +} \ No newline at end of file -- cgit v1.2.3