git » fp-git.git » commit cd519c6

o Changet char* interfaces to const char*

author ecalot
2003-12-08 13:20:21 UTC
committer ecalot
2003-12-08 13:20:21 UTC
parent 79e4cf2c75508caa8e3a345b840110195c52c5eb

o Changet char* interfaces to const char*
o Added some functions
o Added PR texts in pr.h
o Edited some interfaces to adapt them to the new syntax usage

PR/src/include/autodetect.h +11 -6
PR/src/include/bitmap.h +2 -2
PR/src/include/bmp.h +2 -2
PR/src/include/classify.h +1 -1
PR/src/include/common.h +106 -8
PR/src/include/disk.h +3 -3
PR/src/include/export.h +1 -1
PR/src/include/idlist.h +11 -6
PR/src/include/import.h +1 -1
PR/src/include/plv.h +4 -4
PR/src/include/png.h +2 -2
PR/src/include/pr.h +106 -8
PR/src/include/tree.h +11 -6
PR/src/include/unknown.h +11 -6
PR/src/include/xml.h +2 -1

diff --git a/PR/src/include/autodetect.h b/PR/src/include/autodetect.h
index 8c443ca..228a429 100644
--- a/PR/src/include/autodetect.h
+++ b/PR/src/include/autodetect.h
@@ -5,19 +5,24 @@
 #define MAX_LINE_SIZE 300
 
 #define RES_XML_UNKNOWN_PATH  "%s/unknown/%s/"
+#define RES_XML_UNKNOWN_FILES "res%d.%s"
 #define RES_XML_UNKNOWN_START "<?xml version=\"1.0\" ?>\n<itemtypes version=\"0.6\">\n <folder name=\"unknown\" file=\"%s\" external=\"%s\" palette=\"%d\">\n"
-#define RES_XML_UNKNOWN_ITEM  "  <item value=\"%d\" external=\"res%05d.%s\" itemtype=\"%s\">Unknown Resource number %d</item>\n"
+#define RES_XML_UNKNOWN_ITEM  "  <item value=\"%d\" external=\""RES_XML_UNKNOWN_FILES"\" itemtype=\"%s\">Unknown Resource number %d</item>\n"
 #define RES_XML_UNKNOWN_END   " </folder>\n</itemtypes>\n"
-#define RES_XML_UNKNOWN_FILES "%d.%s"
 
+#define RES_FILE_EXTENSIONS   {"raw","plv","bmp","wav","mid","ext","pal","pcs"}
+#define RES_FILE_TYPES        {"raw","level","image","wave","midi","unknown","palette","pcspeaker"}
 //types
 typedef struct {
 	unsigned short int palette;
 	unsigned short int size;
-	unsigned short int offset;
+	unsigned long int offset;
+	unsigned char number; //Used for level number
 	char      type;
 	char*     path;
 	char*     palAux;
+	char*     title;
+	char*     desc;
 }tResource;
 
 //Verify  header
@@ -31,7 +36,7 @@ char verifyHeader(char* array, int size);
 	 04 Midis
 	 05 Undefined
 	 06 Palette
