rnd-19990925-1-src
[rocksndiamonds.git] / src / misc.c
index 2200460af29dcdc8783c0844220ddf85e47e5f7c..3da335978e5a2a539899ad89edc9c3e5bb77cabc 100644 (file)
@@ -167,9 +167,20 @@ void WaitUntilDelayReached(unsigned long *counter_var, unsigned long delay)
   *counter_var = actual_counter;
 }
 
+/* int2str() returns a number converted to a string;
+   the used memory is static, but will be overwritten by later calls,
+   so if you want to save the result, copy it to a private string buffer;
+   there can be 10 local calls of int2str() without buffering the result --
+   the 11th call will then destroy the result from the first call and so on.
+*/
+
 char *int2str(int number, int size)
 {
-  static char s[40];
+  static char shift_array[10][40];
+  static int shift_counter = 0;
+  char *s = shift_array[shift_counter];
+
+  shift_counter = (shift_counter + 1) % 10;
 
   if (size > 20)
     size = 20;
@@ -336,6 +347,7 @@ char *getStringToLower(char *s)
 
   while (*s)
     *s_ptr++ = tolower(*s++);
+  *s_ptr = '\0';
 
   return s_copy;
 }
@@ -379,8 +391,9 @@ void GetOptions(char *argv[])
   options.display_name = NULL;
   options.server_host = NULL;
   options.server_port = 0;
-  options.base_directory = BASE_PATH;
-  options.level_directory = BASE_PATH "/" LEVELS_DIRECTORY;
+  options.ro_base_directory = RO_BASE_PATH;
+  options.rw_base_directory = RW_BASE_PATH;
+  options.level_directory = RO_BASE_PATH "/" LEVELS_DIRECTORY;
   options.serveronly = FALSE;
   options.network = FALSE;
   options.verbose = FALSE;
@@ -446,13 +459,15 @@ void GetOptions(char *argv[])
       if (option_arg == NULL)
        Error(ERR_EXIT_HELP, "option '%s' requires an argument", option_str);
 
-      options.base_directory = option_arg;
+      /* this should be extended to separate options for ro and rw data */
+      options.ro_base_directory = option_arg;
+      options.rw_base_directory = option_arg;
       if (option_arg == next_option)
        options_left++;
 
       /* adjust path for level directory accordingly */
       options.level_directory =
-       getPath2(options.base_directory, LEVELS_DIRECTORY);
+       getPath2(options.ro_base_directory, LEVELS_DIRECTORY);
     }
     else if (strncmp(option, "-levels", option_len) == 0)
     {