rnd-20070407-2-src
[rocksndiamonds.git] / src / libgame / misc.c
index 95c5dfd3b2b5ed2464ccbf82e443189aa04d2f09..b93c9bdeea4ee03056530b61aeced0a1c8d0d978 100644 (file)
@@ -607,6 +607,23 @@ boolean strEqualN(char *s1, char *s2, int n)
          strncmp(s1, s2, n) == 0);
 }
 
+boolean strEqualPrefix(char *s, char *prefix)
+{
+  return (s == NULL && prefix == NULL ? TRUE  :
+         s == NULL && prefix != NULL ? FALSE :
+         s != NULL && prefix == NULL ? FALSE :
+         strncmp(s, prefix, strlen(prefix)) == 0);
+}
+
+boolean strEqualSuffix(char *s, char *suffix)
+{
+  return (s == NULL && suffix == NULL ? TRUE  :
+         s == NULL && suffix != NULL ? FALSE :
+         s != NULL && suffix == NULL ? FALSE :
+         strlen(s) < strlen(suffix)  ? FALSE :
+         strncmp(&s[strlen(s) - strlen(suffix)], suffix, strlen(suffix)) == 0);
+}
+
 
 /* ------------------------------------------------------------------------- */
 /* command line option handling functions                                    */
@@ -1853,7 +1870,11 @@ int get_parameter_value(char *value_raw, char *suffix, int type)
              string_has_parameter(value, "melt")       ? FADE_MODE_MELT :
              FADE_MODE_DEFAULT);
   }
+#if 1
+  else if (strEqualPrefix(suffix, ".font"))    /* (may also be ".font_xyz") */
+#else
   else if (strEqualN(suffix, ".font", 5))      /* (may also be ".font_xyz") */
+#endif
   {
     result = gfx.get_font_from_token_function(value);
   }
@@ -1870,35 +1891,6 @@ int get_parameter_value(char *value_raw, char *suffix, int type)
   return result;
 }
 
-int get_token_parameter_value(char *token, char *value_raw)
-{
-  char *suffix;
-
-  if (token == NULL || value_raw == NULL)
-    return ARG_UNDEFINED_VALUE;
-
-  suffix = strrchr(token, '.');
-  if (suffix == NULL)
-    suffix = token;
-
-#if 0
-  if (strncmp(suffix, ".font", 5) == 0)
-  {
-    int i;
-
-    /* !!! OPTIMIZE THIS BY USING HASH !!! */
-    for (i = 0; i < NUM_FONTS; i++)
-      if (strEqual(value_raw, font_info[i].token_name))
-       return i;
-
-    /* if font not found, use reliable default value */
-    return FONT_INITIAL_1;
-  }
-#endif
-
-  return get_parameter_value(value_raw, suffix, TYPE_INTEGER);
-}
-
 struct ScreenModeInfo *get_screen_mode_from_string(char *screen_mode_string)
 {
   static struct ScreenModeInfo screen_mode;
@@ -2322,10 +2314,20 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info,
 
       base_index = i;
 
+#if 0
+      if (IS_PARENT_PROCESS())
+       printf("===> MATCH: '%s', '%s'\n", token, base_prefix);
+#endif
+
       if (start_pos + len_base_prefix == len_token)    /* exact match */
       {
        exact_match = TRUE;
 
+#if 0
+       if (IS_PARENT_PROCESS())
+         printf("===> EXACT MATCH: '%s', '%s'\n", token, base_prefix);
+#endif
+
        add_dynamic_file_list_entry(dynamic_file_list,
                                    num_dynamic_file_list_entries,
                                    extra_file_hash,
@@ -2359,10 +2361,20 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info,
 
        ext1_index = j;
 
+#if 0
+       if (IS_PARENT_PROCESS())
+         printf("===> MATCH: '%s', '%s'\n", token, ext1_suffix);
+#endif
+
        if (start_pos + len_ext1_suffix == len_token)   /* exact match */
        {
          exact_match = TRUE;
 
+#if 0
+       if (IS_PARENT_PROCESS())
+         printf("===> EXACT MATCH: '%s', '%s'\n", token, ext1_suffix);
+#endif
+
          add_dynamic_file_list_entry(dynamic_file_list,
                                      num_dynamic_file_list_entries,
                                      extra_file_hash,
@@ -2401,10 +2413,20 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info,
 
        ext2_index = k;
 
+#if 0
+       if (IS_PARENT_PROCESS())
+         printf("===> MATCH: '%s', '%s'\n", token, ext2_suffix);
+#endif
+
        if (start_pos + len_ext2_suffix == len_token)   /* exact match */
        {
          exact_match = TRUE;
 
+#if 0
+         if (IS_PARENT_PROCESS())
+           printf("===> EXACT MATCH: '%s', '%s'\n", token, ext2_suffix);
+#endif
+
          add_dynamic_file_list_entry(dynamic_file_list,
                                      num_dynamic_file_list_entries,
                                      extra_file_hash,
@@ -2443,10 +2465,20 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info,
 
        ext3_index = l;
 
+#if 0
+       if (IS_PARENT_PROCESS())
+         printf("===> MATCH: '%s', '%s'\n", token, ext3_suffix);
+#endif
+
        if (start_pos + len_ext3_suffix == len_token) /* exact match */
        {
          exact_match = TRUE;
 
+#if 0
+         if (IS_PARENT_PROCESS())
+           printf("===> EXACT MATCH: '%s', '%s'\n", token, ext3_suffix);
+#endif
+
          add_dynamic_file_list_entry(dynamic_file_list,
                                      num_dynamic_file_list_entries,
                                      extra_file_hash,