-	 07 Speaker Sounds
+	 07 Internal Speaker Sounds
 */
 
 /***************************************************************\
@@ -42,11 +47,11 @@ char verifyHeader(char* array, int size);
 void emptyTable(tResource* r[]);
 
 //parse file
-char parseFile(char* vFile, char* datFile, tResource* r[]);
+char parseFile(const char* vFile, const char* datFile, tResource* r[]);
 
 //Resources extras
 
-void getFileName(char* vFileext,char* vDirExt,tResource* r,short id,char* vFiledat);
+void getFileName(char* vFileext,const char* vDirExt,tResource* r,short id,const char* vFiledat);
 void getUpperFolder(char* aux, char* vFiledat);
 
 const char* getExtDesc(int type);
diff --git a/PR/src/include/bitmap.h b/PR/src/include/bitmap.h
index 4647154..d727520 100644
--- a/PR/src/include/bitmap.h
+++ b/PR/src/include/bitmap.h
@@ -6,9 +6,9 @@
 #include "compress.h"
 
 
-char mFormatExtractBmp(unsigned char* data, char *vFileext,unsigned long int size,tImage image);
+char mFormatExtractBmp(unsigned char* data, const char *vFileext,unsigned long int size,tImage image);
 char mFormatCompileBmp(unsigned char* data, FILE* fp, tResource *res);
-char mWriteBitMap(tImage img,char* vFile);
+char mWriteBitMap(tImage img,const char* vFile);
 char mReadBitMap(tImage* img,char* data, int size); //Note: this will ignore the palette
 
 #endif
diff --git a/PR/src/include/bmp.h b/PR/src/include/bmp.h
index 4647154..d727520 100644
--- a/PR/src/include/bmp.h
+++ b/PR/src/include/bmp.h
@@ -6,9 +6,9 @@
 #include "compress.h"
 
 
-char mFormatExtractBmp(unsigned char* data, char *vFileext,unsigned long int size,tImage image);
+char mFormatExtractBmp(unsigned char* data, const char *vFileext,unsigned long int size,tImage image);
 char mFormatCompileBmp(unsigned char* data, FILE* fp, tResource *res);
-char mWriteBitMap(tImage img,char* vFile);
+char mWriteBitMap(tImage img,const char* vFile);
 char mReadBitMap(tImage* img,char* data, int size); //Note: this will ignore the palette
 
 #endif
diff --git a/PR/src/include/classify.h b/PR/src/include/classify.h
index d7257d9..d82f2ab 100644
--- a/PR/src/include/classify.h
+++ b/PR/src/include/classify.h
@@ -20,6 +20,6 @@
 	 11 Pop2 dat files
 */
 
-int prVerifyDatType(char* vFiledat);
+int prVerifyDatType(const char* vFiledat);
 
 #endif
diff --git a/PR/src/include/common.h b/PR/src/include/common.h
index b6ae424..133ad55 100644
--- a/PR/src/include/common.h
+++ b/PR/src/include/common.h
@@ -9,9 +9,31 @@
 #endif
 
 /* #define DLL --> use -DDLL as a precompiler option */
+#ifdef DLL
+ #ifdef UNIX
+  #define SO
+ #endif
+#endif
+
+#ifndef OS
+ #ifndef UNIX
+  #define OS "Win32"
+ #else
+  #define OS ""
+ #endif
+#endif
+
+//Debug options
+#define DEB_FLAG
+
+#ifdef DEB_FLAG
+ #define fld(a) printf(a);
+#else
+ #define fld(a)
+#endif
 
 //Main program defines
-#define PR_ABOUT             "Princed resources (PR) V0.9\r\n(c) Copyright 2003 - Princed Development Team\r\n"\
+#define PR_ABOUT             "Princed resources (PR) V0.9 "OS"\r\n(c) Copyright 2003 - Princed Development Team\r\n"\
                              "http://www.princed.com.ar\r\n\r\n"
 
 #define PR_CGI_TEXT1         "Content-Type:text/html\n\nRunning as a cgi\n"
@@ -21,15 +43,21 @@
 #define PR_TEXT_RESULT       "Result: %s (%d)\r\n"
 #define PR_TEXT_RESULT_ERR   "Result: %d files with errors\r\n"
 
-#define PR_TEXT_SYNTAX       "Syntax:\r\n pr datfile option [extract dir]\r\n\r\nValid options:\r\n -x[rn] for extract\r\n  r: raw extraction\r\n  n: don't extract\r\n -c[r] for compile\r\n  r: raw compiling\r\n -d for type\r\n"
+#define PR_TEXT_SYNTAX       "Usage: pr [datFilePath] [-x [extractDir]|-c [compileDir]|-d] [-n filename]\r\n\r\nValid options:\r\n -x[rn] for extract\r\n  r: raw extraction\r\n  n: don't extract\r\n -c[r] for compile\r\n  r: raw compiling\r\n -d for type\r\n"
 
 //Default Files
 #define RES_XML_UNKNOWN_XML  "unknown.xml"
 #define RES_XML_RESOURC_XML  "resources.xml"
 
-//Difine max & min's
+//Define max & min's
 #define MAX_RES_COUNT 65000
 
