rnd-19981123-5
[rocksndiamonds.git] / src / misc.c
index 8c88fe2930ff054b8a7721df85b53bdc9eddcd53..c2c85e400067b206a849aa016d7685de687c83b7 100644 (file)
@@ -18,6 +18,7 @@
 #include <sys/param.h>
 #include <sys/types.h>
 #include <stdarg.h>
+#include <ctype.h>
 
 #include "misc.h"
 #include "init.h"
@@ -26,6 +27,9 @@
 #include "random.h"
 #include "joystick.h"
 
+/* maximal allowed length of a command line option */
+#define MAX_OPTION_LEN         256
+
 static unsigned long mainCounter(int mode)
 {
   static struct timeval base_time = { 0, 0 };
@@ -158,9 +162,22 @@ unsigned int SimpleRND(unsigned int max)
   return (root % max);
 }
 
+#ifdef DEBUG
+static unsigned int last_RND_value = 0;
+
+unsigned int last_RND()
+{
+  return last_RND_value;
+}
+#endif
+
 unsigned int RND(unsigned int max)
 {
+#ifdef DEBUG
+  return (last_RND_value = random_linux_libc() % max);
+#else
   return (random_linux_libc() % max);
+#endif
 }
 
 unsigned int InitRND(long seed)
@@ -212,12 +229,23 @@ char *getHomeDir()
 
 char *getPath2(char *path1, char *path2)
 {
-  char *complete_path = checked_malloc(strlen(path1) + strlen(path2) + 2);
+  char *complete_path = checked_malloc(strlen(path1) + 1 +
+                                      strlen(path2) + 1);
 
   sprintf(complete_path, "%s/%s", path1, path2);
   return complete_path;
 }
 
+char *getPath3(char *path1, char *path2, char *path3)
+{
+  char *complete_path = checked_malloc(strlen(path1) + 1 +
+                                      strlen(path2) + 1 +
+                                      strlen(path3) + 1);
+
+  sprintf(complete_path, "%s/%s/%s", path1, path2, path3);
+  return complete_path;
+}
+
 char *getStringCopy(char *s)
 {
   char *s_copy = checked_malloc(strlen(s) + 1);
@@ -226,6 +254,17 @@ char *getStringCopy(char *s)
   return s_copy;
 }
 
+char *getStringToLower(char *s)
+{
+  char *s_copy = checked_malloc(strlen(s) + 1);
+  char *s_ptr = s_copy;
+
+  while (*s)
+    *s_ptr++ = tolower(*s++);
+
+  return s_copy;
+}
+
 void MarkTileDirty(int x, int y)
 {
   int xx = redraw_x1 + x;