aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/lzp/qlp.c
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-04-06 10:11:07 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-04-06 10:11:07 +0800
commitf3e040230772f978540a71aea43dfde200992922 (patch)
treebd8ca31b72dd01e24980b073854e263589530f56 /libpsn00b/lzp/qlp.c
downloadpsn00bsdk-f3e040230772f978540a71aea43dfde200992922.tar.gz
First commit
Diffstat (limited to 'libpsn00b/lzp/qlp.c')
-rw-r--r--libpsn00b/lzp/qlp.c64
1 files changed, 64 insertions, 0 deletions
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 <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#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