+//Define max & min's
+#define MAX_FILENAME_SIZE  260
+#define MAX_EXTENSION_SIZE 10
+
+#define DEFAULT_BACKUP_EXTENSION "bak"
+
 //Path defines
 #ifdef UNIX
  #define DIR_SEPARATOR       '/'
@@ -38,12 +66,82 @@
 #endif
 
 //Main functions
-int prExportDat(char* vDatFile, char* vDirName, char* vResFile);
-int prImportDat(char* vDatFile, char* vDirName, char* vResFile);
-int prVerifyDatType(char* vFiledat);
+int prExportDat(const char* vDatFile, const char* vDirName, const char* vResFile);
+int prImportDat(const char* vDatFile, const char* vDirName, const char* vResFile);
+int prVerifyDatType(const char* vFiledat);
 
 //Extra featured functions
-int prExportDatOpt(char* vDatFile, char* vDirName, char* vResFile,char opt);
-int prImportDatOpt(char* vDatFile, char* vDirName, char* vResFile,char opt);
+int prExportDatOpt(const char* vDatFile, const char* vDirName, const char* vResFile,int opt,const char * vDatFileName,const char* datAuthor, const char* backupExtension);
+int prImportDatOpt(const char* vDatFile, const char* vDirName, const char* vResFile,int opt,const char* vDatFileName, const char* backupExtension);
+
+//Command Line specific options
+
+#define PARSING_HELP "Usage: \n"\
+"  pr [DATFILEPATH] [-x [EXTRACTDIR]|-c [COMPILEDIR]|-d]\n"\
+"  pr [DATFILEPATH] [OPTIONS]\n"\
+"\n"\
+"  Mandatory arguments to long options are mandatory for short options too.\n"\
+"\n"\
+"   -c, --import[=DIRNAME]     imports from DIRNAME into given dat file\n"\
+"   -d, --classify             returns the DAT file type\n"\
+"   -x, -e, --export[=DIRNAME] extracts given dat file into DIRNAME\n"\
+"\n"\
+"   -b, --backup[=EXTENSION]   backup your files\n"\
+"   -f, --force                default option, you cannot disable it,\n"\
+"                              so please make a backup of your files\n"\
+"   -g, --cgi                  run as CGI and output mime headers\n"\
+"   -h, --help                 display this help and exit\n"\
+"   -m, --resource=RESFILE     uses an user-specific resource xml file\n"\
+"   -r, --raw                  uses raw format\n"\
+"   -R, --recursive            searches for all dat files (only if DATFILEPATH\n"\
+"                              is not a dat file)\n"\
+"   -t, --datfile=DATFILE      specifies a dat file to read resources\n"\
+"                              different that the original file\n"\
+"       --unknown              generate the unknown file without performing\n"\
+"                              any extraction\n"\
+"   -v, --verbose              explain what is being done\n"\
+"       --version              output version information and exit\n"\
+"\n"
+
+//Add -a, --author for PLV format
+
+#define PARSING_OPTIONS {\
+			{"import",optional_argument,0,'c'},\
+			{"classify",no_argument,0,'d'},\
+			{"export",optional_argument,0,'x'},\
+\
+			{"backup",optional_argument,0,'b'},\
+			{"force",no_argument,0,'f'},\
+			{"cgi",no_argument,0,'g'},\
+			{"help",no_argument,0,'?'},\
+			{"resource",required_argument,0,'m'},\
+			{"raw",no_argument,0,'r'},\
+			{"recursive",no_argument,0,'R'},\
+			{"datfile",required_argument,0,'t'},\
+			{"unknown",no_argument,0,2},\
+			{"verbose",no_argument,0,'v'},\
+			{"version",no_argument,0,1},\
+			{0, 0, 0, 0}\
+		}
+
+#define PARSING_CHARS "c::dx::e::b::fgm:t:rRv"
+
+/* Flags */
+#define import_flag      0x0001
+#define classify_flag    0x0002
+#define export_flag      0x0004
+#define backup_flag      0x0008
+#define force_flag       0x0010
+#define cgi_flag         0x0020
+#define help_flag        0x0040
+#define undef4_flag      0x0080
+#define raw_flag         0x0100
+#define recursive_flag   0x0200
+#define verbose_flag     0x0400
+#define version_flag     0x0800
+#define unknown_flag     0x1000
+#define undef1_flag      0x2000
+#define undef2_flag      0x4000
+#define undef3_flag      0x8000
 
 #endif
