static sound_file *find_sound_file(const char *name)
{
  int i, len, len2;
  sound_file *sf;

  if ((!name) ||
      (sound_table_size == 0))
    return(NULL);

  len = strlen(name);
  if (len > 6)
    len2 = len - 6; /* the names probably all start with '/' and end with ".snd", so try to find a changing character... */
  else len2 = len / 2;
  i = 0;
  while (i <= sound_table_size4)
    {
      sf = sound_table[i];
      if ((sf) &&
	  (sf->file_name_length == len) &&
	  (name[len2] == sf->file_name[len2]) &&
	  (strcmp(name, sf->file_name) == 0))
	return(check_write_date(name, sf));
      i++;

      sf = sound_table[i];
      if ((sf) &&
	  (sf->file_name_length == len) &&
	  (name[len2] == sf->file_name[len2]) &&
	  (strcmp(name, sf->file_name) == 0))
	return(check_write_date(name, sf));
      i++;

      sf = sound_table[i];
      if ((sf) &&
	  (sf->file_name_length == len) &&
	  (name[len2] == sf->file_name[len2]) &&
	  (strcmp(name, sf->file_name) == 0))
	return(check_write_date(name, sf));
      i++;

      sf = sound_table[i];
      if ((sf) &&
	  (sf->file_name_length == len) &&
	  (name[len2] == sf->file_name[len2]) &&
	  (strcmp(name, sf->file_name) == 0))
	return(check_write_date(name, sf));
      i++;
    }
  for (; i < sound_table_size; i++)
    {
      sf = sound_table[i];
      if ((sf) &&
	  (sf->file_name_length == len) &&
	  (name[len2] == sf->file_name[len2]) &&
	  (strcmp(name, sf->file_name) == 0))
	return(check_write_date(name, sf));
    }
  return(NULL);
}
Example #2
0
static sound_file *find_sound_file(const char *name)
{
  /* assume name != NULL */
  int i, len, len2;
  sound_file **sound_table;
  int sound_table_size, index;
  char c;

  len = strlen(name);
  if (len > 6)
    len2 = len - 6; /* the names probably all start with '/' and end with ".snd", so try to find a changing character... */
  else len2 = len / 2;
  c = name[len2];
  
  index = sound_file_hash_index(name, len);
  sound_table = sound_tables[index];
  sound_table_size = sound_table_sizes[index];

  for (i = 0; i < sound_table_size; i++)  
    {
      sound_file *sf;
      sf = sound_table[i];
      if ((sf) &&
	  (sf->file_name_length == len) &&
	  (c == sf->file_name[len2]) &&
	  (strcmp(name, sf->file_name) == 0))
	return(check_write_date(name, sf));
    }
  return(NULL);
}