rnd-20020318-3-src
[rocksndiamonds.git] / src / libgame / misc.h
index 3af58389d25d9186d86d59620af76d7d0bbf431c..978cb23b965ba5ed535c52919190db37beef716b 100644 (file)
 #include "system.h"
 
 
+/* functions for version handling */
+#define VERSION_IDENT(x,y,z)   ((x) * 10000 + (y) * 100 + (z))
+#define VERSION_MAJOR(x)       ((x) / 10000)
+#define VERSION_MINOR(x)       (((x) % 10000) / 100)
+#define VERSION_PATCH(x)       ((x) % 100)
+
 /* values for InitCounter() and Counter() */
 #define INIT_COUNTER                   0
 #define READ_COUNTER                   1
 #define BYTE_ORDER_BIG_ENDIAN          0
 #define BYTE_ORDER_LITTLE_ENDIAN       1
 
+/* values for createDirectory() */
+#define PERMS_PRIVATE                  0
+#define PERMS_PUBLIC                   1
+
+/* values for general file handling stuff */
+#define MAX_FILENAME_LEN               256
+#define MAX_LINE_LEN                   1000
+
+/* values for setup file stuff */
+#define TYPE_BOOLEAN                   1
+#define TYPE_SWITCH                    2
+#define TYPE_KEY                       3
+#define TYPE_INTEGER                   4
+#define TYPE_STRING                    5
+
+#define TOKEN_STR_FILE_IDENTIFIER      "file_identifier"
+
+#define TOKEN_VALUE_POSITION           30
+
+struct SetupFileList
+{
+  char *token;
+  char *value;
+  struct SetupFileList *next;
+};
+
 void InitCounter(void);
 unsigned long Counter(void);
 void Delay(unsigned long);
@@ -73,6 +105,9 @@ int getFile32BitInteger(FILE *, int);
 void putFile32BitInteger(FILE *, int, int);
 boolean getFileChunk(FILE *, char *, int *, int);
 void putFileChunk(FILE *, char *, int, int);
+void ReadUnusedBytesFromFile(FILE *, unsigned long);
+void WriteUnusedBytesToFile(FILE *, unsigned long);
+
 char *getKeyNameFromKey(Key);
 char *getX11KeyNameFromKey(Key);
 Key getKeyFromX11KeyName(char *);
@@ -99,12 +134,20 @@ inline void swap_numbers(int *, int *);
 inline void swap_number_pairs(int *, int *, int *, int *);
 
 char *getUserDataDir(void);
-void createDirectory(char *, char *);
+char *getSetupDir(void);
+void createDirectory(char *, char *, int);
 void InitUserDataDirectory(void);
-void SetFilePermissions_Level(char *);
-void SetFilePermissions_Tape(char *);
-void SetFilePermissions_Score(char *);
-void SetFilePermissions_Setup(char *);
+void SetFilePermissions(char *, int);
+int getFileVersionFromCookieString(const char *);
+boolean checkCookieString(const char *, const char *);
+
+int get_string_integer_value(char *);
+boolean get_string_boolean_value(char *);
+char *getFormattedSetupEntry(char *, char *);
+void freeSetupFileList(struct SetupFileList *);
+char *getTokenValue(struct SetupFileList *, char *);
+struct SetupFileList *loadSetupFileList(char *);
+void checkSetupFileListIdentifier(struct SetupFileList *, char *);
 
 #if !defined(PLATFORM_UNIX)
 void initErrorFile();