diff --git a/PR/src/include/disk.h b/PR/src/include/disk.h
index 587c670..7baa592 100644
--- a/PR/src/include/disk.h
+++ b/PR/src/include/disk.h
@@ -10,9 +10,9 @@
 char mDiskVealidateFileHeader(unsigned char* text, int size, FILE* fp);
 char mSaveRaw      (const char* vFile,const unsigned char* output, int size);
 char writeData     (const unsigned char* data, int ignoreChars, char* vFileext, int size);
-char writeOpen     (char* vFileext, FILE* *fp);
+char writeOpen     (const char* vFileext, FILE* *fp);
 int  mLoadFileArray(const char* vFile,unsigned char** array);
 int  makebase      (const char* p);
-void repairFolders (char* a);
-
+const char *repairFolders(const char* a);
+const char* getFileNameFromPath(const char* path);
 #endif
diff --git a/PR/src/include/export.h b/PR/src/include/export.h
index d5cf464..a7fd77e 100644
--- a/PR/src/include/export.h
+++ b/PR/src/include/export.h
@@ -17,6 +17,6 @@
 		8 - rebuild resources list
 */
 
-int extract(char* vFiledat,char* vDirExt, tResource* r[], char task);
+int extract(const char* vFiledat,const char* vDirExt, tResource* r[], int task, const char* vDatFileName);
 
 #endif
diff --git a/PR/src/include/idlist.h b/PR/src/include/idlist.h
index 8c443ca..228a429 100644
--- a/PR/src/include/idlist.h
+++ b/PR/src/include/idlist.h
@@ -5,19 +5,24 @@
 #define MAX_LINE_SIZE 300
 
 #define RES_XML_UNKNOWN_PATH  "%s/unknown/%s/"
+#define RES_XML_UNKNOWN_FILES "res%d.%s"
 #define RES_XML_UNKNOWN_START "<?xml version=\"1.0\" ?>\n<itemtypes version=\"0.6\">\n <folder name=\"unknown\" file=\"%s\" external=\"%s\" palette=\"%d\">\n"
-#define RES_XML_UNKNOWN_ITEM  "  <item value=\"%d\" external=\"res%05d.%s\" itemtype=\"%s\">Unknown Resource number %d</item>\n"
+#define RES_XML_UNKNOWN_ITEM  "  <item value=\"%d\" external=\""RES_XML_UNKNOWN_FILES"\" itemtype=\"%s\">Unknown Resource number %d</item>\n"
 #define RES_XML_UNKNOWN_END   " </folder>\n</itemtypes>\n"
-#define RES_XML_UNKNOWN_FILES "%d.%s"
 
+#define RES_FILE_EXTENSIONS   {"raw","plv","bmp","wav","mid","ext","pal","pcs"}
+#define RES_FILE_TYPES        {"raw","level","image","wave","midi","unknown","palette","pcspeaker"}
 //types
 typedef struct {
 	unsigned short int palette;
 	unsigned short int size;
-	unsigned short int offset;
+	unsigned long int offset;
+	unsigned char number; //Used for level number
 	char      type;
 	char*     path;
 	char*     palAux;
+	char*     title;
+	char*     desc;
 }tResource;
 
 //Verify  header
@@ -31,7 +36,7 @@ char verifyHeader(char* array, int size);
 	 04 Midis
 	 05 Undefined
 	 06 Palette
