rnd-20020318-4-src
[rocksndiamonds.git] / src / libgame / misc.h
index 28b073ff0b3e5a5ce7bfb818acbdfb85305618e5..6213ae1becb60e190251707fabe826ba1c3d5bdd 100644 (file)
@@ -1,14 +1,14 @@
 /***********************************************************
-*  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
+* Artsoft Retro-Game Library                               *
 *----------------------------------------------------------*
-*  (c) 1995-98 Artsoft Entertainment                       *
-*              Holger Schemel                              *
-*              Oststrasse 11a                              *
-*              33604 Bielefeld                             *
-*              phone: ++49 +521 290471                     *
-*              email: aeglos@valinor.owl.de                *
+* (c) 1994-2001 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
 *----------------------------------------------------------*
-*  misc.h                                                  *
+* misc.h                                                   *
 ***********************************************************/
 
 #ifndef MISC_H
 #include <stdlib.h>
 #include <stdio.h>
 
-#include "libgame.h"
+#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 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;
+};
+
+struct TokenInfo
+{
+  int type;
+  void *value;
+  char *text;
+};
+
 void InitCounter(void);
 unsigned long Counter(void);
 void Delay(unsigned long);
@@ -65,12 +105,16 @@ void GetOptions(char **);
 void Error(int, char *, ...);
 void *checked_malloc(unsigned long);
 void *checked_calloc(unsigned long);
+void *checked_realloc(void *, unsigned long);
 short getFile16BitInteger(FILE *, int);
 void putFile16BitInteger(FILE *, short, int);
 int getFile32BitInteger(FILE *, int);
 void putFile32BitInteger(FILE *, int, int);
-void getFileChunk(FILE *, char *, 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 *);
@@ -97,8 +141,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(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();