-	 07 Speaker Sounds
+	 07 Internal Speaker Sounds
 */
 
 /***************************************************************\
@@ -42,11 +47,11 @@ char verifyHeader(char* array, int size);
 void emptyTable(tResource* r[]);
 
 //parse file
-char parseFile(char* vFile, char* datFile, tResource* r[]);
+char parseFile(const char* vFile, const char* datFile, tResource* r[]);
 
 //Resources extras
 
-void getFileName(char* vFileext,char* vDirExt,tResource* r,short id,char* vFiledat);
+void getFileName(char* vFileext,const char* vDirExt,tResource* r,short id,const char* vFiledat);
 void getUpperFolder(char* aux, char* vFiledat);
 
 const char* getExtDesc(int type);
diff --git a/PR/src/include/import.h b/PR/src/include/import.h
index 0e0dec9..36eb954 100644
--- a/PR/src/include/import.h
+++ b/PR/src/include/import.h
@@ -9,6 +9,6 @@
 #include "resources.h"
 
 void mAddFileToDatFile(FILE* fp, char* data, int size);
-int compile(char* vFiledat, char* vDirExt, tResource* r[], char opt);
+int compile(const char* vFiledat, const char* vDirExt, tResource* r[], int opt, const char* vDatFileName);
 
 #endif
diff --git a/PR/src/include/plv.h b/PR/src/include/plv.h
index 4d99252..49569fb 100644
--- a/PR/src/include/plv.h
+++ b/PR/src/include/plv.h
@@ -6,17 +6,17 @@
 #include "resources.h"
 
 char mFormatCompilePlv(unsigned char* data, FILE* fp, tResource *res);
-char mFormatExtractPlv(unsigned char* data, char *vFileext,unsigned long int size,unsigned char level, char* filename, char* desc, char* title);
+char mFormatExtractPlv(unsigned char* data, const char *vFileext,unsigned long int size,unsigned char level, const char* filename, const char* desc, const char* title);
 
 //Dias de la semana y meses del anio
 #define DATE_WEEKDAYS "Sun\0Mon\0Tue\0Wed\0Thu\0Fri\0Sat"
 #define DATE_MONTHS   "Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0Oct\0Nov\0Dec"
 
-#define PLV_HEADER_A           ""
+#define PLV_HEADER_A           "POP_LVL\x01\x01"
 #define PLV_HEADER_A_SIZE      sizeof(PLV_HEADER_A)-1
-#define PLV_HEADER_B           ""
+#define PLV_HEADER_B           ":)"
 #define PLV_HEADER_B_SIZE      sizeof(PLV_HEADER_B)-1
-#define PLV_FOOT               "EDITORNAME\0PR\0EDITORVERS\00.9AUTHOR\0Pr User\0TITLE"
+#define PLV_FOOT               "EDITORNAME\0PR\0EDITORVERS\0\x30.9\0AUTHOR\0Pr User\0TITLE"
 #define PLV_FOOT_DESC          "DESCRIPTION"
 #define PLV_FOOT_TCREAT        "TIMECREATED"
 #define PLV_FOOT_TMODIF        "TIMELASTMODIF"
diff --git a/PR/src/include/png.h b/PR/src/include/png.h
index 4647154..d727520 100644
--- a/PR/src/include/png.h
+++ b/PR/src/include/png.h
@@ -6,9 +6,9 @@
 #include "compress.h"
 
 
-char mFormatExtractBmp(unsigned char* data, char *vFileext,unsigned long int size,tImage image);
+char mFormatExtractBmp(unsigned char* data, const char *vFileext,unsigned long int size,tImage image);
 char mFormatCompileBmp(unsigned char* data, FILE* fp, tResource *res);
-char mWriteBitMap(tImage img,char* vFile);
+char mWriteBitMap(tImage img,const char* vFile);
 char mReadBitMap(tImage* img,char* data, int size); //Note: this will ignore the palette
 
 #endif
diff --git a/PR/src/include/pr.h b/PR/src/include/pr.h
index b6ae424..133ad55 100644
--- a/PR/src/include/pr.h
+++ b/PR/src/include/pr.h
@@ -9,9 +9,31 @@
 #endif
 
 /* #define DLL --> use -DDLL as a precompiler option */
+#ifdef DLL
+ #ifdef UNIX
+  #define SO
+ #endif
+#endif
+
+#ifndef OS
+ #ifndef UNIX
+  #define OS "Win32"
+ #else
+  #define OS ""
+ #endif
+#endif
+
+//Debug options
+#define DEB_FLAG
+
+#ifdef DEB_FLAG
+ #define fld(a) printf(a);
+#else
+ #define fld(a)
+#endif
 
 //Main program defines
-#define PR_ABOUT             "Princed resources (PR) V0.9\r\n(c) Copyright 2003 - Princed Development Team\r\n"\
+#define PR_ABOUT             "Princed resources (PR) V0.9 "OS"\r\n(c) Copyright 2003 - Princed Development Team\r\n"\
                              "http://www.princed.com.ar\r\n\r\n"
 
 #define PR_CGI_TEXT1         "Content-Type:text/html\n\nRunning as a cgi\n"
@@ -21,15 +43,21 @@
 #define PR_TEXT_RESULT       "Result: %s (%d)\r\n"
 #define PR_TEXT_RESULT_ERR   "Result: %d files with errors\r\n"
 
-#define PR_TEXT_SYNTAX       "Syntax:\r\n pr datfile option [extract dir]\r\n\r\nValid options:\r\n -x[rn] for extract\r\n  r: raw extraction\r\n  n: don't extract\r\n -c[r] for compile\r\n  r: raw compiling\r\n -d for type\r\n"
+#define PR_TEXT_SYNTAX       "Usage: pr [datFilePath] [-x [extractDir]|-c [compileDir]|-d] [-n filename]\r\n\r\nValid options:\r\n -x[rn] for extract\r\n  r: raw extraction\r\n  n: don't extract\r\n -c[r] for compile\r\n  r: raw compiling\r\n -d for type\r\n"
 
 //Default Files
 #define RES_XML_UNKNOWN_XML  "unknown.xml"
 #define RES_XML_RESOURC_XML  "resources.xml"
 
-//Difine max & min's
+//Define max & min's
 #define MAX_RES_COUNT 65000
 
+//Define max & min's
+#define MAX_FILENAME_SIZE  260
+#define MAX_EXTENSION_SIZE 10
+
+#define DEFAULT_BACKUP_EXTENSION "bak"
+
 //Path defines
 #ifdef UNIX
  #define DIR_SEPARATOR       '/'
@@ -38,12 +66,82 @@
 #endif
 
 //Main functions
-int prExportDat(char* vDatFile, char* vDirName, char* vResFile);
-int prImportDat(char* vDatFile, char* vDirName, char* vResFile);
-int prVerifyDatType(char* vFiledat);
+int prExportDat(const char* vDatFile, const char* vDirName, const char* vResFile);
+int prImportDat(const char* vDatFile, const char* vDirName, const char* vResFile);
+int prVerifyDatType(const char* vFiledat);
 
 //Extra featured functions
-int prExportDatOpt(char* vDatFile, char* vDirName, char* vResFile,char opt);
-int prImportDatOpt(char* vDatFile, char* vDirName, char* vResFile,char opt);
+int prExportDatOpt(const char* vDatFile, const char* vDirName, const char* vResFile,int opt,const char * vDatFileName,const char* datAuthor, const char* backupExtension);
+int prImportDatOpt(const char* vDatFile, const char* vDirName, const char* vResFile,int opt,const char* vDatFileName, const char* backupExtension);
+
+//Command Line specific options
+
+#define PARSING_HELP "Usage: \n"\
+"  pr [DATFILEPATH] [-x [EXTRACTDIR]|-c [COMPILEDIR]|-d]\n"\
+"  pr [DATFILEPATH] [OPTIONS]\n"\
+"\n"\
+"  Mandatory arguments to long options are mandatory for short options too.\n"\
+"\n"\
+"   -c, --import[=DIRNAME]     imports from DIRNAME into given dat file\n"\
+"   -d, --classify             returns the DAT file type\n"\
+"   -x, -e, --export[=DIRNAME] extracts given dat file into DIRNAME\n"\
+"\n"\
+"   -b, --backup[=EXTENSION]   backup your files\n"\
+"   -f, --force                default option, you cannot disable it,\n"\
+"                              so please make a backup of your files\n"\
+"   -g, --cgi                  run as CGI and output mime headers\n"\
+"   -h, --help                 display this help and exit\n"\
+"   -m, --resource=RESFILE     uses an user-specific resource xml file\n"\
+"   -r, --raw                  uses raw format\n"\
+"   -R, --recursive            searches for all dat files (only if DATFILEPATH\n"\
+"                              is not a dat file)\n"\
+"   -t, --datfile=DATFILE      specifies a dat file to read resources\n"\
+"                              different that the original file\n"\
+"       --unknown              generate the unknown file without performing\n"\
+"                              any extraction\n"\
+"   -v, --verbose              explain what is being done\n"\
+"       --version              output version information and exit\n"\
+"\n"
+
+//Add -a, --author for PLV format
+
+#define PARSING_OPTIONS {\
+			{"import",optional_argument,0,'c'},\
+			{"classify",no_argument,0,'d'},\
+			{"export",optional_argument,0,'x'},\
+\
+			{"backup",optional_argument,0,'b'},\
+			{"force",no_argument,0,'f'},\
+			{"cgi",no_argument,0,'g'},\
+			{"help",no_argument,0,'?'},\
+			{"resource",required_argument,0,'m'},\
+			{"raw",no_argument,0,'r'},\
+			{"recursive",no_argument,0,'R'},\
+			{"datfile",required_argument,0,'t'},\
+			{"unknown",no_argument,0,2},\
+			{"verbose",no_argument,0,'v'},\
+			{"version",no_argument,0,1},\
+			{0, 0, 0, 0}\
+		}
+
+#define PARSING_CHARS "c::dx::e::b::fgm:t:rRv"
+
+/* Flags */
+#define import_flag      0x0001
+#define classify_flag    0x0002
+#define export_flag      0x0004
+#define backup_flag      0x0008
+#define force_flag       0x0010
+#define cgi_flag         0x0020
+#define help_flag        0x0040
+#define undef4_flag      0x0080
+#define raw_flag         0x0100
+#define recursive_flag   0x0200
+#define verbose_flag     0x0400
+#define version_flag     0x0800
+#define unknown_flag     0x1000
+#define undef1_flag      0x2000
+#define undef2_flag      0x4000
+#define undef3_flag      0x8000
 
 #endif
diff --git a/PR/src/include/tree.h b/PR/src/include/tree.h
index 8c443ca..228a429 100644
--- a/PR/src/include/tree.h
+++ b/PR/src/include/tree.h
@@ -5,19 +5,24 @@
 #define MAX_LINE_SIZE 300
 
 #define RES_XML_UNKNOWN_PATH  "%s/unknown/%s/"
+#define RES_XML_UNKNOWN_FILES "res%d.%s"
 #define RES_XML_UNKNOWN_START "<?xml version=\"1.0\" ?>\n<itemtypes version=\"0.6\">\n <folder name=\"unknown\" file=\"%s\" external=\"%s\" palette=\"%d\">\n"
-#define RES_XML_UNKNOWN_ITEM  "  <item value=\"%d\" external=\"res%05d.%s\" itemtype=\"%s\">Unknown Resource number %d</item>\n"
+#define RES_XML_UNKNOWN_ITEM  "  <item value=\"%d\" external=\""RES_XML_UNKNOWN_FILES"\" itemtype=\"%s\">Unknown Resource number %d</item>\n"
 #define RES_XML_UNKNOWN_END   " </folder>\n</itemtypes>\n"
-#define RES_XML_UNKNOWN_FILES "%d.%s"
 
+#define RES_FILE_EXTENSIONS   {"raw","plv","bmp","wav","mid","ext","pal","pcs"}
+#define RES_FILE_TYPES        {"raw","level","image","wave","midi","unknown","palette","pcspeaker"}
 //types
 typedef struct {
 	unsigned short int palette;
 	unsigned short int size;
-	unsigned short int offset;
+	unsigned long int offset;
+	unsigned char number; //Used for level number
 	char      type;
 	char*     path;
 	char*     palAux;
+	char*     title;
+	char*     desc;
 }tResource;
 
 //Verify  header
@@ -31,7 +36,7 @@ char verifyHeader(char* array, int size);
 	 04 Midis
 	 05 Undefined
 	 06 Palette
-	 07 Speaker Sounds
+	 07 Internal Speaker Sounds
 */
 
 /***************************************************************\
@@ -42,11 +47,11 @@ char verifyHeader(char* array, int size);
 void emptyTable(tResource* r[]);
 
 //parse file
-char parseFile(char* vFile, char* datFile, tResource* r[]);
+char parseFile(const char* vFile, const char* datFile, tResource* r[]);
 
 //Resources extras
 
-void getFileName(char* vFileext,char* vDirExt,tResource* r,short id,char* vFiledat);
+void getFileName(char* vFileext,const char* vDirExt,tResource* r,short id,const char* vFiledat);
 void getUpperFolder(char* aux, char* vFiledat);
 
 const char* getExtDesc(int type);
diff --git a/PR/src/include/unknown.h b/PR/src/include/unknown.h
index 8c443ca..228a429 100644
--- a/PR/src/include/unknown.h
+++ b/PR/src/include/unknown.h
@@ -5,19 +5,24 @@
 #define MAX_LINE_SIZE 300
 
 #define RES_XML_UNKNOWN_PATH  "%s/unknown/%s/"
+#define RES_XML_UNKNOWN_FILES "res%d.%s"
 #define RES_XML_UNKNOWN_START "<?xml version=\"1.0\" ?>\n<itemtypes version=\"0.6\">\n <folder name=\"unknown\" file=\"%s\" external=\"%s\" palette=\"%d\">\n"
-#define RES_XML_UNKNOWN_ITEM  "  <item value=\"%d\" external=\"res%05d.%s\" itemtype=\"%s\">Unknown Resource number %d</item>\n"
+#define RES_XML_UNKNOWN_ITEM  "  <item value=\"%d\" external=\""RES_XML_UNKNOWN_FILES"\" itemtype=\"%s\">Unknown Resource number %d</item>\n"
 #define RES_XML_UNKNOWN_END   " </folder>\n</itemtypes>\n"
-#define RES_XML_UNKNOWN_FILES "%d.%s"
 
+#define RES_FILE_EXTENSIONS   {"raw","plv","bmp","wav","mid","ext","pal","pcs"}
+#define RES_FILE_TYPES        {"raw","level","image","wave","midi","unknown","palette","pcspeaker"}
 //types
 typedef struct {
 	unsigned short int palette;
 	unsigned short int size;
-	unsigned short int offset;
+	unsigned long int offset;
+	unsigned char number; //Used for level number
 	char      type;
 	char*     path;
 	char*     palAux;
+	char*     title;
+	char*     desc;
 }tResource;
 
 //Verify  header
@@ -31,7 +36,7 @@ char verifyHeader(char* array, int size);
 	 04 Midis
 	 05 Undefined
 	 06 Palette
-	 07 Speaker Sounds
+	 07 Internal Speaker Sounds
 */
 
 /***************************************************************\
@@ -42,11 +47,11 @@ char verifyHeader(char* array, int size);
 void emptyTable(tResource* r[]);
 
 //parse file
-char parseFile(char* vFile, char* datFile, tResource* r[]);
+char parseFile(const char* vFile, const char* datFile, tResource* r[]);
 
 //Resources extras
 
-void getFileName(char* vFileext,char* vDirExt,tResource* r,short id,char* vFiledat);
+void getFileName(char* vFileext,const char* vDirExt,tResource* r,short id,const char* vFiledat);
 void getUpperFolder(char* aux, char* vFiledat);
 
 const char* getExtDesc(int type);
diff --git a/PR/src/include/xml.h b/PR/src/include/xml.h
index 3d7b25a..37d7434 100644
--- a/PR/src/include/xml.h
+++ b/PR/src/include/xml.h
@@ -17,6 +17,7 @@ typedef struct tTag {
  char* type;
  char* value;
  char* version;
+ char* number;
 }tTag;
 
 //Constants
@@ -26,5 +27,5 @@ typedef struct tTag {
 //tTag* getTagStructure(); //initializes
 void freeTagStructure(tTag* structure);
 //int parseNext(char** pString, tTag* tag);
-tTag* parseXmlFile(char* vFile,int* error);
+tTag* parseXmlFile(const char* vFile,int* error);
 #endif